|
@@ -16,13 +16,16 @@
|
|
|
|
|
|
#include <starpu.h>
|
|
|
|
|
|
-void func_cpu(void *descr[], __attribute__ ((unused)) void *_args)
|
|
|
+void func_cpu(void *descr[], void *_args)
|
|
|
{
|
|
|
int *x0 = (int *)STARPU_VARIABLE_GET_PTR(descr[0]);
|
|
|
- int *x1 = (int *)STARPU_VARIABLE_GET_PTR(descr[1]);
|
|
|
+ float *x1 = (int *)STARPU_VARIABLE_GET_PTR(descr[1]);
|
|
|
+ int ifactor;
|
|
|
+ float ffactor;
|
|
|
|
|
|
- *x0 = *x0 * 10;
|
|
|
- *x1 = *x1 * 10;
|
|
|
+ starpu_unpack_cl_args(_args, &ifactor, &ffactor);
|
|
|
+ *x0 = *x0 * ifactor;
|
|
|
+ *x1 = *x1 * ffactor;
|
|
|
}
|
|
|
|
|
|
starpu_codelet mycodelet = {
|
|
@@ -33,18 +36,24 @@ starpu_codelet mycodelet = {
|
|
|
|
|
|
int main(int argc, char **argv)
|
|
|
{
|
|
|
- int x[2];
|
|
|
+ int x; float f;
|
|
|
int i;
|
|
|
+ int ifactor=15;
|
|
|
+ float ffactor=25.0;
|
|
|
starpu_data_handle data_handles[2];
|
|
|
|
|
|
starpu_init(NULL);
|
|
|
|
|
|
- for(i=0 ; i<2 ; i++) {
|
|
|
- x[i] = 10*(i+1);
|
|
|
- starpu_variable_data_register(&data_handles[i], 0, (uintptr_t)&x[i], sizeof(x[i]));
|
|
|
- }
|
|
|
+ x = 10;
|
|
|
+ starpu_variable_data_register(&data_handles[0], 0, (uintptr_t)&x, sizeof(x));
|
|
|
+ f = 20.0;
|
|
|
+ starpu_variable_data_register(&data_handles[1], 0, (uintptr_t)&f, sizeof(f));
|
|
|
+
|
|
|
+ fprintf(stderr, "VALUES: %d %f\n", x, f);
|
|
|
|
|
|
starpu_insert_task(&mycodelet,
|
|
|
+ STARPU_VALUE, &ifactor, sizeof(ifactor),
|
|
|
+ STARPU_VALUE, &ffactor, sizeof(ffactor),
|
|
|
STARPU_RW, data_handles[0], STARPU_RW, data_handles[1],
|
|
|
0);
|
|
|
starpu_task_wait_for_all();
|
|
@@ -52,7 +61,7 @@ int main(int argc, char **argv)
|
|
|
for(i=0 ; i<2 ; i++) {
|
|
|
starpu_data_acquire(data_handles[i], STARPU_R);
|
|
|
}
|
|
|
- fprintf(stderr, "VALUES: %d %d\n", x[0], x[1]);
|
|
|
+ fprintf(stderr, "VALUES: %d %f\n", x, f);
|
|
|
|
|
|
starpu_shutdown();
|
|
|
|