Mercurial > hg > Game > Cerium
annotate TaskManager/Gpu/GpuScheduler.h @ 1807:8f7052d19157 draft
minor fix
author | Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 10 Dec 2013 19:14:48 +0900 |
parents | 1febe61a935a |
children | 8039c48763c4 |
rev | line source |
---|---|
1434 | 1 #ifndef INCLUDED_GPU_SCHEDULER |
2 #define INCLUDED_GPU_SCHEDULER | |
3 | |
4 #include "Scheduler.h" | |
1447 | 5 #include "FifoDmaManager.h" |
1480
f2512fb94223
GpuTaskManager no compile error
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
1478
diff
changeset
|
6 #include "GpuThreads.h" |
1506
a7895ab4d0e3
add flip flag and NDRange flag
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
1486
diff
changeset
|
7 #include "HTask.h" |
1561
e8c9a7099bcc
add set NDRange param
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
1555
diff
changeset
|
8 #include "TaskManager.h" |
1434 | 9 |
10 #ifdef __APPLE__ | |
11 #include <OpenCL/opencl.h> | |
12 #else | |
13 #include <CL/cl.h> | |
14 #endif | |
15 | |
1631 | 16 extern TaskObject gpu_task_list[MAX_TASK_OBJECT]; |
17 | |
1434 | 18 class GpuScheduler : public Scheduler { |
1561
e8c9a7099bcc
add set NDRange param
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
1555
diff
changeset
|
19 public: |
1804 | 20 typedef struct gpubuffer { |
21 cl_int allocate_size; | |
22 cl_int size; | |
23 cl_mem *buf; // clCreateBuffer | |
24 cl_event *event; | |
25 } GpuBuffer, *GpuBufferPtr; | |
1471 | 26 GpuScheduler(); |
1506
a7895ab4d0e3
add flip flag and NDRange flag
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
1486
diff
changeset
|
27 virtual ~GpuScheduler(); |
1434 | 28 void init_impl(int useRefDma); |
1480
f2512fb94223
GpuTaskManager no compile error
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
1478
diff
changeset
|
29 void init_gpu(); |
1807 | 30 void wait_for_event(cl_event* event,GpuBufferPtr m, memaddr* reply,TaskListPtr* taskList,int cur); |
1447 | 31 void run(); |
1561
e8c9a7099bcc
add set NDRange param
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
1555
diff
changeset
|
32 |
1447 | 33 void mail_write_from_host(memaddr data) { |
1482 | 34 fifoDmaManager->mail_write_from_host(data); |
1447 | 35 } |
36 | |
37 memaddr mail_read_from_host() { | |
1508 | 38 return fifoDmaManager->mail_read_from_host(); |
1447 | 39 } |
40 | |
41 int has_mail_from_host() { | |
1508 | 42 return fifoDmaManager->has_mail_from_host(); |
1447 | 43 } |
1434 | 44 |
1480
f2512fb94223
GpuTaskManager no compile error
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
1478
diff
changeset
|
45 cl_platform_id platform_id; |
f2512fb94223
GpuTaskManager no compile error
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
1478
diff
changeset
|
46 cl_device_id device_id; |
f2512fb94223
GpuTaskManager no compile error
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
1478
diff
changeset
|
47 cl_uint ret_num_platforms; |
f2512fb94223
GpuTaskManager no compile error
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
1478
diff
changeset
|
48 cl_uint ret_num_devices; |
f2512fb94223
GpuTaskManager no compile error
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
1478
diff
changeset
|
49 cl_context context; |
1549
68200bc3ab6b
change clfinish to wait for event
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
1530
diff
changeset
|
50 cl_command_queue command_queue; |
1480
f2512fb94223
GpuTaskManager no compile error
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
1478
diff
changeset
|
51 cl_int ret; |
1803
fa15a19d27ef
add event flag for GpuScheduler
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
1769
diff
changeset
|
52 memaddr reply[2]; |
fa15a19d27ef
add event flag for GpuScheduler
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
1769
diff
changeset
|
53 cl_kernel kernel[2]; |
fa15a19d27ef
add event flag for GpuScheduler
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
1769
diff
changeset
|
54 cl_event kernel_event[2]; |
1804 | 55 GpuBuffer memin[2]; |
56 GpuBuffer memout[2]; | |
1803
fa15a19d27ef
add event flag for GpuScheduler
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
1769
diff
changeset
|
57 HTask::htask_flag flag; |
1434 | 58 private: |
1447 | 59 FifoDmaManager *fifoDmaManager; |
1769 | 60 int load_kernel(int cmd); |
1807 | 61 cl_mem createBuffer(GpuBuffer m, int i, cl_context context, cl_mem_flags flags, size_t size, cl_int *error); |
62 void initGpuBuffer(GpuBuffer m); | |
63 void destroyGpuBuffer(GpuBuffer m); | |
1434 | 64 }; |
65 | |
1513
18b63e697c61
many_task/quick_sort is changed recursive to loop
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
1508
diff
changeset
|
66 #define GpuSchedRegister(str, filename, functionname) \ |
18b63e697c61
many_task/quick_sort is changed recursive to loop
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
1508
diff
changeset
|
67 gpu_register_task(str, filename, functionname); |
1434 | 68 #endif |
1435
9f6ba00ca15c
add gpu_sched_register
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
1434
diff
changeset
|
69 |
1513
18b63e697c61
many_task/quick_sort is changed recursive to loop
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
1508
diff
changeset
|
70 extern void gpu_register_task(int cmd,const char* filename,const char* functionname); |
1515
b3644b73d2cf
add flip flag test
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
1513
diff
changeset
|
71 |