view TaskManager/Gpu/GpuThreads.h @ 1876:5e17ab506299 draft

change CPU_TYPE SPE_ANY to IO/0 ( cannot running )
author Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
date Mon, 30 Dec 2013 20:52:21 +0900
parents 289378e5abf8
children f73ca57cdc81
line wrap: on
line source

#ifndef INCLUDED_GPU_THREADS
#define INCLUDED_GPU_THREADS

#include <pthread.h>
#include "Threads.h"
#include "GpuScheduler.h"
#include "Sem.h"

#ifdef __APPLE__
#include <OpenCL/opencl.h>
#else
#include <CL/cl.h>
#endif

class GpuScheduler;

typedef struct gpu_arg {
    int cpuid;
    // should be syncrhonized
    GpuScheduler *scheduler;
    TaskManagerImpl *manager;
    SemPtr wait;
	int useRefDma;
} gpu_thread_arg_t;

class GpuThreads : public Threads {
 public:
    /*
      static GpuThreads* getInstance() {
      static GpuThreads singleton;
      return &singleton;
      }*/
    GpuThreads(int useRefDma);
    ~GpuThreads();
    
    void init();
    static void *gpu_thread_run(void *args);
    virtual int spawn_task(int cpu_num, TaskListPtr p);
    int get_mail(int speid, int count, memaddr *ret);
    int has_mail(int speid, int count, memaddr *ret);
    void send_mail(int speid, int num, memaddr *data);
    void add_output_tasklist(int command, memaddr buff, int alloc_size);
    void set_wait(SemPtr);
    
  private:
    gpu_thread_arg_t *args;
    pthread_t *threads;
    int use_refdma;
};

#endif