view paper/src/context.h @ 3:86340b0bf212

Update
author Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
date Wed, 17 Jan 2018 08:48:10 +0900
parents
children
line wrap: on
line source

/* Context definition */
struct Context {
    enum Code next;
    int codeNum;
    __code (**code) (struct Context*);
    union Data **data;
    void* heapStart;
    void* heap;
    long heapLimit;
    int dataNum;

    // task parameter
    int idgCount; //number of waiting dataGear
    int idg;
    int maxIdg;
    int odg;
    int maxOdg;
    int gpu; // GPU task
    struct Worker* worker;
    struct TaskManager* taskManager;
    struct Context* task;
    struct Element* taskList;
#ifdef USE_CUDAWorker
    int num_exec;
    CUmodule module;
    CUfunction function;
#endif
    /* multi dimension parameter */
    int iterate;
    struct Iterator* iterator;
};

union Data {
    struct Meta {
        enum DataType type;
        long size;
        long len;
        struct Queue* wait; // tasks waiting this dataGear
    } Meta;
    struct Context Context;
    struct Timer {
        union Data* timer;
        enum Code start;
        enum Code end;
        enum Code next;
    } Timer;
    struct TimerImpl {
        double time;
    } TimerImpl;
    ....
}; // union Data end       this is necessary for context generator