annotate src/parallel_execution/examples/bitonicSort/bitonicSort.cbc @ 381:b81492c74d2b

Create examples directory
author Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
date Mon, 24 Jul 2017 16:52:09 +0900
parents src/parallel_execution/examples/bitonicSort.cbc@783017f6dfbe
children f1d111e293c4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
371
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 #include <stdio.h>
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 #include <string.h>
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 #include <stdlib.h>
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 #include <unistd.h>
379
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
5 #include <math.h>
371
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
6
381
b81492c74d2b Create examples directory
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 380
diff changeset
7 #include "../../../context.h"
371
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
8
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 int cpu_num = 1;
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 int length = 100;
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 int gpu_num = 0;
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 int CPU_ANY = -1;
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 int CPU_CUDA = -1;
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
14
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 void *start_taskManager(struct Context *context) {
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 goto initDataGears(context, Gearef(context, LoopCounter), Gearef(context, TaskManager));
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 return 0;
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 }
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
19
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 #ifdef USE_CUDAWorker
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 #ifdef USE_CUDA_MAIN_THREAD
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 extern volatile int cuda_initialized;
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 #endif
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 #endif
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
25
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 __code initDataGears(struct LoopCounter* loopCounter, struct TaskManager* taskManager) {
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 // loopCounter->tree = createRedBlackTree(context);
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 loopCounter->i = 0;
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 taskManager->taskManager = (union Data*)createTaskManagerImpl(context, cpu_num, gpu_num, 0);
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 #ifdef USE_CUDAWorker
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 #ifdef USE_CUDA_MAIN_THREAD
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
32 while(! cuda_initialized) {};
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
33 #endif
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
34 #endif
374
fb50cf8aa615 Add Iterator Interface
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 371
diff changeset
35 goto meta(context, C_code1);
371
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 }
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
37
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
38 __code initDataGears_stub(struct Context* context) {
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
39 struct TaskManager* taskManager = Gearef(context, TaskManager);
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
40 taskManager->taskManager = 0;
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
41 #if (! defined(USE_CUDAWorker) || ! defined(USE_CUDA_MAIN_THREAD))
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
42 struct LoopCounter* loopCounter = Gearef(context, LoopCounter);
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
43 goto initDataGears(context, loopCounter, taskManager);
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
44 #else
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
45 cuda_initialized = 0;
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 pthread_t thread;
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 pthread_create(&thread, NULL, (void*)&start_taskManager, context);
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
48 while (taskManager->taskManager == 0);
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
49 TaskManager *t = (TaskManager*)taskManager->taskManager;
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
50 TaskManagerImpl *im = (TaskManagerImpl*)t->taskManager;
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
51 struct Queue *q = (Queue *)im->workers[0];
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
52 createCUDAWorker(context,0,q, im);
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
53 pthread_join(thread,0);
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
54 exit(0);
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
55 #endif
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
56 }
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
57
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
58 __code code1(struct Time* time) {
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
59 printf("cpus:\t\t%d\n", cpu_num);
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
60 printf("gpus:\t\t%d\n", gpu_num);
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
61 printf("length:\t\t%d\n", length);
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
62 /* puts("queue"); */
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
63 /* print_queue(context->data[ActiveQueue]->queue.first); */
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
64 /* puts("tree"); */
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
65 /* print_tree(context->data[Tree]->tree.root); */
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
66 /* puts("result"); */
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
67
374
fb50cf8aa615 Add Iterator Interface
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 371
diff changeset
68 time->time = (union Data*)createTimeImpl(context);
fb50cf8aa615 Add Iterator Interface
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 371
diff changeset
69 time->next = C_createTask1;
fb50cf8aa615 Add Iterator Interface
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 371
diff changeset
70 goto meta(context, time->time->Time.start);
371
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
71 }
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
72
379
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
73 __code createTask1(struct LoopCounter* loopCounter, struct TaskManager* taskManager) {
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
74 int logN = (int)log2((float)length);
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
75 struct Context** tasks = (struct Context**)ALLOC_ARRAY(context, Context, logN*(1+logN)/2 + 2);
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
76 int taskCount = 0;
371
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
77
379
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
78 struct SortArray* outputSortArray = &ALLOCATE_DATA_GEAR(context, SortArray)->SortArray;
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
79 struct SortArray* inputSortArray = outputSortArray;
374
fb50cf8aa615 Add Iterator Interface
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 371
diff changeset
80
379
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
81 // par goto makeArray(outputSortArray, _exit);
371
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
82 struct Context* task = NEW(struct Context);
376
b46f38645587 Run oneDimIterator_test
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 375
diff changeset
83 initContext(task);
379
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
84 task->next = C_makeArray;
371
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
85 task->idgCount = 0;
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
86 task->idg = task->dataNum;
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
87 task->maxIdg = task->idg;
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
88 task->odg = task->maxIdg;
379
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
89 task->data[task->odg] = (union Data*)outputSortArray;
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
90 task->maxOdg = task->odg + 1;
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
91 tasks[taskCount] = task;
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
92
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
93 taskCount++;
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
94 for (int i=2; i <= length; i=2*i) {
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
95 int first = 1;
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
96 for (int j=i>>1; j > 0; j=j>>1) {
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
97 outputSortArray = &ALLOCATE_DATA_GEAR(context, SortArray)->SortArray;
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
98 struct Context* task = NEW(struct Context);
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
99 initContext(task);
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
100 struct Integer* integer1 = &ALLOCATE_DATA_GEAR(context, Integer)->Integer;
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
101 struct Integer* integer2 = &ALLOCATE_DATA_GEAR(context, Integer)->Integer;
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
102 integer1->value = j;
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
103 integer2->value = first;
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
104
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
105 task->next = C_bitonicSwap;
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
106 task->iterator = createOneDimIterator(context, length/2);
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
107 task->idgCount = 1;
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
108 task->idg = task->dataNum;
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
109 task->data[task->idg] = (union Data*)inputSortArray;
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
110 task->data[task->idg+1] = (union Data*)integer1;
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
111 task->data[task->idg+2] = (union Data*)integer2;
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
112 task->maxIdg = task->idg + 3;
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
113 task->odg = task->maxIdg;
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
114 task->data[task->odg] = (union Data*)outputSortArray;
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
115 task->maxOdg = task->odg + 1;
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
116 tasks[taskCount] = task;
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
117 taskCount++;
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
118 first = 0;
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
119 inputSortArray = outputSortArray;
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
120 }
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
121 }
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
122
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
123 // par goto printArray(inputSortArray, __exit)
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
124 task = NEW(struct Context);
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
125 initContext(task);
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
126 task->next = C_printArray;
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
127 task->idgCount = 1;
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
128 task->idg = task->dataNum;
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
129 task->data[task->idg] = (union Data*)inputSortArray;
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
130 task->maxIdg = task->idg + 1;
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
131 task->odg = task->maxIdg;
374
fb50cf8aa615 Add Iterator Interface
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 371
diff changeset
132 task->maxOdg = task->odg;
379
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
133 tasks[taskCount] = task;
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
134
371
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
135 taskManager->contexts = tasks;
379
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
136 // goto code2();
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
137 taskManager->next1 = C_code2;
371
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
138 goto meta(context, taskManager->taskManager->TaskManager.spawnTasks);
379
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
139 //goto meta(context, taskManager->taskManager->TaskManager.shutdown);
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
140 }
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
141
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
142 __code code2(struct LoopCounter* loopCounter, struct TaskManager* taskManager, struct Time* time) {
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
143 sleep(2);
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
144 taskManager->next = C_exit_code;
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
145 goto meta(context, taskManager->taskManager->TaskManager.shutdown);
371
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
146 }
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
147
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
148 void init(int argc, char** argv) {
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
149 for (int i = 1; argv[i]; ++i) {
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
150 if (strcmp(argv[i], "-cpu") == 0)
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
151 cpu_num = (int)atoi(argv[i+1]);
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
152 else if (strcmp(argv[i], "-l") == 0)
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
153 length = (int)atoi(argv[i+1]);
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
154 else if (strcmp(argv[i], "-cuda") == 0) {
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
155 gpu_num = 1;
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
156 CPU_CUDA = 0;
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
157 }
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
158 }
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
159 }
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
160
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
161 int main(int argc, char** argv) {
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
162 init(argc, argv);
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
163 struct Context* main_context = NEW(struct Context);
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
164 initContext(main_context);
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
165 main_context->next = C_initDataGears;
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
166
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
167 goto start_code(main_context);
c3a7a086e82a Add bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
168 }
379
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
169
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
170 __code makeArray(__code next(struct SortArray* output, ...)){
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
171 struct SortArray* output = *O_output;
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
172 if (output->loopCounter == 0){
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
173 output->array = (Integer**)ALLOC_ARRAY(context, Integer, length);
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
174 srand((unsigned) time(NULL));
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
175 }
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
176 if (output->loopCounter == GET_SIZE(output->array)){
380
783017f6dfbe Running bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 379
diff changeset
177 printf("created Array\n");
379
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
178 output->loopCounter = 0;
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
179 goto meta(context, next);
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
180 }
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
181 struct Integer* integer = new Integer();
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
182 integer->value = rand() % 1000;
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
183 output->array[output->loopCounter] = integer;
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
184 printf("%d\n", output->array[output->loopCounter]->value);
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
185 output->loopCounter++;
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
186 *O_output = output;
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
187 goto meta(context, C_makeArray);
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
188 }
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
189
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
190 __code makeArray_stub(struct Context* context) {
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
191 SortArray** O_output = (struct SortArray **)&context->data[context->odg];
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
192 goto makeArray(context,
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
193 context->next,
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
194 O_output);
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
195 }
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
196
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
197 __code printArray(struct SortArray* inputArray, __code next(...)){
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
198 if (inputArray->loopCounter == GET_SIZE(inputArray->array)){
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
199 inputArray->loopCounter = 0;
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
200 goto meta(context, next);
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
201 }
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
202 printf("%d\n", inputArray->array[inputArray->loopCounter]->value);
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
203 inputArray->loopCounter++;
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
204 goto meta(context, C_printArray);
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
205 }
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
206
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
207 __code printArray_stub(struct Context* context) {
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
208 goto printArray(context,
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
209 &context->data[context->idg]->SortArray,
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
210 context->next);
2744cb933ebc Fix compile error for bitonicSort but not work
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 376
diff changeset
211 }