Mercurial > hg > Members > innparusu > Gears
view src/parallel_execution/worker.c @ 119:4df53a60e59a
Add dependency function
author | Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 19 Jul 2016 18:39:22 +0900 |
parents | d05b9937aa95 |
children | bb8be1820302 |
line wrap: on
line source
#include <libkern/OSAtomic.h> #include "context.h" #include "origin_cs.h" __code getQueue(struct Context* context, struct Queue* queue, struct Element* element) { if (queue->first == 0) return; element = queue->first; if (__sync_bool_compare_and_swap(&queue->first, first, first->next)) { queue->count--; goto meta(context, context->next) } else { goto meta(context, GetQueue); } } __code getQueue_stub(struct Context* context) { goto getQueue(context, &context->data[Queue]->queue, &context->data[Element]->element); } __code getQueue2(struct Context* context, struct Element* element, struct Node* node) { context->next = GetQueue; stack_push(context->code_stack, &context->next); context->next = ((struct Task *)(element->data))->code; node->key = ((struct Task *)(element->data))->key; struct Traverse *t = &context->data[Traverse]->traverse; t->next = GetQueue; goto meta(context, Get); } __code getQueue2_stub(struct Context* context) { goto getQueue(context, &context->data[Element]->element, &context->data[Node]->node); } #ifdef USE_CUDA __code twiceGpu(struct Context* context) { cuMemcpyHtoDAsync(context,context,context,context->stream); cuLaunchkanel(); cuMemcpyDtoHAsync(); } #endif