view src/parallel_execution/worker.c @ 121:bb8be1820302

Rename Code Gears
author Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
date Tue, 26 Jul 2016 13:06:46 +0900
parents 4df53a60e59a
children a086857e1812
line wrap: on
line source

#include <libkern/OSAtomic.h>

#include "context.h"
#include "origin_cs.h"

__code getQueue1(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 getQueue1_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