forkmode.c 598 B

1234567891011121314151617181920212223
  1. void scal_cpu_func(void *buffers[], void *_args)
  2. {
  3. unsigned i;
  4. float *factor = _args;
  5. struct starpu_vector_interface *vector = buffers[0];
  6. unsigned n = STARPU_VECTOR_GET_NX(vector);
  7. float *val = (float *)STARPU_VECTOR_GET_PTR(vector);
  8. #pragma omp parallel for num_threads(starpu_combined_worker_get_size())
  9. for (i = 0; i < n; i++)
  10. val[i] *= *factor;
  11. }
  12. static struct starpu_codelet cl =
  13. {
  14. .modes = { STARPU_RW },
  15. .where = STARPU_CPU,
  16. .type = STARPU_FORKJOIN,
  17. .max_parallelism = INT_MAX,
  18. .cpu_funcs = {scal_cpu_func, NULL},
  19. .nbuffers = 1,
  20. };