view TaskManager/kernel/ppe/TaskManager.h @ 1602:e33e106ca3e0 draft

change default make parallel from fifo
author Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
date Sat, 06 Apr 2013 17:27:30 +0900
parents 2a8826934b03
children 93569219173e
line wrap: on
line source

#ifndef INCLUDED_TASK_MANAGER
#define INCLUDED_TASK_MANAGER

#include "TaskManagerImpl.h"
#include "MemList.h"
#include "HTask.h"

class Scheduler;
class MemList;

typedef struct nd_range {
    nd_range() {
        dimension = 1;
        gws[0]=1; gws[1]=1; gws[2]=1;
        lws[0]=1; lws[1]=1; lws[2]=1;
    }
    cl_uint dimension;
    size_t gws[3];
    size_t lws[3];
} ND_RANGE_T, *ND_RANGE_T_PTR;

class TaskManager {
public:
    /* constructor */
    TaskManager(int num); // The number of threads
    ~TaskManager();

    /* variables */
    TaskManagerImpl *m_impl;
    void (*tm_end)(TaskManager *manager);

    /* user function */
    HTaskPtr create_task(int cmd);
    HTaskPtr create_task(int cmd, memaddr r, long rs, memaddr w, long ws);
    HTaskPtr create_task_array(int id, int num_task, int num_param, int num_inData, int num_outData);

    void run();
    void *allocate(int size);
    void set_TMend(void (*endf)(TaskManager *manager));
    int get_cpuNum();
    int get_random();
    Scheduler *get_scheduler();
    void set_NDRange(ND_RANGE_T_PTR ndr) ;
    MemList* createMemList(int size, int count);

    void start_profile() { m_impl->start_profile(); }
    void show_profile() { m_impl->show_profile(); }
    void export_task_log() { m_impl->export_task_log(); }

    SchedTask *get_schedTask() {
    return m_impl->schedTaskManager;
    }

    /* functions */
    void init(int spuIdle, int export_task_log, int useRefDma);
    void finish();
    void error(const char* str);
private:
    int machineNum;
}  ;

#endif