Mercurial > hg > Game > Cerium
annotate TaskManager/Cuda/CudaThreads.h @ 1915:effb5653fd5c draft
update cuda, yet running
author | Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 20 Jan 2014 21:59:56 +0900 |
parents | |
children | cd5bbd8ec5d6 |
rev | line source |
---|---|
1915
effb5653fd5c
update cuda, yet running
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
1 #ifndef INCLUDED_CUDA_THREADS |
effb5653fd5c
update cuda, yet running
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
2 #define INCLUDED_CUDA_THREADS |
effb5653fd5c
update cuda, yet running
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
3 |
effb5653fd5c
update cuda, yet running
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
4 #include <pthread.h> |
effb5653fd5c
update cuda, yet running
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
5 #include <cuda.h> |
effb5653fd5c
update cuda, yet running
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
6 #include <cuda_runtime.h> |
effb5653fd5c
update cuda, yet running
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
7 #include "Threads.h" |
effb5653fd5c
update cuda, yet running
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
8 #include "CudaScheduler.h" |
effb5653fd5c
update cuda, yet running
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
9 #include "Sem.h" |
effb5653fd5c
update cuda, yet running
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
10 |
effb5653fd5c
update cuda, yet running
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
11 |
effb5653fd5c
update cuda, yet running
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
12 class CudaScheduler; |
effb5653fd5c
update cuda, yet running
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
13 |
effb5653fd5c
update cuda, yet running
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
14 typedef struct cuda_arg { |
effb5653fd5c
update cuda, yet running
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
15 int cpuid; |
effb5653fd5c
update cuda, yet running
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
16 // should be syncrhonized |
effb5653fd5c
update cuda, yet running
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
17 CudaScheduler *scheduler; |
effb5653fd5c
update cuda, yet running
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
18 TaskManagerImpl *manager; |
effb5653fd5c
update cuda, yet running
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
19 SemPtr wait; |
effb5653fd5c
update cuda, yet running
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
20 int useRefDma; |
effb5653fd5c
update cuda, yet running
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
21 } cuda_thread_arg_t; |
effb5653fd5c
update cuda, yet running
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
22 |
effb5653fd5c
update cuda, yet running
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
23 class CudaThreads : public Threads { |
effb5653fd5c
update cuda, yet running
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
24 |
effb5653fd5c
update cuda, yet running
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
25 public: |
effb5653fd5c
update cuda, yet running
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
26 /* |
effb5653fd5c
update cuda, yet running
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
27 static GpuThreads* getInstance() { |
effb5653fd5c
update cuda, yet running
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
28 static GpuThreads singleton; |
effb5653fd5c
update cuda, yet running
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
29 return &singleton; |
effb5653fd5c
update cuda, yet running
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
30 }*/ |
effb5653fd5c
update cuda, yet running
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
31 CudaThreads(int useRefDma); |
effb5653fd5c
update cuda, yet running
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
32 ~CudaThreads(); |
effb5653fd5c
update cuda, yet running
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
33 |
effb5653fd5c
update cuda, yet running
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
34 void init(); |
effb5653fd5c
update cuda, yet running
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
35 static void *cuda_thread_run(void *args); |
effb5653fd5c
update cuda, yet running
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
36 virtual int spawn_task(int cpu_num, TaskListPtr p); |
effb5653fd5c
update cuda, yet running
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
37 virtual void set_mail_waiter(SemPtr w); |
effb5653fd5c
update cuda, yet running
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
38 |
effb5653fd5c
update cuda, yet running
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
39 int get_mail(int speid, int count, memaddr *ret); |
effb5653fd5c
update cuda, yet running
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
40 int has_mail(int speid, int count, memaddr *ret); |
effb5653fd5c
update cuda, yet running
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
41 void send_mail(int speid, int num, memaddr *data); |
effb5653fd5c
update cuda, yet running
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
42 void add_output_tasklist(int command, memaddr buff, int alloc_size); |
effb5653fd5c
update cuda, yet running
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
43 void set_wait(SemPtr); |
effb5653fd5c
update cuda, yet running
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
44 |
effb5653fd5c
update cuda, yet running
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
45 private: |
effb5653fd5c
update cuda, yet running
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
46 cuda_thread_arg_t *args; |
effb5653fd5c
update cuda, yet running
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
47 pthread_t *threads; |
effb5653fd5c
update cuda, yet running
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
48 int use_refdma; |
effb5653fd5c
update cuda, yet running
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
49 }; |
effb5653fd5c
update cuda, yet running
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
50 |
effb5653fd5c
update cuda, yet running
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
51 #endif |