123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- #include <stdio.h>
- #include <stdint.h>
- #include <starpu.h>
- #define N 2048
- static void scal_func(void *buffers[], void *cl_arg)
- {
- unsigned i;
- float *factor = cl_arg;
-
- starpu_vector_interface_t *vector = buffers[0];
-
- unsigned n = vector->nx;
-
- float *val = (float *)vector->ptr;
-
- for (i = 0; i < n; i++)
- val[i] *= *factor;
- }
- int main(int argc, char **argv)
- {
-
- float tab[N];
- unsigned i;
- for (i = 0; i < N; i++)
- tab[i] = 1.0f;
- fprintf(stderr, "BEFORE : First element was %f\n", tab[0]);
-
- starpu_init(NULL);
-
- starpu_data_handle tab_handle;
- starpu_vector_data_register(&tab_handle, 0, (uintptr_t)tab, N, sizeof(float));
- float factor = 3.14;
-
- struct starpu_task *task = starpu_task_create();
- task->synchronous = 1;
- starpu_codelet cl = {
- .where = STARPU_CPU,
-
- .cpu_func = scal_func,
- .nbuffers = 1
- };
- task->cl = &cl;
-
- task->buffers[0].handle = tab_handle;
- task->buffers[0].mode = STARPU_RW;
-
- task->cl_arg = &factor;
- task->cl_arg_size = sizeof(float);
-
- starpu_task_submit(task);
-
- starpu_data_unregister(tab_handle);
-
- starpu_shutdown();
- fprintf(stderr, "AFTER First element is %f\n", tab[0]);
- return 0;
- }
|