Mercurial > hg > Members > innparusu > Gears
annotate src/parallel_execution/context.h @ 124:acf0453b1c7a
Fix meta data pointer calculate
author | Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 27 Sep 2016 16:19:31 +0900 |
parents | 4ff6f093b695 |
children | 77e60b6cdace |
rev | line source |
---|---|
86 | 1 /* Context definition for llrb example */ |
2 #include <pthread.h> | |
101 | 3 #ifdef USE_CUDA |
98 | 4 #include <cuda.h> |
101 | 5 #endif |
86 | 6 #include "stack.h" |
7 | |
95
3e28ee215c0e
modify twice, use OSAtomiceCompareAndSwap
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
92
diff
changeset
|
8 #define ALLOCATE_SIZE 20000000 |
101 | 9 #define NEW(type) (type*)(calloc(1, sizeof(type))) |
10 #define NEWN(n, type) (type*)(calloc(n, sizeof(type))) | |
11 | |
12 #define ALLOC_DATA(context, dseg) ({ context->data[dseg] = context->heap; context->heap += sizeof(struct dseg); (struct dseg *)context->data[dseg]; }) | |
13 | |
14 #define ALLOC_DATA_TYPE(context, dseg, type) ({ context->data[dseg] = context->heap; context->heap += sizeof(struct type); (struct type *)context->data[dseg]; }) | |
86 | 15 |
16 enum Code { | |
17 Code1, | |
18 Code2, | |
19 Code3, | |
20 Code4, | |
21 Code5, | |
22 Find, | |
23 Not_find, | |
24 Code6, | |
25 Allocator, | |
90 | 26 PutTree, |
86 | 27 Replace, |
28 Insert, | |
29 Compare, | |
30 RotateL, | |
31 RotateR, | |
32 SetTree, | |
33 InsertCase1, | |
34 InsertCase2, | |
35 InsertCase3, | |
36 InsertCase4, | |
37 InsertCase4_1, | |
38 InsertCase4_2, | |
39 InsertCase5, | |
40 StackClear, | |
41 Get, | |
42 Search, | |
43 Delete, | |
44 Delete1, | |
45 Delete2, | |
46 Delete3, | |
47 Replace_d1, | |
48 Replace_d2, | |
49 FindMax1, | |
50 FindMax2, | |
51 DeleteCase1, | |
52 DeleteCase2, | |
53 DeleteCase3, | |
54 DeleteCase4, | |
55 DeleteCase5, | |
56 DeleteCase6, | |
57 CreateWorker, | |
58 TaskManager, | |
90 | 59 CreateData1, |
60 CreateData2, | |
61 CreateTask1, | |
62 CreateTask2, | |
122
a086857e1812
implement dependency example. do not work
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
117
diff
changeset
|
63 CreateTask3, |
a086857e1812
implement dependency example. do not work
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
117
diff
changeset
|
64 CreateTask4, |
123
4ff6f093b695
Fix segmentation fault
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
122
diff
changeset
|
65 CreateTask5, |
124
acf0453b1c7a
Fix meta data pointer calculate
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
123
diff
changeset
|
66 CreateTask6, |
122
a086857e1812
implement dependency example. do not work
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
117
diff
changeset
|
67 Poll1, |
a086857e1812
implement dependency example. do not work
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
117
diff
changeset
|
68 Poll2, |
90 | 69 PutQueue1, |
70 PutQueue2, | |
71 PutQueue3, | |
72 PutQueue4, | |
122
a086857e1812
implement dependency example. do not work
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
117
diff
changeset
|
73 InitWorker, |
a086857e1812
implement dependency example. do not work
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
117
diff
changeset
|
74 GetQueue1, |
a086857e1812
implement dependency example. do not work
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
117
diff
changeset
|
75 GetInputData1, |
a086857e1812
implement dependency example. do not work
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
117
diff
changeset
|
76 GetInputData2, |
a086857e1812
implement dependency example. do not work
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
117
diff
changeset
|
77 GetOutputData1, |
a086857e1812
implement dependency example. do not work
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
117
diff
changeset
|
78 GetOutputData2, |
a086857e1812
implement dependency example. do not work
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
117
diff
changeset
|
79 WaitFor, |
112 | 80 SpawnTask, |
122
a086857e1812
implement dependency example. do not work
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
117
diff
changeset
|
81 CheckTaskFinish1, |
a086857e1812
implement dependency example. do not work
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
117
diff
changeset
|
82 CheckTaskFinish2, |
92 | 83 Twice, |
122
a086857e1812
implement dependency example. do not work
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
117
diff
changeset
|
84 Add, |
a086857e1812
implement dependency example. do not work
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
117
diff
changeset
|
85 Mult, |
95
3e28ee215c0e
modify twice, use OSAtomiceCompareAndSwap
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
92
diff
changeset
|
86 StartTime, |
3e28ee215c0e
modify twice, use OSAtomiceCompareAndSwap
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
92
diff
changeset
|
87 EndTime, |
86 | 88 Exit, |
89 }; | |
90 | |
91 enum Relational { | |
92 EQ, | |
93 GT, | |
94 LT, | |
95 }; | |
96 | |
97 enum UniqueData { | |
98 Worker, | |
99 Allocate, | |
100 Tree, | |
91 | 101 Traverse, |
86 | 102 Node, |
103 LoopCounter, | |
95
3e28ee215c0e
modify twice, use OSAtomiceCompareAndSwap
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
92
diff
changeset
|
104 Time, |
90 | 105 Element, |
87 | 106 ActiveQueue, |
109
059b26a250cc
Change put_queue process
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
104
diff
changeset
|
107 WaitQueue, |
059b26a250cc
Change put_queue process
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
104
diff
changeset
|
108 Queue, |
86 | 109 }; |
110 | |
111 struct Context { | |
112 enum Code next; | |
113 int codeNum; | |
114 __code (**code) (struct Context*); | |
115 void* heapStart; | |
116 void* heap; | |
117 long heapLimit; | |
118 pthread_t thread; | |
92 | 119 int thread_num; |
86 | 120 stack_ptr code_stack; |
121 stack_ptr node_stack; | |
87 | 122 int dataNum; |
115
135472238fb7
Add meta Data Gear allocate
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
113
diff
changeset
|
123 int metaDataNum; |
86 | 124 union Data **data; |
115
135472238fb7
Add meta Data Gear allocate
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
113
diff
changeset
|
125 union MetaData **mData; |
86 | 126 }; |
127 | |
128 union Data { | |
95
3e28ee215c0e
modify twice, use OSAtomiceCompareAndSwap
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
92
diff
changeset
|
129 struct Time { |
102 | 130 enum Code next; |
95
3e28ee215c0e
modify twice, use OSAtomiceCompareAndSwap
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
92
diff
changeset
|
131 double time; |
3e28ee215c0e
modify twice, use OSAtomiceCompareAndSwap
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
92
diff
changeset
|
132 } time; |
86 | 133 struct LoopCounter { |
134 int i; | |
135 } loopCounter; | |
136 struct Worker { | |
137 int num; | |
138 struct Context* contexts; | |
139 } worker; | |
101 | 140 #ifdef USE_CUDA |
98 | 141 struct CudaTask { |
142 CUdevice device; | |
143 CUcontext cuCtx; | |
144 CUfunction code; | |
145 CUdeviceptr* deviceptr; | |
146 CUstream stream; | |
147 } cudatask; | |
101 | 148 #endif |
90 | 149 struct Task { |
150 enum Code code; | |
117
c9ab10847fc3
Define dependency Task create function
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
116
diff
changeset
|
151 int iKeys[2]; |
122
a086857e1812
implement dependency example. do not work
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
117
diff
changeset
|
152 int oKeys[1]; |
117
c9ab10847fc3
Define dependency Task create function
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
116
diff
changeset
|
153 int idsCount; |
122
a086857e1812
implement dependency example. do not work
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
117
diff
changeset
|
154 union Data* iargs[2]; |
a086857e1812
implement dependency example. do not work
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
117
diff
changeset
|
155 union Data* oargs[1]; |
90 | 156 } task; |
157 struct Queue { | |
158 struct Element* first; | |
159 struct Element* last; | |
160 int count; | |
161 } queue; | |
162 struct Element { | |
113
d05b9937aa95
Change element data from Task to Data
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
112
diff
changeset
|
163 union Data* data; |
90 | 164 struct Element* next; |
165 } element; | |
86 | 166 struct Array { |
90 | 167 int index; |
95
3e28ee215c0e
modify twice, use OSAtomiceCompareAndSwap
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
92
diff
changeset
|
168 int prefix; |
86 | 169 int* array; |
170 } array; | |
171 struct Tree { | |
172 struct Node* root; | |
91 | 173 } tree; |
174 struct Traverse { | |
103 | 175 enum Code next; |
86 | 176 struct Node* current; |
177 int result; | |
91 | 178 } traverse; |
86 | 179 struct Node { |
180 // need to tree | |
181 enum Code next; | |
182 int key; // comparable data segment | |
90 | 183 union Data* value; |
86 | 184 struct Node* left; |
185 struct Node* right; | |
186 // need to balancing | |
187 enum Color { | |
188 Red, | |
189 Black, | |
190 } color; | |
191 } node; | |
192 struct Allocate { | |
193 enum Code next; | |
194 long size; | |
195 } allocate; | |
115
135472238fb7
Add meta Data Gear allocate
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
113
diff
changeset
|
196 struct Integer { |
135472238fb7
Add meta Data Gear allocate
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
113
diff
changeset
|
197 int value; |
135472238fb7
Add meta Data Gear allocate
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
113
diff
changeset
|
198 int mDataOffset; |
135472238fb7
Add meta Data Gear allocate
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
113
diff
changeset
|
199 } integer; |
86 | 200 }; |
113
d05b9937aa95
Change element data from Task to Data
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
112
diff
changeset
|
201 |
d05b9937aa95
Change element data from Task to Data
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
112
diff
changeset
|
202 union MetaData { |
d05b9937aa95
Change element data from Task to Data
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
112
diff
changeset
|
203 struct Queue waitMeTasks; |
d05b9937aa95
Change element data from Task to Data
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
112
diff
changeset
|
204 }; |
d05b9937aa95
Change element data from Task to Data
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
112
diff
changeset
|
205 |