Mercurial > hg > Papers > 2021 > anatofuz-master
diff paper/src/twiceMeta.c @ 99:7b4d7d2446e6
update
author | anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Sat, 06 Feb 2021 07:11:56 +0900 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/src/twiceMeta.c Sat Feb 06 07:11:56 2021 +0900 @@ -0,0 +1,60 @@ +__code createTask1(struct Context *context,struct LoopCounter* loopCounter, struct TaskManager* taskManager) { + Array* array1 = &ALLOCATE(context, Array)->Array; + Array* array2 = &ALLOCATE(context, Array)->Array; + Timer* timer = createTimerImpl(context); + + struct Element* element; + context->task = NEW(struct Context); + initContext(context->task); + context->task->next = C_createArray; + context->task->idgCount = 0; + context->task->idg = context->task->dataNum; + context->task->maxIdg = context->task->idg + 0; + context->task->odg = context->task->maxIdg; + context->task->maxOdg = context->task->odg + 2; + GET_META(array1)->wait = createSynchronizedQueue(context); + GET_META(timer)->wait = createSynchronizedQueue(context); + context->task->data[context->task->odg+0] = (union Data*)array1; + context->task->data[context->task->odg+1] = (union Data*)timer; + element = &ALLOCATE(context, Element)->Element; + element->data = (union Data*)context->task; + element->next = context->taskList; + context->taskList = element; + context->task = NEW(struct Context); + initContext(context->task); + context->task->next = C_twice; + context->task->idgCount = 1; + context->task->idg = context->task->dataNum; + context->task->maxIdg = context->task->idg + 1; + context->task->odg = context->task->maxIdg; + context->task->maxOdg = context->task->odg + 1; + context->task->iterate = 0; + context->task->iterator = createMultiDimIterator(context, split, 1, 1); + GET_META(array1)->wait = createSynchronizedQueue(context); + GET_META(array2)->wait = createSynchronizedQueue(context); + context->task->data[context->task->idg+0] = (union Data*)array1; + context->task->data[context->task->odg+0] = (union Data*)array2; + element = &ALLOCATE(context, Element)->Element; + element->data = (union Data*)context->task; + element->next = context->taskList; + context->taskList = element; + context->task = NEW(struct Context); + initContext(context->task); + context->task->next = C_printArray; + context->task->idgCount = 2; + context->task->idg = context->task->dataNum; + context->task->maxIdg = context->task->idg + 2; + context->task->odg = context->task->maxIdg; + context->task->maxOdg = context->task->odg + 0; + GET_META(array2)->wait = createSynchronizedQueue(context); + GET_META(timer)->wait = createSynchronizedQueue(context); + context->task->data[context->task->idg+0] = (union Data*)array2; + context->task->data[context->task->idg+1] = (union Data*)timer; + element = &ALLOCATE(context, Element)->Element; + element->data = (union Data*)context->task; + element->next = context->taskList; + context->taskList = element; + Gearef(context, TaskManager)->taskList = context->taskList; + Gearef(context, TaskManager)->next1 = C_code2; + goto parGotoMeta(context, C_code2); +}