1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- /* StarPU --- Runtime system for heterogeneous multicore architectures.
- *
- * Copyright (C) 2010-2013 Centre National de la Recherche Scientifique
- * Copyright (C) 2010-2013 Université de Bordeaux 1
- *
- * StarPU is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation; either version 2.1 of the License, or (at
- * your option) any later version.
- *
- * StarPU is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- *
- * See the GNU Lesser General Public License in COPYING.LGPL for more details.
- */
- //! [To be included]
- #define NX 1024
- struct point array_of_structs[NX];
- starpu_data_handle_t handle;
- /*
- * The conversion of a piece of data is itself a task, though it is created,
- * submitted and destroyed by StarPU internals and not by the user. Therefore,
- * we have to define two codelets.
- * Note that for now the conversion from the CPU format to the GPU format has to
- * be executed on the GPU, and the conversion from the GPU to the CPU has to be
- * executed on the CPU.
- */
- #ifdef STARPU_USE_OPENCL
- void cpu_to_opencl_opencl_func(void *buffers[], void *args);
- struct starpu_codelet cpu_to_opencl_cl = {
- .where = STARPU_OPENCL,
- .opencl_funcs = { cpu_to_opencl_opencl_func, NULL },
- .nbuffers = 1,
- .modes = { STARPU_RW }
- };
- void opencl_to_cpu_func(void *buffers[], void *args);
- struct starpu_codelet opencl_to_cpu_cl = {
- .where = STARPU_CPU,
- .cpu_funcs = { opencl_to_cpu_func, NULL },
- .cpu_funcs_name = { "opencl_to_cpu_func", NULL },
- .nbuffers = 1,
- .modes = { STARPU_RW }
- };
- #endif
- struct starpu_multiformat_data_interface_ops format_ops = {
- #ifdef STARPU_USE_OPENCL
- .opencl_elemsize = 2 * sizeof(float),
- .cpu_to_opencl_cl = &cpu_to_opencl_cl,
- .opencl_to_cpu_cl = &opencl_to_cpu_cl,
- #endif
- .cpu_elemsize = 2 * sizeof(float),
- ...
- };
- starpu_multiformat_data_register(handle, 0, &array_of_structs, NX, &format_ops);
- //! [To be included]
|