# HG changeset patch # User one # Date 1484122793 -32400 # Node ID 8d2519c3a36ebe1c4f3ae29aca31a10f5dc00cd2 # Parent 77faa28128b4a909a5e378592937ad6d2eb72eef Add input data gear example diff -r 77faa28128b4 -r 8d2519c3a36e src/parallel_execution/Todo --- a/src/parallel_execution/Todo Wed Jan 11 16:52:27 2017 +0900 +++ b/src/parallel_execution/Todo Wed Jan 11 17:19:53 2017 +0900 @@ -5,10 +5,12 @@ Task CodeGen - DataSeg - DataSeg - DataSeg + IDataSeg + IDataSeg + ... idsCount + nextTask(can be C_exit) + ODataSeg? TaskManager createWorker diff -r 77faa28128b4 -r 8d2519c3a36e src/parallel_execution/taskManager.c --- a/src/parallel_execution/taskManager.c Wed Jan 11 16:52:27 2017 +0900 +++ b/src/parallel_execution/taskManager.c Wed Jan 11 17:19:53 2017 +0900 @@ -47,23 +47,20 @@ goto meta(context, TaskManager->next); } -__code shutdownTaskManager(struct Context* context, struct LoopCounter* loopCounter, struct Worker* worker) { +__code shutdownTaskManager(struct Context* context, struct LoopCounter* loopCounter, struct Worker* worker, struct TaskManager* taskManager) { int i = loopCounter->i; if (i < worker->id) { pthread_join(worker->contexts[i].thread, NULL); loopCounter->i++; - goto meta(context, C_taskManager); + goto meta(context, C_shutDownTaskManager); } loopCounter->i = 0; - - Time *t = &context->data[D_Time]->Time; - t->next = C_code2; - goto meta(context, C_end_time); + goto meta(context, taskManager->next); } __code shutdownTaskManager_stub(struct Context* context) { - goto shutdownTaskManager(context, &context->data[D_LoopCounter]->LoopCounter, &context->data[D_Worker]->Worker); + goto shutdownTaskManager(context, &context->data[D_LoopCounter]->LoopCounter, &context->data[D_Worker]->Worker, Gearef(context, TaskManager)); } diff -r 77faa28128b4 -r 8d2519c3a36e src/parallel_execution/twice.c --- a/src/parallel_execution/twice.c Wed Jan 11 16:52:27 2017 +0900 +++ b/src/parallel_execution/twice.c Wed Jan 11 17:19:53 2017 +0900 @@ -3,7 +3,7 @@ #include "context.h" #include "origin_cs.h" -__code twice(struct Context* context, struct LoopCounter* loopCounter, int index, int prefix, int* array) { +__code twice(struct Context* context, struct LoopCounter* loopCounter, int index, int prefix, int* array, enum Code next) { int i = loopCounter->i; if (i < prefix) { @@ -16,13 +16,14 @@ loopCounter->i = 0; //stack_pop(context->code_stack, &context->next); - goto meta(context, context->next); + goto meta(context, next); } __code twice_stub(struct Context* context) { goto twice(context, - &context->data[D_LoopCounter]->LoopCounter, - context->data[D_Node]->Node.value->Array.index, - context->data[D_Node]->Node.value->Array.prefix, - context->data[D_Node]->Node.value->Array.array); + &context->data[task->data[0]]->LoopCounter, + context->data[task->data[1]]->Node.value->Array.index, + context->data[task->data[2]]->Node.value->Array.prefix, + context->data[task->data[3]]->Node.value->Array.array + task->next); }