StarPU Handbook
starpu_data_interfaces.h
Go to the documentation of this file.
1 /* StarPU --- Runtime system for heterogeneous multicore architectures.
2  *
3  * Copyright (C) 2009-2020 Université de Bordeaux, CNRS (LaBRI UMR 5800), Inria
4  *
5  * StarPU is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU Lesser General Public License as published by
7  * the Free Software Foundation; either version 2.1 of the License, or (at
8  * your option) any later version.
9  *
10  * StarPU is distributed in the hope that it will be useful, but
11  * WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13  *
14  * See the GNU Lesser General Public License in COPYING.LGPL for more details.
15  */
16 
17 #ifndef __STARPU_DATA_INTERFACES_H__
18 #define __STARPU_DATA_INTERFACES_H__
19 
20 #include <starpu.h>
21 
22 #ifdef STARPU_USE_CUDA
23 /* to use CUDA streams */
24 # ifdef STARPU_DONT_INCLUDE_CUDA_HEADERS
25 typedef void *starpu_cudaStream_t;
26 # else
27 # include <cuda_runtime.h>
28 typedef cudaStream_t starpu_cudaStream_t;
29 # endif
30 #endif
31 
32 #ifdef __cplusplus
33 extern "C"
34 {
35 #endif
36 
93 {
101  int (*can_copy)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node, unsigned handling_node);
102 
108  int (*ram_to_ram)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node);
109 
115  int (*ram_to_cuda)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node);
116 
122  int (*ram_to_opencl)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node);
123 
129  int (*ram_to_mic)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node);
130 
136  int (*cuda_to_ram)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node);
137 
143  int (*cuda_to_cuda)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node);
144 
150  int (*cuda_to_opencl)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node);
151 
157  int (*opencl_to_ram)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node);
158 
164  int (*opencl_to_cuda)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node);
165 
171  int (*opencl_to_opencl)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node);
172 
178  int (*mic_to_ram)(void *src_interface, unsigned srd_node, void *dst_interface, unsigned dst_node);
179 
185  int (*ram_to_mpi_ms)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node);
186 
192  int (*mpi_ms_to_ram)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node);
193 
199  int (*mpi_ms_to_mpi_ms)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node);
200 
201 #ifdef STARPU_USE_CUDA
202 
210  int (*ram_to_cuda_async)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node, starpu_cudaStream_t stream);
211 
220  int (*cuda_to_ram_async)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node, starpu_cudaStream_t stream);
221 
230  int (*cuda_to_cuda_async)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node, starpu_cudaStream_t stream);
231 #else
232  int (*ram_to_cuda_async)();
233  int (*cuda_to_ram_async)();
234  int (*cuda_to_cuda_async)();
235 #endif
236 
237 #if defined(STARPU_USE_OPENCL) && !defined(__CUDACC__)
238 
247  int (*ram_to_opencl_async)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node, cl_event *event);
257  int (*opencl_to_ram_async)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node, cl_event *event);
267  int (*opencl_to_opencl_async)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node, cl_event *event);
268 #else
269  int (*ram_to_opencl_async)();
270  int (*opencl_to_ram_async)();
271  int (*opencl_to_opencl_async)();
272 #endif
273 
282  int (*ram_to_mpi_ms_async)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node, void * event);
283 
292  int (*mpi_ms_to_ram_async)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node, void * event);
293 
302  int (*mpi_ms_to_mpi_ms_async)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node, void * event);
303 
312  int (*ram_to_mic_async)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node);
313 
322  int (*mic_to_ram_async)(void *src_interface, unsigned srd_node, void *dst_interface, unsigned dst_node);
323 
341  int (*any_to_any)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node, void *async_data);
342 };
343 
348 {
360 };
361 
366 {
378  void (*register_data_handle) (starpu_data_handle_t handle, unsigned home_node, void *data_interface);
379 
393  starpu_ssize_t (*allocate_data_on_node) (void *data_interface, unsigned node);
394 
400  void (*free_data_on_node) (void *data_interface, unsigned node);
401 
407  void (*init) (void *data_interface);
408 
418 
427  void * (*handle_to_pointer) (starpu_data_handle_t handle, unsigned node);
428 
435  void * (*to_pointer) (void *data_interface, unsigned node);
436 
441  int (*pointer_is_inside) (void *data_interface, unsigned node, void *ptr);
442 
446  size_t (*get_size) (starpu_data_handle_t handle);
447 
454  size_t (*get_alloc_size) (starpu_data_handle_t handle);
455 
461  uint32_t (*footprint) (starpu_data_handle_t handle);
462 
469  uint32_t (*alloc_footprint) (starpu_data_handle_t handle);
470 
476  int (*compare) (void *data_interface_a, void *data_interface_b);
477 
485  int (*alloc_compare) (void *data_interface_a, void *data_interface_b);
486 
491  void (*display) (starpu_data_handle_t handle, FILE *f);
492 
499  starpu_ssize_t (*describe) (void *data_interface, char *buf, size_t size);
500 
504  enum starpu_data_interface_id interfaceid;
505 
510 
513  char is_multiformat;
514 
522  char dontcache;
523 
526  struct starpu_multiformat_data_interface_ops* (*get_mf_ops)(void *data_interface);
527 
544  int (*pack_data) (starpu_data_handle_t handle, unsigned node, void **ptr, starpu_ssize_t *count);
545 
551  int (*unpack_data) (starpu_data_handle_t handle, unsigned node, void *ptr, size_t count);
552 
556  char *name;
557 };
558 
580 void starpu_data_register(starpu_data_handle_t *handleptr, int home_node, void *data_interface, struct starpu_data_interface_ops *ops);
581 
587 void starpu_data_ptr_register(starpu_data_handle_t handle, unsigned node);
588 
594 
600 void *starpu_data_handle_to_pointer(starpu_data_handle_t handle, unsigned node);
601 
607 int starpu_data_pointer_is_inside(starpu_data_handle_t handle, unsigned node, void *ptr);
608 
614 
618 void *starpu_data_get_interface_on_node(starpu_data_handle_t handle, unsigned memory_node);
619 
625 
636 int starpu_data_pack(starpu_data_handle_t handle, void **ptr, starpu_ssize_t *count);
637 
644 int starpu_data_unpack(starpu_data_handle_t handle, void *ptr, size_t count);
645 
650 
655 
660 
661 int starpu_data_get_home_node(starpu_data_handle_t handle);
662 
668 
676 int starpu_interface_copy(uintptr_t src, size_t src_offset, unsigned src_node,
677  uintptr_t dst, size_t dst_offset, unsigned dst_node,
678  size_t size, void *async_data);
679 
696 int starpu_interface_copy2d(uintptr_t src, size_t src_offset, unsigned src_node,
697  uintptr_t dst, size_t dst_offset, unsigned dst_node,
698  size_t blocksize,
699  size_t numblocks, size_t ld_src, size_t ld_dst,
700  void *async_data);
701 
722 int starpu_interface_copy3d(uintptr_t src, size_t src_offset, unsigned src_node,
723  uintptr_t dst, size_t dst_offset, unsigned dst_node,
724  size_t blocksize,
725  size_t numblocks1, size_t ld1_src, size_t ld1_dst,
726  size_t numblocks2, size_t ld2_src, size_t ld2_dst,
727  void *async_data);
728 
753 int starpu_interface_copy4d(uintptr_t src, size_t src_offset, unsigned src_node,
754  uintptr_t dst, size_t dst_offset, unsigned dst_node,
755  size_t blocksize,
756  size_t numblocks1, size_t ld1_src, size_t ld1_dst,
757  size_t numblocks2, size_t ld2_src, size_t ld2_dst,
758  size_t numblocks3, size_t ld3_src, size_t ld3_dst,
759  void *async_data);
760 
770 void starpu_interface_start_driver_copy_async(unsigned src_node, unsigned dst_node, double *start);
771 
775 void starpu_interface_end_driver_copy_async(unsigned src_node, unsigned dst_node, double start);
776 
781 void starpu_interface_data_copy(unsigned src_node, unsigned dst_node, size_t size);
782 
788 uintptr_t starpu_malloc_on_node_flags(unsigned dst_node, size_t size, int flags);
789 
795 uintptr_t starpu_malloc_on_node(unsigned dst_node, size_t size);
796 
801 void starpu_free_on_node_flags(unsigned dst_node, uintptr_t addr, size_t size, int flags);
802 
807 void starpu_free_on_node(unsigned dst_node, uintptr_t addr, size_t size);
808 
813 void starpu_malloc_on_node_set_default_flags(unsigned node, int flags);
814 
822 extern struct starpu_data_interface_ops starpu_interface_matrix_ops;
823 
828 {
830  uintptr_t ptr;
831  uintptr_t dev_handle;
832  size_t offset;
833  uint32_t nx;
834  uint32_t ny;
835  uint32_t ld;
839  size_t elemsize;
840  size_t allocsize;
841 };
842 
857 void starpu_matrix_data_register(starpu_data_handle_t *handle, int home_node, uintptr_t ptr, uint32_t ld, uint32_t nx, uint32_t ny, size_t elemsize);
858 
863 void starpu_matrix_data_register_allocsize(starpu_data_handle_t *handle, int home_node, uintptr_t ptr, uint32_t ld, uint32_t nx, uint32_t ny, size_t elemsize, size_t allocsize);
864 
870 void starpu_matrix_ptr_register(starpu_data_handle_t handle, unsigned node, uintptr_t ptr, uintptr_t dev_handle, size_t offset, uint32_t ld);
871 
877 
883 
889 
894 
900 
905 
906 #if defined(STARPU_HAVE_STATEMENT_EXPRESSIONS) && defined(STARPU_DEBUG)
907 #define STARPU_MATRIX_CHECK(interface) STARPU_ASSERT_MSG((((struct starpu_matrix_interface *)(interface))->id) == STARPU_MATRIX_INTERFACE_ID, "Error. The given data is not a matrix.")
908 #define STARPU_MATRIX_GET_PTR(interface) ({ STARPU_MATRIX_CHECK(interface); (((struct starpu_matrix_interface *)(interface))->ptr) ; })
909 #define STARPU_MATRIX_GET_DEV_HANDLE(interface) ({ STARPU_MATRIX_CHECK(interface); (((struct starpu_matrix_interface *)(interface))->dev_handle) ; })
910 #define STARPU_MATRIX_GET_OFFSET(interface) ({ STARPU_MATRIX_CHECK(interface); (((struct starpu_matrix_interface *)(interface))->offset) ; })
911 #define STARPU_MATRIX_GET_NX(interface) ({ STARPU_MATRIX_CHECK(interface); (((struct starpu_matrix_interface *)(interface))->nx) ; })
912 #define STARPU_MATRIX_GET_NY(interface) ({ STARPU_MATRIX_CHECK(interface); (((struct starpu_matrix_interface *)(interface))->ny) ; })
913 #define STARPU_MATRIX_GET_LD(interface) ({ STARPU_MATRIX_CHECK(interface); (((struct starpu_matrix_interface *)(interface))->ld) ; })
914 #define STARPU_MATRIX_GET_ELEMSIZE(interface) ({ STARPU_MATRIX_CHECK(interface); (((struct starpu_matrix_interface *)(interface))->elemsize) ; })
915 #define STARPU_MATRIX_GET_ALLOCSIZE(interface) ({ STARPU_MATRIX_CHECK(interface); (((struct starpu_matrix_interface *)(interface))->allocsize) ; })
916 #else
917 
922 #define STARPU_MATRIX_GET_PTR(interface) (((struct starpu_matrix_interface *)(interface))->ptr)
923 
929 #define STARPU_MATRIX_GET_DEV_HANDLE(interface) (((struct starpu_matrix_interface *)(interface))->dev_handle)
930 
934 #define STARPU_MATRIX_GET_OFFSET(interface) (((struct starpu_matrix_interface *)(interface))->offset)
935 
939 #define STARPU_MATRIX_GET_NX(interface) (((struct starpu_matrix_interface *)(interface))->nx)
940 
944 #define STARPU_MATRIX_GET_NY(interface) (((struct starpu_matrix_interface *)(interface))->ny)
945 
949 #define STARPU_MATRIX_GET_LD(interface) (((struct starpu_matrix_interface *)(interface))->ld)
950 
954 #define STARPU_MATRIX_GET_ELEMSIZE(interface) (((struct starpu_matrix_interface *)(interface))->elemsize)
955 
958 #define STARPU_MATRIX_GET_ALLOCSIZE(interface) (((struct starpu_matrix_interface *)(interface))->allocsize)
959 #endif
960 
965 #define STARPU_MATRIX_SET_NX(interface, newnx) do { \
966  STARPU_MATRIX_CHECK(interface); \
967  (((struct starpu_matrix_interface *)(interface))->nx) = (newnx); \
968 } while (0)
969 
973 #define STARPU_MATRIX_SET_NY(interface, newny) do { \
974  STARPU_MATRIX_CHECK(interface); \
975  (((struct starpu_matrix_interface *)(interface))->ny) = (newny); \
976 } while(0)
977 
982 #define STARPU_MATRIX_SET_LD(interface, newld) do { \
983  STARPU_MATRIX_CHECK(interface); \
984  (((struct starpu_matrix_interface *)(interface))->ld) = (newld); \
985 } while(0)
986 
994 extern struct starpu_data_interface_ops starpu_interface_coo_ops;
995 
1000 {
1003  uint32_t *columns;
1004  uint32_t *rows;
1005  uintptr_t values;
1006  uint32_t nx;
1007  uint32_t ny;
1008  uint32_t n_values;
1009  size_t elemsize;
1010 };
1011 
1017 void starpu_coo_data_register(starpu_data_handle_t *handleptr, int home_node, uint32_t nx, uint32_t ny, uint32_t n_values, uint32_t *columns, uint32_t *rows, uintptr_t values, size_t elemsize);
1018 
1023 #define STARPU_COO_GET_COLUMNS(interface) (((struct starpu_coo_interface *)(interface))->columns)
1024 
1030 #define STARPU_COO_GET_COLUMNS_DEV_HANDLE(interface) (((struct starpu_coo_interface *)(interface))->columns)
1031 
1035 #define STARPU_COO_GET_ROWS(interface) (((struct starpu_coo_interface *)(interface))->rows)
1036 
1041 #define STARPU_COO_GET_ROWS_DEV_HANDLE(interface) (((struct starpu_coo_interface *)(interface))->rows)
1042 
1046 #define STARPU_COO_GET_VALUES(interface) (((struct starpu_coo_interface *)(interface))->values)
1047 
1052 #define STARPU_COO_GET_VALUES_DEV_HANDLE(interface) (((struct starpu_coo_interface *)(interface))->values)
1053 
1057 #define STARPU_COO_GET_OFFSET 0
1058 
1062 #define STARPU_COO_GET_NX(interface) (((struct starpu_coo_interface *)(interface))->nx)
1063 
1067 #define STARPU_COO_GET_NY(interface) (((struct starpu_coo_interface *)(interface))->ny)
1068 
1072 #define STARPU_COO_GET_NVALUES(interface) (((struct starpu_coo_interface *)(interface))->n_values)
1073 
1077 #define STARPU_COO_GET_ELEMSIZE(interface) (((struct starpu_coo_interface *)(interface))->elemsize)
1078 
1086 extern struct starpu_data_interface_ops starpu_interface_block_ops;
1087 
1088 /* TODO: rename to 3dmatrix? */
1089 /* TODO: add allocsize support */
1094 {
1097  uintptr_t ptr;
1098  uintptr_t dev_handle;
1099  size_t offset;
1100  uint32_t nx;
1101  uint32_t ny;
1102  uint32_t nz;
1103  uint32_t ldy;
1104  uint32_t ldz;
1105  size_t elemsize;
1106 };
1107 
1121 void starpu_block_data_register(starpu_data_handle_t *handle, int home_node, uintptr_t ptr, uint32_t ldy, uint32_t ldz, uint32_t nx, uint32_t ny, uint32_t nz, size_t elemsize);
1122 
1129 void starpu_block_ptr_register(starpu_data_handle_t handle, unsigned node, uintptr_t ptr, uintptr_t dev_handle, size_t offset, uint32_t ldy, uint32_t ldz);
1130 
1135 uint32_t starpu_block_get_nx(starpu_data_handle_t handle);
1136 
1141 uint32_t starpu_block_get_ny(starpu_data_handle_t handle);
1142 
1147 uint32_t starpu_block_get_nz(starpu_data_handle_t handle);
1148 
1154 
1160 
1165 
1171 
1172 #if defined(STARPU_HAVE_STATEMENT_EXPRESSIONS) && defined(STARPU_DEBUG)
1173 #define STARPU_BLOCK_CHECK(interface) STARPU_ASSERT_MSG((((struct starpu_block_interface *)(interface))->id) == STARPU_BLOCK_INTERFACE_ID, "Error. The given data is not a block.")
1174 #define STARPU_BLOCK_GET_PTR(interface) ({ STARPU_BLOCK_CHECK(interface); (((struct starpu_block_interface *)(interface))->ptr) ; })
1175 #define STARPU_BLOCK_GET_DEV_HANDLE(interface) ({ STARPU_BLOCK_CHECK(interface); (((struct starpu_block_interface *)(interface))->dev_handle) ; })
1176 #define STARPU_BLOCK_GET_OFFSET(interface) ({ STARPU_BLOCK_CHECK(interface); (((struct starpu_block_interface *)(interface))->offset) ; })
1177 #define STARPU_BLOCK_GET_NX(interface) ({ STARPU_BLOCK_CHECK(interface); (((struct starpu_block_interface *)(interface))->nx) ; })
1178 #define STARPU_BLOCK_GET_NY(interface) ({ STARPU_BLOCK_CHECK(interface); (((struct starpu_block_interface *)(interface))->ny) ; })
1179 #define STARPU_BLOCK_GET_NZ(interface) ({ STARPU_BLOCK_CHECK(interface); (((struct starpu_block_interface *)(interface))->nz) ; })
1180 #define STARPU_BLOCK_GET_LDY(interface) ({ STARPU_BLOCK_CHECK(interface); (((struct starpu_block_interface *)(interface))->ldy) ; })
1181 #define STARPU_BLOCK_GET_LDZ(interface) ({ STARPU_BLOCK_CHECK(interface); (((struct starpu_block_interface *)(interface))->ldz) ; })
1182 #define STARPU_BLOCK_GET_ELEMSIZE(interface) ({ STARPU_BLOCK_CHECK(interface); (((struct starpu_block_interface *)(interface))->elemsize) ; })
1183 #else
1184 
1187 #define STARPU_BLOCK_GET_PTR(interface) (((struct starpu_block_interface *)(interface))->ptr)
1188 
1194 #define STARPU_BLOCK_GET_DEV_HANDLE(interface) (((struct starpu_block_interface *)(interface))->dev_handle)
1195 
1199 #define STARPU_BLOCK_GET_OFFSET(interface) (((struct starpu_block_interface *)(interface))->offset)
1200 
1204 #define STARPU_BLOCK_GET_NX(interface) (((struct starpu_block_interface *)(interface))->nx)
1205 
1209 #define STARPU_BLOCK_GET_NY(interface) (((struct starpu_block_interface *)(interface))->ny)
1210 
1214 #define STARPU_BLOCK_GET_NZ(interface) (((struct starpu_block_interface *)(interface))->nz)
1215 
1219 #define STARPU_BLOCK_GET_LDY(interface) (((struct starpu_block_interface *)(interface))->ldy)
1220 
1225 #define STARPU_BLOCK_GET_LDZ(interface) (((struct starpu_block_interface *)(interface))->ldz)
1226 
1230 #define STARPU_BLOCK_GET_ELEMSIZE(interface) (((struct starpu_block_interface *)(interface))->elemsize)
1231 #endif
1232 
1240 extern struct starpu_data_interface_ops starpu_interface_vector_ops;
1241 
1245 {
1248  uintptr_t ptr;
1249  uintptr_t dev_handle;
1250  size_t offset;
1251  uint32_t nx;
1252  size_t elemsize;
1253  uint32_t slice_base;
1254  size_t allocsize;
1255 };
1256 
1267 void starpu_vector_data_register(starpu_data_handle_t *handle, int home_node, uintptr_t ptr, uint32_t nx, size_t elemsize);
1268 
1273 void starpu_vector_data_register_allocsize(starpu_data_handle_t *handle, int home_node, uintptr_t ptr, uint32_t nx, size_t elemsize, size_t allocsize);
1274 
1280 void starpu_vector_ptr_register(starpu_data_handle_t handle, unsigned node, uintptr_t ptr, uintptr_t dev_handle, size_t offset);
1281 
1286 
1291 
1296 
1301 
1302 #if defined(STARPU_HAVE_STATEMENT_EXPRESSIONS) && defined(STARPU_DEBUG)
1303 #define STARPU_VECTOR_CHECK(interface) STARPU_ASSERT_MSG((((struct starpu_vector_interface *)(interface))->id) == STARPU_VECTOR_INTERFACE_ID, "Error. The given data is not a vector.")
1304 #define STARPU_VECTOR_GET_PTR(interface) ({ STARPU_VECTOR_CHECK(interface); (((struct starpu_vector_interface *)(interface))->ptr); })
1305 #define STARPU_VECTOR_GET_DEV_HANDLE(interface) ({ STARPU_VECTOR_CHECK(interface); (((struct starpu_vector_interface *)(interface))->dev_handle); })
1306 #define STARPU_VECTOR_GET_OFFSET(interface) ({ STARPU_VECTOR_CHECK(interface); (((struct starpu_vector_interface *)(interface))->offset); })
1307 #define STARPU_VECTOR_GET_NX(interface) ({ STARPU_VECTOR_CHECK(interface); (((struct starpu_vector_interface *)(interface))->nx); })
1308 #define STARPU_VECTOR_GET_ELEMSIZE(interface) ({ STARPU_VECTOR_CHECK(interface); (((struct starpu_vector_interface *)(interface))->elemsize); })
1309 #define STARPU_VECTOR_GET_ALLOCSIZE(interface) ({ STARPU_VECTOR_CHECK(interface); (((struct starpu_vector_interface *)(interface))->allocsize); })
1310 #define STARPU_VECTOR_GET_SLICE_BASE(interface) ({ STARPU_VECTOR_CHECK(interface); (((struct starpu_vector_interface *)(interface))->slice_base); })
1311 #else
1312 
1317 #define STARPU_VECTOR_GET_PTR(interface) (((struct starpu_vector_interface *)(interface))->ptr)
1318 
1323 #define STARPU_VECTOR_GET_DEV_HANDLE(interface) (((struct starpu_vector_interface *)(interface))->dev_handle)
1324 
1328 #define STARPU_VECTOR_GET_OFFSET(interface) (((struct starpu_vector_interface *)(interface))->offset)
1329 
1333 #define STARPU_VECTOR_GET_NX(interface) (((struct starpu_vector_interface *)(interface))->nx)
1334 
1338 #define STARPU_VECTOR_GET_ELEMSIZE(interface) (((struct starpu_vector_interface *)(interface))->elemsize)
1339 
1343 #define STARPU_VECTOR_GET_ALLOCSIZE(interface) (((struct starpu_vector_interface *)(interface))->allocsize)
1344 
1348 #define STARPU_VECTOR_GET_SLICE_BASE(interface) (((struct starpu_vector_interface *)(interface))->slice_base)
1349 #endif
1350 
1355 #define STARPU_VECTOR_SET_NX(interface, newnx) do { \
1356  STARPU_VECTOR_CHECK(interface); \
1357  (((struct starpu_vector_interface *)(interface))->nx) = (newnx); \
1358 } while(0)
1359 
1367 extern struct starpu_data_interface_ops starpu_interface_variable_ops;
1368 
1374 {
1377  uintptr_t ptr;
1378  uintptr_t dev_handle;
1379  size_t offset;
1380  size_t elemsize;
1381 };
1382 
1394 void starpu_variable_data_register(starpu_data_handle_t *handle, int home_node, uintptr_t ptr, size_t size);
1395 
1401 void starpu_variable_ptr_register(starpu_data_handle_t handle, unsigned node, uintptr_t ptr, uintptr_t dev_handle, size_t offset);
1402 
1407 
1412 
1413 #if defined(STARPU_HAVE_STATEMENT_EXPRESSIONS) && defined(STARPU_DEBUG)
1414 #define STARPU_VARIABLE_CHECK(interface) STARPU_ASSERT_MSG((((struct starpu_variable_interface *)(interface))->id) == STARPU_VARIABLE_INTERFACE_ID, "Error. The given data is not a variable.")
1415 #define STARPU_VARIABLE_GET_PTR(interface) ({ STARPU_VARIABLE_CHECK(interface); (((struct starpu_variable_interface *)(interface))->ptr) ; })
1416 #define STARPU_VARIABLE_GET_OFFSET(interface) ({ STARPU_VARIABLE_CHECK(interface); (((struct starpu_variable_interface *)(interface))->offset) ; })
1417 #define STARPU_VARIABLE_GET_ELEMSIZE(interface) ({ STARPU_VARIABLE_CHECK(interface); (((struct starpu_variable_interface *)(interface))->elemsize) ; })
1418 #define STARPU_VARIABLE_GET_DEV_HANDLE(interface) ({ STARPU_VARIABLE_CHECK(interface); (((struct starpu_variable_interface *)(interface))->ptr) ; })
1419 #else
1420 
1423 #define STARPU_VARIABLE_GET_PTR(interface) (((struct starpu_variable_interface *)(interface))->ptr)
1424 
1428 #define STARPU_VARIABLE_GET_OFFSET(interface) (((struct starpu_variable_interface *)(interface))->offset)
1429 
1432 #define STARPU_VARIABLE_GET_ELEMSIZE(interface) (((struct starpu_variable_interface *)(interface))->elemsize)
1433 
1439 #define STARPU_VARIABLE_GET_DEV_HANDLE(interface) (((struct starpu_variable_interface *)(interface))->ptr)
1440 #endif
1441 
1449 extern struct starpu_data_interface_ops starpu_interface_void_ops;
1450 
1460 
1468 extern struct starpu_data_interface_ops starpu_interface_csr_ops;
1469 
1475 {
1478  uint32_t nnz;
1479  uint32_t nrow;
1480  uintptr_t nzval;
1481  uint32_t *colind;
1482  uint32_t *rowptr;
1484  uint32_t firstentry;
1486  size_t elemsize;
1487 };
1488 
1492 void starpu_csr_data_register(starpu_data_handle_t *handle, int home_node, uint32_t nnz, uint32_t nrow, uintptr_t nzval, uint32_t *colind, uint32_t *rowptr, uint32_t firstentry, size_t elemsize);
1493 
1498 uint32_t starpu_csr_get_nnz(starpu_data_handle_t handle);
1499 
1504 uint32_t starpu_csr_get_nrow(starpu_data_handle_t handle);
1505 
1511 
1517 
1523 
1529 
1535 
1540 #define STARPU_CSR_GET_NNZ(interface) (((struct starpu_csr_interface *)(interface))->nnz)
1541 
1545 #define STARPU_CSR_GET_NROW(interface) (((struct starpu_csr_interface *)(interface))->nrow)
1546 
1550 #define STARPU_CSR_GET_NZVAL(interface) (((struct starpu_csr_interface *)(interface))->nzval)
1551 
1556 #define STARPU_CSR_GET_NZVAL_DEV_HANDLE(interface) (((struct starpu_csr_interface *)(interface))->nnz)
1557 
1561 #define STARPU_CSR_GET_COLIND(interface) (((struct starpu_csr_interface *)(interface))->colind)
1562 
1567 #define STARPU_CSR_GET_COLIND_DEV_HANDLE(interface) (((struct starpu_csr_interface *)(interface))->colind)
1568 
1572 #define STARPU_CSR_GET_ROWPTR(interface) (((struct starpu_csr_interface *)(interface))->rowptr)
1573 
1578 #define STARPU_CSR_GET_ROWPTR_DEV_HANDLE(interface) (((struct starpu_csr_interface *)(interface))->rowptr)
1579 
1583 #define STARPU_CSR_GET_OFFSET 0
1584 
1588 #define STARPU_CSR_GET_FIRSTENTRY(interface) (((struct starpu_csr_interface *)(interface))->firstentry)
1589 
1593 #define STARPU_CSR_GET_ELEMSIZE(interface) (((struct starpu_csr_interface *)(interface))->elemsize)
1594 
1602 extern struct starpu_data_interface_ops starpu_interface_bcsr_ops;
1603 
1614 {
1617  uint32_t nnz;
1618  uint32_t nrow;
1620  uintptr_t nzval;
1621  uint32_t *colind;
1622  uint32_t *rowptr;
1633  uint32_t firstentry;
1635  uint32_t r;
1636  uint32_t c;
1638  size_t elemsize;
1639 };
1640 
1707 void starpu_bcsr_data_register(starpu_data_handle_t *handle, int home_node, uint32_t nnz, uint32_t nrow, uintptr_t nzval, uint32_t *colind, uint32_t *rowptr, uint32_t firstentry, uint32_t r, uint32_t c, size_t elemsize);
1708 
1713 uint32_t starpu_bcsr_get_nnz(starpu_data_handle_t handle);
1714 
1720 
1726 
1732 
1738 
1744 
1748 uint32_t starpu_bcsr_get_r(starpu_data_handle_t handle);
1749 
1753 uint32_t starpu_bcsr_get_c(starpu_data_handle_t handle);
1754 
1760 
1765 #define STARPU_BCSR_GET_NNZ(interface) (((struct starpu_bcsr_interface *)(interface))->nnz)
1766 
1770 #define STARPU_BCSR_GET_NZVAL(interface) (((struct starpu_bcsr_interface *)(interface))->nzval)
1771 
1776 #define STARPU_BCSR_GET_NZVAL_DEV_HANDLE(interface) (((struct starpu_bcsr_interface *)(interface))->nnz)
1777 
1781 #define STARPU_BCSR_GET_COLIND(interface) (((struct starpu_bcsr_interface *)(interface))->colind)
1782 
1787 #define STARPU_BCSR_GET_COLIND_DEV_HANDLE(interface) (((struct starpu_bcsr_interface *)(interface))->colind)
1788 
1792 #define STARPU_BCSR_GET_ROWPTR(interface) (((struct starpu_bcsr_interface *)(interface))->rowptr)
1793 
1798 #define STARPU_BCSR_GET_ROWPTR_DEV_HANDLE(interface) (((struct starpu_bcsr_interface *)(interface))->rowptr)
1799 
1803 #define STARPU_BCSR_GET_OFFSET 0
1804 
1816 {
1817  size_t cpu_elemsize;
1821  size_t cuda_elemsize;
1824  size_t mic_elemsize;
1827 };
1828 
1830 {
1831  enum starpu_data_interface_id id;
1832 
1833  void *cpu_ptr;
1834  void *cuda_ptr;
1835  void *opencl_ptr;
1836  void *mic_ptr;
1837  uint32_t nx;
1839 };
1840 
1849 void starpu_multiformat_data_register(starpu_data_handle_t *handle, int home_node, void *ptr, uint32_t nobjects, struct starpu_multiformat_data_interface_ops *format_ops);
1850 
1854 #define STARPU_MULTIFORMAT_GET_CPU_PTR(interface) (((struct starpu_multiformat_interface *)(interface))->cpu_ptr)
1855 
1858 #define STARPU_MULTIFORMAT_GET_CUDA_PTR(interface) (((struct starpu_multiformat_interface *)(interface))->cuda_ptr)
1859 
1862 #define STARPU_MULTIFORMAT_GET_OPENCL_PTR(interface) (((struct starpu_multiformat_interface *)(interface))->opencl_ptr)
1863 
1866 #define STARPU_MULTIFORMAT_GET_MIC_PTR(interface) (((struct starpu_multiformat_interface *)(interface))->mic_ptr)
1867 
1870 #define STARPU_MULTIFORMAT_GET_NX(interface) (((struct starpu_multiformat_interface *)(interface))->nx)
1871 
1876 #ifdef __cplusplus
1877 }
1878 #endif
1879 
1880 #endif /* __STARPU_DATA_INTERFACES_H__ */
size_t elemsize
Definition: starpu_data_interfaces.h:1252
size_t starpu_bcsr_get_elemsize(starpu_data_handle_t handle)
Definition: starpu_data_interfaces.h:357
uint32_t starpu_matrix_get_nx(starpu_data_handle_t handle)
uint32_t nrow
Definition: starpu_data_interfaces.h:1618
int(* ram_to_mpi_ms)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node)
Definition: starpu_data_interfaces.h:185
size_t starpu_vector_get_elemsize(starpu_data_handle_t handle)
void starpu_block_ptr_register(starpu_data_handle_t handle, unsigned node, uintptr_t ptr, uintptr_t dev_handle, size_t offset, uint32_t ldy, uint32_t ldz)
uint32_t nrow
Definition: starpu_data_interfaces.h:1479
void * starpu_data_get_interface_on_node(starpu_data_handle_t handle, unsigned memory_node)
size_t allocsize
Definition: starpu_data_interfaces.h:840
Definition: starpu_task.h:249
Definition: starpu_data_interfaces.h:356
uint32_t firstentry
Definition: starpu_data_interfaces.h:1633
int starpu_interface_copy(uintptr_t src, size_t src_offset, unsigned src_node, uintptr_t dst, size_t dst_offset, unsigned dst_node, size_t size, void *async_data)
uintptr_t starpu_malloc_on_node_flags(unsigned dst_node, size_t size, int flags)
uintptr_t ptr
Definition: starpu_data_interfaces.h:830
uint32_t nx
Definition: starpu_data_interfaces.h:1006
uint32_t nx
Definition: starpu_data_interfaces.h:1100
uintptr_t starpu_variable_get_local_ptr(starpu_data_handle_t handle)
uint32_t starpu_bcsr_get_nnz(starpu_data_handle_t handle)
uint32_t * rowptr
Definition: starpu_data_interfaces.h:1622
int(* mpi_ms_to_mpi_ms)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node)
Definition: starpu_data_interfaces.h:199
int(* ram_to_cuda_async)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node, starpu_cudaStream_t stream)
Definition: starpu_data_interfaces.h:210
uint32_t * colind
Definition: starpu_data_interfaces.h:1621
Definition: starpu_data_interfaces.h:1244
uintptr_t dev_handle
Definition: starpu_data_interfaces.h:1249
uint32_t nnz
Definition: starpu_data_interfaces.h:1617
int starpu_interface_copy2d(uintptr_t src, size_t src_offset, unsigned src_node, uintptr_t dst, size_t dst_offset, unsigned dst_node, size_t blocksize, size_t numblocks, size_t ld_src, size_t ld_dst, void *async_data)
struct starpu_codelet * cpu_to_mic_cl
Definition: starpu_data_interfaces.h:1825
void starpu_variable_data_register(starpu_data_handle_t *handle, int home_node, uintptr_t ptr, size_t size)
uint32_t nnz
Definition: starpu_data_interfaces.h:1478
int(* ram_to_mic_async)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node)
Definition: starpu_data_interfaces.h:312
void * starpu_data_handle_to_pointer(starpu_data_handle_t handle, unsigned node)
uint32_t starpu_csr_get_nnz(starpu_data_handle_t handle)
Definition: starpu_data_interfaces.h:1474
int(* ram_to_mpi_ms_async)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node, void *event)
Definition: starpu_data_interfaces.h:282
struct starpu_codelet * cpu_to_cuda_cl
Definition: starpu_data_interfaces.h:1822
Definition: starpu_data_interfaces.h:999
Definition: starpu_data_interfaces.h:1815
int(* cuda_to_cuda_async)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node, starpu_cudaStream_t stream)
Definition: starpu_data_interfaces.h:230
uint32_t * columns
Definition: starpu_data_interfaces.h:1003
int(* ram_to_cuda)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node)
Definition: starpu_data_interfaces.h:115
size_t interface_size
Definition: starpu_data_interfaces.h:509
uintptr_t starpu_vector_get_local_ptr(starpu_data_handle_t handle)
size_t cpu_elemsize
Definition: starpu_data_interfaces.h:1817
int(* mpi_ms_to_ram_async)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node, void *event)
Definition: starpu_data_interfaces.h:292
size_t elemsize
Definition: starpu_data_interfaces.h:839
uint32_t nx
Definition: starpu_data_interfaces.h:1251
Definition: starpu_data_interfaces.h:1093
uint32_t n_values
Definition: starpu_data_interfaces.h:1008
int starpu_data_pack(starpu_data_handle_t handle, void **ptr, starpu_ssize_t *count)
uint32_t * starpu_bcsr_get_local_colind(starpu_data_handle_t handle)
int(* ram_to_opencl_async)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node, cl_event *event)
Definition: starpu_data_interfaces.h:247
struct starpu_codelet * cuda_to_cpu_cl
Definition: starpu_data_interfaces.h:1823
uint32_t * rows
Definition: starpu_data_interfaces.h:1004
void starpu_vector_ptr_register(starpu_data_handle_t handle, unsigned node, uintptr_t ptr, uintptr_t dev_handle, size_t offset)
uint32_t * rowptr
Definition: starpu_data_interfaces.h:1482
size_t mic_elemsize
Definition: starpu_data_interfaces.h:1824
struct starpu_codelet * mic_to_cpu_cl
Definition: starpu_data_interfaces.h:1826
Definition: starpu_data_interfaces.h:1829
size_t starpu_variable_get_elemsize(starpu_data_handle_t handle)
Definition: starpu_data_interfaces.h:349
uint32_t starpu_block_get_local_ldy(starpu_data_handle_t handle)
uintptr_t nzval
Definition: starpu_data_interfaces.h:1480
Definition: starpu_data_interfaces.h:353
int(* ram_to_ram)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node)
Definition: starpu_data_interfaces.h:108
int(* opencl_to_opencl_async)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node, cl_event *event)
Definition: starpu_data_interfaces.h:267
struct starpu_codelet * cpu_to_opencl_cl
Definition: starpu_data_interfaces.h:1819
size_t elemsize
Definition: starpu_data_interfaces.h:1380
int(* opencl_to_ram_async)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node, cl_event *event)
Definition: starpu_data_interfaces.h:257
int(* cuda_to_ram)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node)
Definition: starpu_data_interfaces.h:136
uint32_t ld
Definition: starpu_data_interfaces.h:835
uint32_t starpu_csr_get_firstentry(starpu_data_handle_t handle)
void starpu_data_register_same(starpu_data_handle_t *handledst, starpu_data_handle_t handlesrc)
int(* any_to_any)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node, void *async_data)
Definition: starpu_data_interfaces.h:341
int(* cuda_to_ram_async)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node, starpu_cudaStream_t stream)
Definition: starpu_data_interfaces.h:220
void starpu_vector_data_register(starpu_data_handle_t *handle, int home_node, uintptr_t ptr, uint32_t nx, size_t elemsize)
int(* mic_to_ram)(void *src_interface, unsigned srd_node, void *dst_interface, unsigned dst_node)
Definition: starpu_data_interfaces.h:178
size_t elemsize
Definition: starpu_data_interfaces.h:1105
void starpu_malloc_on_node_set_default_flags(unsigned node, int flags)
uint32_t ny
Definition: starpu_data_interfaces.h:1007
enum starpu_data_interface_id starpu_data_get_interface_id(starpu_data_handle_t handle)
uint32_t nz
Definition: starpu_data_interfaces.h:1102
uint32_t starpu_matrix_get_ny(starpu_data_handle_t handle)
uint32_t nx
Definition: starpu_data_interfaces.h:833
int starpu_data_interface_get_next_id(void)
void starpu_csr_data_register(starpu_data_handle_t *handle, int home_node, uint32_t nnz, uint32_t nrow, uintptr_t nzval, uint32_t *colind, uint32_t *rowptr, uint32_t firstentry, size_t elemsize)
int starpu_interface_copy4d(uintptr_t src, size_t src_offset, unsigned src_node, uintptr_t dst, size_t dst_offset, unsigned dst_node, size_t blocksize, size_t numblocks1, size_t ld1_src, size_t ld1_dst, size_t numblocks2, size_t ld2_src, size_t ld2_dst, size_t numblocks3, size_t ld3_src, size_t ld3_dst, void *async_data)
struct starpu_codelet * opencl_to_cpu_cl
Definition: starpu_data_interfaces.h:1820
Definition: starpu_data_interfaces.h:351
uint32_t ny
Definition: starpu_data_interfaces.h:834
void starpu_block_data_register(starpu_data_handle_t *handle, int home_node, uintptr_t ptr, uint32_t ldy, uint32_t ldz, uint32_t nx, uint32_t ny, uint32_t nz, size_t elemsize)
char dontcache
Definition: starpu_data_interfaces.h:522
uint32_t starpu_bcsr_get_c(starpu_data_handle_t handle)
int(* mic_to_ram_async)(void *src_interface, unsigned srd_node, void *dst_interface, unsigned dst_node)
Definition: starpu_data_interfaces.h:322
starpu_data_handle_t starpu_data_lookup(const void *ptr)
uint32_t * starpu_csr_get_local_colind(starpu_data_handle_t handle)
uintptr_t dev_handle
Definition: starpu_data_interfaces.h:831
void starpu_data_register(starpu_data_handle_t *handleptr, int home_node, void *data_interface, struct starpu_data_interface_ops *ops)
Definition: starpu_data_interfaces.h:350
Definition: starpu_data_interfaces.h:358
size_t allocsize
Definition: starpu_data_interfaces.h:1254
uintptr_t ptr
Definition: starpu_data_interfaces.h:1248
void starpu_interface_start_driver_copy_async(unsigned src_node, unsigned dst_node, double *start)
size_t elemsize
Definition: starpu_data_interfaces.h:1638
uintptr_t starpu_malloc_on_node(unsigned dst_node, size_t size)
size_t starpu_block_get_elemsize(starpu_data_handle_t handle)
size_t opencl_elemsize
Definition: starpu_data_interfaces.h:1818
uint32_t starpu_bcsr_get_nrow(starpu_data_handle_t handle)
Definition: starpu_data_interfaces.h:1613
void starpu_matrix_ptr_register(starpu_data_handle_t handle, unsigned node, uintptr_t ptr, uintptr_t dev_handle, size_t offset, uint32_t ld)
Definition: starpu_data_interfaces.h:1373
int(* mpi_ms_to_mpi_ms_async)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node, void *event)
Definition: starpu_data_interfaces.h:302
uintptr_t starpu_block_get_local_ptr(starpu_data_handle_t handle)
uintptr_t ptr
Definition: starpu_data_interfaces.h:1097
Definition: starpu_data_interfaces.h:352
uint32_t ldy
Definition: starpu_data_interfaces.h:1103
Definition: starpu_data_interfaces.h:355
uintptr_t starpu_bcsr_get_local_nzval(starpu_data_handle_t handle)
void starpu_coo_data_register(starpu_data_handle_t *handleptr, int home_node, uint32_t nx, uint32_t ny, uint32_t n_values, uint32_t *columns, uint32_t *rows, uintptr_t values, size_t elemsize)
void starpu_data_ptr_register(starpu_data_handle_t handle, unsigned node)
size_t starpu_vector_get_allocsize(starpu_data_handle_t handle)
struct _starpu_data_state * starpu_data_handle_t
Definition: starpu_data.h:44
int(* opencl_to_opencl)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node)
Definition: starpu_data_interfaces.h:171
uint32_t * colind
Definition: starpu_data_interfaces.h:1481
uint32_t starpu_matrix_get_local_ld(starpu_data_handle_t handle)
void starpu_interface_end_driver_copy_async(unsigned src_node, unsigned dst_node, double start)
uintptr_t starpu_matrix_get_local_ptr(starpu_data_handle_t handle)
uint32_t starpu_vector_get_nx(starpu_data_handle_t handle)
uint32_t starpu_block_get_nz(starpu_data_handle_t handle)
void starpu_bcsr_data_register(starpu_data_handle_t *handle, int home_node, uint32_t nnz, uint32_t nrow, uintptr_t nzval, uint32_t *colind, uint32_t *rowptr, uint32_t firstentry, uint32_t r, uint32_t c, size_t elemsize)
int(* opencl_to_cuda)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node)
Definition: starpu_data_interfaces.h:164
size_t cuda_elemsize
Definition: starpu_data_interfaces.h:1821
Definition: starpu_data_interfaces.h:359
char * name
Definition: starpu_data_interfaces.h:556
uintptr_t ptr
Definition: starpu_data_interfaces.h:1377
void starpu_void_data_register(starpu_data_handle_t *handle)
int(* mpi_ms_to_ram)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node)
Definition: starpu_data_interfaces.h:192
int(* cuda_to_cuda)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node)
Definition: starpu_data_interfaces.h:143
size_t offset
Definition: starpu_data_interfaces.h:1379
starpu_data_interface_id
Definition: starpu_data_interfaces.h:347
void * starpu_data_get_local_ptr(starpu_data_handle_t handle)
size_t starpu_matrix_get_allocsize(starpu_data_handle_t handle)
void starpu_matrix_data_register(starpu_data_handle_t *handle, int home_node, uintptr_t ptr, uint32_t ld, uint32_t nx, uint32_t ny, size_t elemsize)
void starpu_multiformat_data_register(starpu_data_handle_t *handle, int home_node, void *ptr, uint32_t nobjects, struct starpu_multiformat_data_interface_ops *format_ops)
uint32_t * starpu_bcsr_get_local_rowptr(starpu_data_handle_t handle)
size_t starpu_data_get_alloc_size(starpu_data_handle_t handle)
size_t offset
Definition: starpu_data_interfaces.h:1250
uint32_t firstentry
Definition: starpu_data_interfaces.h:1484
uint32_t r
Definition: starpu_data_interfaces.h:1635
int starpu_data_pointer_is_inside(starpu_data_handle_t handle, unsigned node, void *ptr)
Definition: starpu_data_interfaces.h:365
uint32_t starpu_bcsr_get_firstentry(starpu_data_handle_t handle)
void starpu_free_on_node(unsigned dst_node, uintptr_t addr, size_t size)
void starpu_vector_data_register_allocsize(starpu_data_handle_t *handle, int home_node, uintptr_t ptr, uint32_t nx, size_t elemsize, size_t allocsize)
int(* can_copy)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node, unsigned handling_node)
Definition: starpu_data_interfaces.h:101
uint32_t starpu_bcsr_get_r(starpu_data_handle_t handle)
size_t starpu_matrix_get_elemsize(starpu_data_handle_t handle)
int(* opencl_to_ram)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node)
Definition: starpu_data_interfaces.h:157
uintptr_t dev_handle
Definition: starpu_data_interfaces.h:1098
uint32_t * starpu_csr_get_local_rowptr(starpu_data_handle_t handle)
void starpu_free_on_node_flags(unsigned dst_node, uintptr_t addr, size_t size, int flags)
uint32_t starpu_block_get_local_ldz(starpu_data_handle_t handle)
uint32_t slice_base
Definition: starpu_data_interfaces.h:1253
uintptr_t nzval
Definition: starpu_data_interfaces.h:1620
size_t offset
Definition: starpu_data_interfaces.h:832
Definition: starpu_data_interfaces.h:92
void starpu_variable_ptr_register(starpu_data_handle_t handle, unsigned node, uintptr_t ptr, uintptr_t dev_handle, size_t offset)
int(* ram_to_opencl)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node)
Definition: starpu_data_interfaces.h:122
int starpu_data_unpack(starpu_data_handle_t handle, void *ptr, size_t count)
uint32_t c
Definition: starpu_data_interfaces.h:1636
uintptr_t dev_handle
Definition: starpu_data_interfaces.h:1378
int(* cuda_to_opencl)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node)
Definition: starpu_data_interfaces.h:150
uint32_t starpu_csr_get_nrow(starpu_data_handle_t handle)
uint32_t ny
Definition: starpu_data_interfaces.h:1101
int starpu_interface_copy3d(uintptr_t src, size_t src_offset, unsigned src_node, uintptr_t dst, size_t dst_offset, unsigned dst_node, size_t blocksize, size_t numblocks1, size_t ld1_src, size_t ld1_dst, size_t numblocks2, size_t ld2_src, size_t ld2_dst, void *async_data)
int(* ram_to_mic)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node)
Definition: starpu_data_interfaces.h:129
uint32_t starpu_block_get_ny(starpu_data_handle_t handle)
Definition: starpu_data_interfaces.h:827
size_t starpu_data_get_size(starpu_data_handle_t handle)
const struct starpu_data_copy_methods * copy_methods
Definition: starpu_data_interfaces.h:417
uintptr_t starpu_csr_get_local_nzval(starpu_data_handle_t handle)
void starpu_matrix_data_register_allocsize(starpu_data_handle_t *handle, int home_node, uintptr_t ptr, uint32_t ld, uint32_t nx, uint32_t ny, size_t elemsize, size_t allocsize)
size_t elemsize
Definition: starpu_data_interfaces.h:1009
size_t offset
Definition: starpu_data_interfaces.h:1099
uint32_t starpu_block_get_nx(starpu_data_handle_t handle)
uint32_t ldz
Definition: starpu_data_interfaces.h:1104
Definition: starpu_data_interfaces.h:354
size_t starpu_csr_get_elemsize(starpu_data_handle_t handle)
void starpu_interface_data_copy(unsigned src_node, unsigned dst_node, size_t size)
size_t elemsize
Definition: starpu_data_interfaces.h:1486
uintptr_t values
Definition: starpu_data_interfaces.h:1005