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-2019 Université de Bordeaux
4  * Copyright (C) 2011-2014,2016,2017 Inria
5  * Copyright (C) 2010-2015,2017,2019 CNRS
6  *
7  * StarPU is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU Lesser General Public License as published by
9  * the Free Software Foundation; either version 2.1 of the License, or (at
10  * your option) any later version.
11  *
12  * StarPU is distributed in the hope that it will be useful, but
13  * WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
15  *
16  * See the GNU Lesser General Public License in COPYING.LGPL for more details.
17  */
18 
19 #ifndef __STARPU_DATA_INTERFACES_H__
20 #define __STARPU_DATA_INTERFACES_H__
21 
22 #include <starpu.h>
23 
24 #ifdef STARPU_USE_CUDA
25 /* to use CUDA streams */
26 # ifdef STARPU_DONT_INCLUDE_CUDA_HEADERS
27 typedef void *starpu_cudaStream_t;
28 # else
29 # include <cuda_runtime.h>
30 typedef cudaStream_t starpu_cudaStream_t;
31 # endif
32 #endif
33 
34 #ifdef __cplusplus
35 extern "C"
36 {
37 #endif
38 
95 {
103  int (*can_copy)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node, unsigned handling_node);
104 
110  int (*ram_to_ram)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node);
111 
117  int (*ram_to_cuda)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node);
118 
124  int (*ram_to_opencl)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node);
125 
131  int (*ram_to_mic)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node);
132 
138  int (*cuda_to_ram)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node);
139 
145  int (*cuda_to_cuda)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node);
146 
152  int (*cuda_to_opencl)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node);
153 
159  int (*opencl_to_ram)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node);
160 
166  int (*opencl_to_cuda)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node);
167 
173  int (*opencl_to_opencl)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node);
174 
180  int (*mic_to_ram)(void *src_interface, unsigned srd_node, void *dst_interface, unsigned dst_node);
181 
187  int (*ram_to_mpi_ms)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node);
188 
194  int (*mpi_ms_to_ram)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node);
195 
201  int (*mpi_ms_to_mpi_ms)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node);
202 
203 #ifdef STARPU_USE_CUDA
204 
212  int (*ram_to_cuda_async)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node, starpu_cudaStream_t stream);
213 
222  int (*cuda_to_ram_async)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node, starpu_cudaStream_t stream);
223 
232  int (*cuda_to_cuda_async)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node, starpu_cudaStream_t stream);
233 #else
234  int (*ram_to_cuda_async)();
235  int (*cuda_to_ram_async)();
236  int (*cuda_to_cuda_async)();
237 #endif
238 
239 #if defined(STARPU_USE_OPENCL) && !defined(__CUDACC__)
240 
249  int (*ram_to_opencl_async)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node, cl_event *event);
259  int (*opencl_to_ram_async)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node, cl_event *event);
269  int (*opencl_to_opencl_async)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node, cl_event *event);
270 #else
271  int (*ram_to_opencl_async)();
272  int (*opencl_to_ram_async)();
273  int (*opencl_to_opencl_async)();
274 #endif
275 
284  int (*ram_to_mpi_ms_async)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node, void * event);
285 
294  int (*mpi_ms_to_ram_async)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node, void * event);
295 
304  int (*mpi_ms_to_mpi_ms_async)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node, void * event);
305 
314  int (*ram_to_mic_async)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node);
315 
324  int (*mic_to_ram_async)(void *src_interface, unsigned srd_node, void *dst_interface, unsigned dst_node);
325 
343  int (*any_to_any)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node, void *async_data);
344 };
345 
350 {
362 };
363 
368 {
380  void (*register_data_handle) (starpu_data_handle_t handle, unsigned home_node, void *data_interface);
381 
395  starpu_ssize_t (*allocate_data_on_node) (void *data_interface, unsigned node);
396 
402  void (*free_data_on_node) (void *data_interface, unsigned node);
403 
409  void (*init) (void *data_interface);
410 
420 
429  void * (*handle_to_pointer) (starpu_data_handle_t handle, unsigned node);
430 
437  void * (*to_pointer) (void *data_interface, unsigned node);
438 
443  int (*pointer_is_inside) (void *data_interface, unsigned node, void *ptr);
444 
448  size_t (*get_size) (starpu_data_handle_t handle);
449 
457 
463  uint32_t (*footprint) (starpu_data_handle_t handle);
464 
471  uint32_t (*alloc_footprint) (starpu_data_handle_t handle);
472 
478  int (*compare) (void *data_interface_a, void *data_interface_b);
479 
487  int (*alloc_compare) (void *data_interface_a, void *data_interface_b);
488 
493  void (*display) (starpu_data_handle_t handle, FILE *f);
494 
501  starpu_ssize_t (*describe) (void *data_interface, char *buf, size_t size);
502 
507 
512 
515  char is_multiformat;
516 
524  char dontcache;
525 
528  struct starpu_multiformat_data_interface_ops* (*get_mf_ops)(void *data_interface);
529 
546  int (*pack_data) (starpu_data_handle_t handle, unsigned node, void **ptr, starpu_ssize_t *count);
547 
553  int (*unpack_data) (starpu_data_handle_t handle, unsigned node, void *ptr, size_t count);
554 
558  char *name;
559 };
560 
582 void starpu_data_register(starpu_data_handle_t *handleptr, int home_node, void *data_interface, struct starpu_data_interface_ops *ops);
583 
589 void starpu_data_ptr_register(starpu_data_handle_t handle, unsigned node);
590 
596 
602 void *starpu_data_handle_to_pointer(starpu_data_handle_t handle, unsigned node);
603 
609 int starpu_data_pointer_is_inside(starpu_data_handle_t handle, unsigned node, void *ptr);
610 
616 
620 void *starpu_data_get_interface_on_node(starpu_data_handle_t handle, unsigned memory_node);
621 
627 
638 int starpu_data_pack(starpu_data_handle_t handle, void **ptr, starpu_ssize_t *count);
639 
646 int starpu_data_unpack(starpu_data_handle_t handle, void *ptr, size_t count);
647 
652 
657 
662 
663 int starpu_data_get_home_node(starpu_data_handle_t handle);
664 
670 
678 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);
679 
689 void starpu_interface_start_driver_copy_async(unsigned src_node, unsigned dst_node, double *start);
690 
694 void starpu_interface_end_driver_copy_async(unsigned src_node, unsigned dst_node, double start);
695 
700 void starpu_interface_data_copy(unsigned src_node, unsigned dst_node, size_t size);
701 
707 uintptr_t starpu_malloc_on_node_flags(unsigned dst_node, size_t size, int flags);
708 
714 uintptr_t starpu_malloc_on_node(unsigned dst_node, size_t size);
715 
720 void starpu_free_on_node_flags(unsigned dst_node, uintptr_t addr, size_t size, int flags);
721 
726 void starpu_free_on_node(unsigned dst_node, uintptr_t addr, size_t size);
727 
732 void starpu_malloc_on_node_set_default_flags(unsigned node, int flags);
733 
741 extern struct starpu_data_interface_ops starpu_interface_matrix_ops;
742 
747 {
749  uintptr_t ptr;
750  uintptr_t dev_handle;
751  size_t offset;
752  uint32_t nx;
753  uint32_t ny;
754  uint32_t ld;
758  size_t elemsize;
759  size_t allocsize;
760 };
761 
776 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);
777 
782 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);
783 
789 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);
790 
796 
802 
808 
813 
819 
824 
825 #if defined(STARPU_HAVE_STATEMENT_EXPRESSIONS) && defined(STARPU_DEBUG)
826 #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.")
827 #define STARPU_MATRIX_GET_PTR(interface) ({ STARPU_MATRIX_CHECK(interface); (((struct starpu_matrix_interface *)(interface))->ptr) ; })
828 #define STARPU_MATRIX_GET_DEV_HANDLE(interface) ({ STARPU_MATRIX_CHECK(interface); (((struct starpu_matrix_interface *)(interface))->dev_handle) ; })
829 #define STARPU_MATRIX_GET_OFFSET(interface) ({ STARPU_MATRIX_CHECK(interface); (((struct starpu_matrix_interface *)(interface))->offset) ; })
830 #define STARPU_MATRIX_GET_NX(interface) ({ STARPU_MATRIX_CHECK(interface); (((struct starpu_matrix_interface *)(interface))->nx) ; })
831 #define STARPU_MATRIX_GET_NY(interface) ({ STARPU_MATRIX_CHECK(interface); (((struct starpu_matrix_interface *)(interface))->ny) ; })
832 #define STARPU_MATRIX_GET_LD(interface) ({ STARPU_MATRIX_CHECK(interface); (((struct starpu_matrix_interface *)(interface))->ld) ; })
833 #define STARPU_MATRIX_GET_ELEMSIZE(interface) ({ STARPU_MATRIX_CHECK(interface); (((struct starpu_matrix_interface *)(interface))->elemsize) ; })
834 #define STARPU_MATRIX_GET_ALLOCSIZE(interface) ({ STARPU_MATRIX_CHECK(interface); (((struct starpu_matrix_interface *)(interface))->allocsize) ; })
835 #else
836 
841 #define STARPU_MATRIX_GET_PTR(interface) (((struct starpu_matrix_interface *)(interface))->ptr)
842 
848 #define STARPU_MATRIX_GET_DEV_HANDLE(interface) (((struct starpu_matrix_interface *)(interface))->dev_handle)
849 
853 #define STARPU_MATRIX_GET_OFFSET(interface) (((struct starpu_matrix_interface *)(interface))->offset)
854 
858 #define STARPU_MATRIX_GET_NX(interface) (((struct starpu_matrix_interface *)(interface))->nx)
859 
863 #define STARPU_MATRIX_GET_NY(interface) (((struct starpu_matrix_interface *)(interface))->ny)
864 
868 #define STARPU_MATRIX_GET_LD(interface) (((struct starpu_matrix_interface *)(interface))->ld)
869 
873 #define STARPU_MATRIX_GET_ELEMSIZE(interface) (((struct starpu_matrix_interface *)(interface))->elemsize)
874 
877 #define STARPU_MATRIX_GET_ALLOCSIZE(interface) (((struct starpu_matrix_interface *)(interface))->allocsize)
878 #endif
879 
884 #define STARPU_MATRIX_SET_NX(interface, newnx) do { \
885  STARPU_MATRIX_CHECK(interface); \
886  (((struct starpu_matrix_interface *)(interface))->nx) = (newnx); \
887 } while (0)
888 
892 #define STARPU_MATRIX_SET_NY(interface, newny) do { \
893  STARPU_MATRIX_CHECK(interface); \
894  (((struct starpu_matrix_interface *)(interface))->ny) = (newny); \
895 } while(0)
896 
901 #define STARPU_MATRIX_SET_LD(interface, newld) do { \
902  STARPU_MATRIX_CHECK(interface); \
903  (((struct starpu_matrix_interface *)(interface))->ld) = (newld); \
904 } while(0)
905 
913 extern struct starpu_data_interface_ops starpu_interface_coo_ops;
914 
919 {
922  uint32_t *columns;
923  uint32_t *rows;
924  uintptr_t values;
925  uint32_t nx;
926  uint32_t ny;
927  uint32_t n_values;
928  size_t elemsize;
929 };
930 
936 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);
937 
942 #define STARPU_COO_GET_COLUMNS(interface) (((struct starpu_coo_interface *)(interface))->columns)
943 
949 #define STARPU_COO_GET_COLUMNS_DEV_HANDLE(interface) (((struct starpu_coo_interface *)(interface))->columns)
950 
954 #define STARPU_COO_GET_ROWS(interface) (((struct starpu_coo_interface *)(interface))->rows)
955 
960 #define STARPU_COO_GET_ROWS_DEV_HANDLE(interface) (((struct starpu_coo_interface *)(interface))->rows)
961 
965 #define STARPU_COO_GET_VALUES(interface) (((struct starpu_coo_interface *)(interface))->values)
966 
971 #define STARPU_COO_GET_VALUES_DEV_HANDLE(interface) (((struct starpu_coo_interface *)(interface))->values)
972 
976 #define STARPU_COO_GET_OFFSET 0
977 
981 #define STARPU_COO_GET_NX(interface) (((struct starpu_coo_interface *)(interface))->nx)
982 
986 #define STARPU_COO_GET_NY(interface) (((struct starpu_coo_interface *)(interface))->ny)
987 
991 #define STARPU_COO_GET_NVALUES(interface) (((struct starpu_coo_interface *)(interface))->n_values)
992 
996 #define STARPU_COO_GET_ELEMSIZE(interface) (((struct starpu_coo_interface *)(interface))->elemsize)
997 
1005 extern struct starpu_data_interface_ops starpu_interface_block_ops;
1006 
1007 /* TODO: rename to 3dmatrix? */
1008 /* TODO: add allocsize support */
1013 {
1016  uintptr_t ptr;
1017  uintptr_t dev_handle;
1018  size_t offset;
1019  uint32_t nx;
1020  uint32_t ny;
1021  uint32_t nz;
1022  uint32_t ldy;
1023  uint32_t ldz;
1024  size_t elemsize;
1025 };
1026 
1040 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);
1041 
1048 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);
1049 
1054 uint32_t starpu_block_get_nx(starpu_data_handle_t handle);
1055 
1060 uint32_t starpu_block_get_ny(starpu_data_handle_t handle);
1061 
1066 uint32_t starpu_block_get_nz(starpu_data_handle_t handle);
1067 
1073 
1079 
1084 
1090 
1091 #if defined(STARPU_HAVE_STATEMENT_EXPRESSIONS) && defined(STARPU_DEBUG)
1092 #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.")
1093 #define STARPU_BLOCK_GET_PTR(interface) ({ STARPU_BLOCK_CHECK(interface); (((struct starpu_block_interface *)(interface))->ptr) ; })
1094 #define STARPU_BLOCK_GET_DEV_HANDLE(interface) ({ STARPU_BLOCK_CHECK(interface); (((struct starpu_block_interface *)(interface))->dev_handle) ; })
1095 #define STARPU_BLOCK_GET_OFFSET(interface) ({ STARPU_BLOCK_CHECK(interface); (((struct starpu_block_interface *)(interface))->offset) ; })
1096 #define STARPU_BLOCK_GET_NX(interface) ({ STARPU_BLOCK_CHECK(interface); (((struct starpu_block_interface *)(interface))->nx) ; })
1097 #define STARPU_BLOCK_GET_NY(interface) ({ STARPU_BLOCK_CHECK(interface); (((struct starpu_block_interface *)(interface))->ny) ; })
1098 #define STARPU_BLOCK_GET_NZ(interface) ({ STARPU_BLOCK_CHECK(interface); (((struct starpu_block_interface *)(interface))->nz) ; })
1099 #define STARPU_BLOCK_GET_LDY(interface) ({ STARPU_BLOCK_CHECK(interface); (((struct starpu_block_interface *)(interface))->ldy) ; })
1100 #define STARPU_BLOCK_GET_LDZ(interface) ({ STARPU_BLOCK_CHECK(interface); (((struct starpu_block_interface *)(interface))->ldz) ; })
1101 #define STARPU_BLOCK_GET_ELEMSIZE(interface) ({ STARPU_BLOCK_CHECK(interface); (((struct starpu_block_interface *)(interface))->elemsize) ; })
1102 #else
1103 
1106 #define STARPU_BLOCK_GET_PTR(interface) (((struct starpu_block_interface *)(interface))->ptr)
1107 
1113 #define STARPU_BLOCK_GET_DEV_HANDLE(interface) (((struct starpu_block_interface *)(interface))->dev_handle)
1114 
1118 #define STARPU_BLOCK_GET_OFFSET(interface) (((struct starpu_block_interface *)(interface))->offset)
1119 
1123 #define STARPU_BLOCK_GET_NX(interface) (((struct starpu_block_interface *)(interface))->nx)
1124 
1128 #define STARPU_BLOCK_GET_NY(interface) (((struct starpu_block_interface *)(interface))->ny)
1129 
1133 #define STARPU_BLOCK_GET_NZ(interface) (((struct starpu_block_interface *)(interface))->nz)
1134 
1138 #define STARPU_BLOCK_GET_LDY(interface) (((struct starpu_block_interface *)(interface))->ldy)
1139 
1144 #define STARPU_BLOCK_GET_LDZ(interface) (((struct starpu_block_interface *)(interface))->ldz)
1145 
1149 #define STARPU_BLOCK_GET_ELEMSIZE(interface) (((struct starpu_block_interface *)(interface))->elemsize)
1150 #endif
1151 
1159 extern struct starpu_data_interface_ops starpu_interface_vector_ops;
1160 
1164 {
1167  uintptr_t ptr;
1168  uintptr_t dev_handle;
1169  size_t offset;
1170  uint32_t nx;
1171  size_t elemsize;
1172  uint32_t slice_base;
1173  size_t allocsize;
1174 };
1175 
1186 void starpu_vector_data_register(starpu_data_handle_t *handle, int home_node, uintptr_t ptr, uint32_t nx, size_t elemsize);
1187 
1192 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);
1193 
1199 void starpu_vector_ptr_register(starpu_data_handle_t handle, unsigned node, uintptr_t ptr, uintptr_t dev_handle, size_t offset);
1200 
1205 
1210 
1215 
1220 
1221 #if defined(STARPU_HAVE_STATEMENT_EXPRESSIONS) && defined(STARPU_DEBUG)
1222 #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.")
1223 #define STARPU_VECTOR_GET_PTR(interface) ({ STARPU_VECTOR_CHECK(interface); (((struct starpu_vector_interface *)(interface))->ptr); })
1224 #define STARPU_VECTOR_GET_DEV_HANDLE(interface) ({ STARPU_VECTOR_CHECK(interface); (((struct starpu_vector_interface *)(interface))->dev_handle); })
1225 #define STARPU_VECTOR_GET_OFFSET(interface) ({ STARPU_VECTOR_CHECK(interface); (((struct starpu_vector_interface *)(interface))->offset); })
1226 #define STARPU_VECTOR_GET_NX(interface) ({ STARPU_VECTOR_CHECK(interface); (((struct starpu_vector_interface *)(interface))->nx); })
1227 #define STARPU_VECTOR_GET_ELEMSIZE(interface) ({ STARPU_VECTOR_CHECK(interface); (((struct starpu_vector_interface *)(interface))->elemsize); })
1228 #define STARPU_VECTOR_GET_ALLOCSIZE(interface) ({ STARPU_VECTOR_CHECK(interface); (((struct starpu_vector_interface *)(interface))->allocsize); })
1229 #define STARPU_VECTOR_GET_SLICE_BASE(interface) ({ STARPU_VECTOR_CHECK(interface); (((struct starpu_vector_interface *)(interface))->slice_base); })
1230 #else
1231 
1236 #define STARPU_VECTOR_GET_PTR(interface) (((struct starpu_vector_interface *)(interface))->ptr)
1237 
1242 #define STARPU_VECTOR_GET_DEV_HANDLE(interface) (((struct starpu_vector_interface *)(interface))->dev_handle)
1243 
1247 #define STARPU_VECTOR_GET_OFFSET(interface) (((struct starpu_vector_interface *)(interface))->offset)
1248 
1252 #define STARPU_VECTOR_GET_NX(interface) (((struct starpu_vector_interface *)(interface))->nx)
1253 
1257 #define STARPU_VECTOR_GET_ELEMSIZE(interface) (((struct starpu_vector_interface *)(interface))->elemsize)
1258 
1262 #define STARPU_VECTOR_GET_ALLOCSIZE(interface) (((struct starpu_vector_interface *)(interface))->allocsize)
1263 
1267 #define STARPU_VECTOR_GET_SLICE_BASE(interface) (((struct starpu_vector_interface *)(interface))->slice_base)
1268 #endif
1269 
1274 #define STARPU_VECTOR_SET_NX(interface, newnx) do { \
1275  STARPU_VECTOR_CHECK(interface); \
1276  (((struct starpu_vector_interface *)(interface))->nx) = (newnx); \
1277 } while(0)
1278 
1286 extern struct starpu_data_interface_ops starpu_interface_variable_ops;
1287 
1293 {
1296  uintptr_t ptr;
1297  uintptr_t dev_handle;
1298  size_t offset;
1299  size_t elemsize;
1300 };
1301 
1313 void starpu_variable_data_register(starpu_data_handle_t *handle, int home_node, uintptr_t ptr, size_t size);
1314 
1320 void starpu_variable_ptr_register(starpu_data_handle_t handle, unsigned node, uintptr_t ptr, uintptr_t dev_handle, size_t offset);
1321 
1326 
1331 
1332 #if defined(STARPU_HAVE_STATEMENT_EXPRESSIONS) && defined(STARPU_DEBUG)
1333 #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.")
1334 #define STARPU_VARIABLE_GET_PTR(interface) ({ STARPU_VARIABLE_CHECK(interface); (((struct starpu_variable_interface *)(interface))->ptr) ; })
1335 #define STARPU_VARIABLE_GET_OFFSET(interface) ({ STARPU_VARIABLE_CHECK(interface); (((struct starpu_variable_interface *)(interface))->offset) ; })
1336 #define STARPU_VARIABLE_GET_ELEMSIZE(interface) ({ STARPU_VARIABLE_CHECK(interface); (((struct starpu_variable_interface *)(interface))->elemsize) ; })
1337 #define STARPU_VARIABLE_GET_DEV_HANDLE(interface) ({ STARPU_VARIABLE_CHECK(interface); (((struct starpu_variable_interface *)(interface))->ptr) ; })
1338 #else
1339 
1342 #define STARPU_VARIABLE_GET_PTR(interface) (((struct starpu_variable_interface *)(interface))->ptr)
1343 
1347 #define STARPU_VARIABLE_GET_OFFSET(interface) (((struct starpu_variable_interface *)(interface))->offset)
1348 
1351 #define STARPU_VARIABLE_GET_ELEMSIZE(interface) (((struct starpu_variable_interface *)(interface))->elemsize)
1352 
1358 #define STARPU_VARIABLE_GET_DEV_HANDLE(interface) (((struct starpu_variable_interface *)(interface))->ptr)
1359 #endif
1360 
1368 extern struct starpu_data_interface_ops starpu_interface_void_ops;
1369 
1379 
1387 extern struct starpu_data_interface_ops starpu_interface_csr_ops;
1388 
1394 {
1397  uint32_t nnz;
1398  uint32_t nrow;
1399  uintptr_t nzval;
1400  uint32_t *colind;
1401  uint32_t *rowptr;
1403  uint32_t firstentry;
1405  size_t elemsize;
1406 };
1407 
1411 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);
1412 
1417 uint32_t starpu_csr_get_nnz(starpu_data_handle_t handle);
1418 
1423 uint32_t starpu_csr_get_nrow(starpu_data_handle_t handle);
1424 
1430 
1436 
1442 
1448 
1454 
1459 #define STARPU_CSR_GET_NNZ(interface) (((struct starpu_csr_interface *)(interface))->nnz)
1460 
1464 #define STARPU_CSR_GET_NROW(interface) (((struct starpu_csr_interface *)(interface))->nrow)
1465 
1469 #define STARPU_CSR_GET_NZVAL(interface) (((struct starpu_csr_interface *)(interface))->nzval)
1470 
1475 #define STARPU_CSR_GET_NZVAL_DEV_HANDLE(interface) (((struct starpu_csr_interface *)(interface))->nnz)
1476 
1480 #define STARPU_CSR_GET_COLIND(interface) (((struct starpu_csr_interface *)(interface))->colind)
1481 
1486 #define STARPU_CSR_GET_COLIND_DEV_HANDLE(interface) (((struct starpu_csr_interface *)(interface))->colind)
1487 
1491 #define STARPU_CSR_GET_ROWPTR(interface) (((struct starpu_csr_interface *)(interface))->rowptr)
1492 
1497 #define STARPU_CSR_GET_ROWPTR_DEV_HANDLE(interface) (((struct starpu_csr_interface *)(interface))->rowptr)
1498 
1502 #define STARPU_CSR_GET_OFFSET 0
1503 
1507 #define STARPU_CSR_GET_FIRSTENTRY(interface) (((struct starpu_csr_interface *)(interface))->firstentry)
1508 
1512 #define STARPU_CSR_GET_ELEMSIZE(interface) (((struct starpu_csr_interface *)(interface))->elemsize)
1513 
1521 extern struct starpu_data_interface_ops starpu_interface_bcsr_ops;
1522 
1528 {
1531  uint32_t nnz;
1532  uint32_t nrow;
1534  uintptr_t nzval;
1535  uint32_t *colind;
1536  uint32_t *rowptr;
1547  uint32_t firstentry;
1549  uint32_t r;
1550  uint32_t c;
1552  size_t elemsize;
1553 };
1554 
1621 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);
1622 
1627 uint32_t starpu_bcsr_get_nnz(starpu_data_handle_t handle);
1628 
1634 
1640 
1646 
1652 
1658 
1662 uint32_t starpu_bcsr_get_r(starpu_data_handle_t handle);
1663 
1667 uint32_t starpu_bcsr_get_c(starpu_data_handle_t handle);
1668 
1674 
1679 #define STARPU_BCSR_GET_NNZ(interface) (((struct starpu_bcsr_interface *)(interface))->nnz)
1680 
1684 #define STARPU_BCSR_GET_NZVAL(interface) (((struct starpu_bcsr_interface *)(interface))->nzval)
1685 
1690 #define STARPU_BCSR_GET_NZVAL_DEV_HANDLE(interface) (((struct starpu_bcsr_interface *)(interface))->nnz)
1691 
1695 #define STARPU_BCSR_GET_COLIND(interface) (((struct starpu_bcsr_interface *)(interface))->colind)
1696 
1701 #define STARPU_BCSR_GET_COLIND_DEV_HANDLE(interface) (((struct starpu_bcsr_interface *)(interface))->colind)
1702 
1706 #define STARPU_BCSR_GET_ROWPTR(interface) (((struct starpu_bcsr_interface *)(interface))->rowptr)
1707 
1712 #define STARPU_BCSR_GET_ROWPTR_DEV_HANDLE(interface) (((struct starpu_bcsr_interface *)(interface))->rowptr)
1713 
1717 #define STARPU_BCSR_GET_OFFSET 0
1718 
1730 {
1731  size_t cpu_elemsize;
1735  size_t cuda_elemsize;
1738  size_t mic_elemsize;
1741 };
1742 
1744 {
1745  enum starpu_data_interface_id id;
1746 
1747  void *cpu_ptr;
1748  void *cuda_ptr;
1749  void *opencl_ptr;
1750  void *mic_ptr;
1751  uint32_t nx;
1753 };
1754 
1763 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);
1764 
1768 #define STARPU_MULTIFORMAT_GET_CPU_PTR(interface) (((struct starpu_multiformat_interface *)(interface))->cpu_ptr)
1769 
1772 #define STARPU_MULTIFORMAT_GET_CUDA_PTR(interface) (((struct starpu_multiformat_interface *)(interface))->cuda_ptr)
1773 
1776 #define STARPU_MULTIFORMAT_GET_OPENCL_PTR(interface) (((struct starpu_multiformat_interface *)(interface))->opencl_ptr)
1777 
1780 #define STARPU_MULTIFORMAT_GET_MIC_PTR(interface) (((struct starpu_multiformat_interface *)(interface))->mic_ptr)
1781 
1784 #define STARPU_MULTIFORMAT_GET_NX(interface) (((struct starpu_multiformat_interface *)(interface))->nx)
1785 
1790 #ifdef __cplusplus
1791 }
1792 #endif
1793 
1794 #endif /* __STARPU_DATA_INTERFACES_H__ */
starpu_data_interface_get_next_id
int starpu_data_interface_get_next_id(void)
starpu_block_get_local_ldy
uint32_t starpu_block_get_local_ldy(starpu_data_handle_t handle)
starpu_matrix_interface::ptr
uintptr_t ptr
Definition: starpu_data_interfaces.h:749
starpu_vector_data_register_allocsize
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)
starpu_coo_interface::values
uintptr_t values
Definition: starpu_data_interfaces.h:924
starpu_data_copy_methods::ram_to_opencl
int(* ram_to_opencl)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node)
Definition: starpu_data_interfaces.h:124
starpu_data_copy_methods::mpi_ms_to_mpi_ms
int(* mpi_ms_to_mpi_ms)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node)
Definition: starpu_data_interfaces.h:201
starpu_data_copy_methods::opencl_to_opencl_async
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:269
starpu_variable_interface::elemsize
size_t elemsize
Definition: starpu_data_interfaces.h:1299
starpu_data_copy_methods::ram_to_ram
int(* ram_to_ram)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node)
Definition: starpu_data_interfaces.h:110
starpu_matrix_get_allocsize
size_t starpu_matrix_get_allocsize(starpu_data_handle_t handle)
starpu_data_copy_methods::ram_to_mic
int(* ram_to_mic)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node)
Definition: starpu_data_interfaces.h:131
starpu_vector_interface::nx
uint32_t nx
Definition: starpu_data_interfaces.h:1170
starpu_data_copy_methods::ram_to_mic_async
int(* ram_to_mic_async)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node)
Definition: starpu_data_interfaces.h:314
STARPU_BLOCK_INTERFACE_ID
Definition: starpu_data_interfaces.h:353
starpu_variable_ptr_register
void starpu_variable_ptr_register(starpu_data_handle_t handle, unsigned node, uintptr_t ptr, uintptr_t dev_handle, size_t offset)
starpu_malloc_on_node_flags
uintptr_t starpu_malloc_on_node_flags(unsigned dst_node, size_t size, int flags)
starpu_vector_interface::slice_base
uint32_t slice_base
Definition: starpu_data_interfaces.h:1172
starpu_data_copy_methods::ram_to_opencl_async
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:249
starpu_bcsr_get_nrow
uint32_t starpu_bcsr_get_nrow(starpu_data_handle_t handle)
starpu_bcsr_get_local_colind
uint32_t * starpu_bcsr_get_local_colind(starpu_data_handle_t handle)
starpu_data_interface_ops::copy_methods
const struct starpu_data_copy_methods * copy_methods
Definition: starpu_data_interfaces.h:419
starpu_vector_get_allocsize
size_t starpu_vector_get_allocsize(starpu_data_handle_t handle)
starpu_data_get_alloc_size
size_t starpu_data_get_alloc_size(starpu_data_handle_t handle)
starpu_data_interface_ops::allocate_data_on_node
starpu_ssize_t(* allocate_data_on_node)(void *data_interface, unsigned node)
Definition: starpu_data_interfaces.h:395
starpu_data_register
void starpu_data_register(starpu_data_handle_t *handleptr, int home_node, void *data_interface, struct starpu_data_interface_ops *ops)
starpu_data_interface_ops::display
void(* display)(starpu_data_handle_t handle, FILE *f)
Definition: starpu_data_interfaces.h:493
starpu_block_interface::ldz
uint32_t ldz
Definition: starpu_data_interfaces.h:1023
starpu_data_interface_ops::pointer_is_inside
int(* pointer_is_inside)(void *data_interface, unsigned node, void *ptr)
Definition: starpu_data_interfaces.h:443
starpu_csr_interface::elemsize
size_t elemsize
Definition: starpu_data_interfaces.h:1405
STARPU_CSR_INTERFACE_ID
Definition: starpu_data_interfaces.h:355
starpu_data_copy_methods::cuda_to_cuda_async
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:232
starpu_data_copy_methods::cuda_to_opencl
int(* cuda_to_opencl)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node)
Definition: starpu_data_interfaces.h:152
starpu_variable_get_elemsize
size_t starpu_variable_get_elemsize(starpu_data_handle_t handle)
starpu_matrix_interface::elemsize
size_t elemsize
Definition: starpu_data_interfaces.h:758
starpu_csr_get_local_nzval
uintptr_t starpu_csr_get_local_nzval(starpu_data_handle_t handle)
starpu_interface_start_driver_copy_async
void starpu_interface_start_driver_copy_async(unsigned src_node, unsigned dst_node, double *start)
starpu_bcsr_interface::nzval
uintptr_t nzval
Definition: starpu_data_interfaces.h:1534
starpu_data_copy_methods::cuda_to_ram_async
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:222
starpu_void_data_register
void starpu_void_data_register(starpu_data_handle_t *handle)
starpu_data_pointer_is_inside
int starpu_data_pointer_is_inside(starpu_data_handle_t handle, unsigned node, void *ptr)
starpu_block_get_nx
uint32_t starpu_block_get_nx(starpu_data_handle_t handle)
STARPU_VOID_INTERFACE_ID
Definition: starpu_data_interfaces.h:358
starpu_data_interface_ops::dontcache
char dontcache
Definition: starpu_data_interfaces.h:524
starpu_coo_interface::nx
uint32_t nx
Definition: starpu_data_interfaces.h:925
starpu_data_interface_ops::unpack_data
int(* unpack_data)(starpu_data_handle_t handle, unsigned node, void *ptr, size_t count)
Definition: starpu_data_interfaces.h:553
starpu_bcsr_get_c
uint32_t starpu_bcsr_get_c(starpu_data_handle_t handle)
starpu_variable_get_local_ptr
uintptr_t starpu_variable_get_local_ptr(starpu_data_handle_t handle)
starpu_data_copy_methods::ram_to_cuda_async
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:212
starpu_bcsr_interface::rowptr
uint32_t * rowptr
Definition: starpu_data_interfaces.h:1536
starpu_coo_interface::columns
uint32_t * columns
Definition: starpu_data_interfaces.h:922
starpu_data_copy_methods
Definition: starpu_data_interfaces.h:94
starpu_vector_interface::dev_handle
uintptr_t dev_handle
Definition: starpu_data_interfaces.h:1168
starpu_coo_data_register
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)
starpu_block_interface::ldy
uint32_t ldy
Definition: starpu_data_interfaces.h:1022
starpu_multiformat_data_interface_ops::cpu_elemsize
size_t cpu_elemsize
Definition: starpu_data_interfaces.h:1731
starpu_csr_interface::nrow
uint32_t nrow
Definition: starpu_data_interfaces.h:1398
starpu_data_get_size
size_t starpu_data_get_size(starpu_data_handle_t handle)
starpu_data_copy_methods::ram_to_mpi_ms
int(* ram_to_mpi_ms)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node)
Definition: starpu_data_interfaces.h:187
starpu_coo_interface::n_values
uint32_t n_values
Definition: starpu_data_interfaces.h:927
starpu_coo_interface::id
enum starpu_data_interface_id id
Definition: starpu_data_interfaces.h:920
starpu_vector_interface::id
enum starpu_data_interface_id id
Definition: starpu_data_interfaces.h:1165
starpu_csr_interface::nnz
uint32_t nnz
Definition: starpu_data_interfaces.h:1397
starpu_multiformat_data_interface_ops::cuda_to_cpu_cl
struct starpu_codelet * cuda_to_cpu_cl
Definition: starpu_data_interfaces.h:1737
starpu_bcsr_interface::firstentry
uint32_t firstentry
Definition: starpu_data_interfaces.h:1547
starpu_coo_interface::elemsize
size_t elemsize
Definition: starpu_data_interfaces.h:928
starpu_coo_interface::rows
uint32_t * rows
Definition: starpu_data_interfaces.h:923
starpu_csr_data_register
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)
starpu_data_interface_ops
Definition: starpu_data_interfaces.h:367
starpu_data_pack
int starpu_data_pack(starpu_data_handle_t handle, void **ptr, starpu_ssize_t *count)
starpu_data_interface_ops::free_data_on_node
void(* free_data_on_node)(void *data_interface, unsigned node)
Definition: starpu_data_interfaces.h:402
starpu_variable_interface
Definition: starpu_data_interfaces.h:1292
starpu_codelet
Definition: starpu_task.h:250
starpu_vector_interface::allocsize
size_t allocsize
Definition: starpu_data_interfaces.h:1173
starpu_bcsr_interface::nnz
uint32_t nnz
Definition: starpu_data_interfaces.h:1531
starpu_block_interface
Definition: starpu_data_interfaces.h:1012
starpu_block_ptr_register
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)
starpu_matrix_get_local_ptr
uintptr_t starpu_matrix_get_local_ptr(starpu_data_handle_t handle)
starpu_bcsr_interface::nrow
uint32_t nrow
Definition: starpu_data_interfaces.h:1532
starpu_bcsr_interface::id
enum starpu_data_interface_id id
Definition: starpu_data_interfaces.h:1529
starpu_data_interface_id
starpu_data_interface_id
Definition: starpu_data_interfaces.h:349
starpu_bcsr_get_elemsize
size_t starpu_bcsr_get_elemsize(starpu_data_handle_t handle)
starpu_bcsr_get_local_rowptr
uint32_t * starpu_bcsr_get_local_rowptr(starpu_data_handle_t handle)
STARPU_BCSR_INTERFACE_ID
Definition: starpu_data_interfaces.h:356
starpu_data_copy_methods::any_to_any
int(* any_to_any)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node, void *async_data)
Definition: starpu_data_interfaces.h:343
STARPU_VECTOR_INTERFACE_ID
Definition: starpu_data_interfaces.h:354
starpu_data_copy_methods::mic_to_ram
int(* mic_to_ram)(void *src_interface, unsigned srd_node, void *dst_interface, unsigned dst_node)
Definition: starpu_data_interfaces.h:180
starpu_multiformat_data_interface_ops::cpu_to_cuda_cl
struct starpu_codelet * cpu_to_cuda_cl
Definition: starpu_data_interfaces.h:1736
starpu_csr_interface::nzval
uintptr_t nzval
Definition: starpu_data_interfaces.h:1399
starpu_bcsr_interface
Definition: starpu_data_interfaces.h:1527
starpu_data_handle_to_pointer
void * starpu_data_handle_to_pointer(starpu_data_handle_t handle, unsigned node)
starpu_block_get_local_ptr
uintptr_t starpu_block_get_local_ptr(starpu_data_handle_t handle)
starpu_data_handle_t
struct _starpu_data_state * starpu_data_handle_t
Definition: starpu_data.h:46
starpu_csr_get_local_rowptr
uint32_t * starpu_csr_get_local_rowptr(starpu_data_handle_t handle)
starpu_data_copy_methods::cuda_to_ram
int(* cuda_to_ram)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node)
Definition: starpu_data_interfaces.h:138
starpu_multiformat_data_interface_ops::cpu_to_opencl_cl
struct starpu_codelet * cpu_to_opencl_cl
Definition: starpu_data_interfaces.h:1733
starpu_free_on_node
void starpu_free_on_node(unsigned dst_node, uintptr_t addr, size_t size)
starpu_data_copy_methods::opencl_to_opencl
int(* opencl_to_opencl)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node)
Definition: starpu_data_interfaces.h:173
starpu_csr_get_nrow
uint32_t starpu_csr_get_nrow(starpu_data_handle_t handle)
starpu.h
starpu_matrix_interface::ld
uint32_t ld
Definition: starpu_data_interfaces.h:754
starpu_data_interface_ops::get_alloc_size
size_t(* get_alloc_size)(starpu_data_handle_t handle)
Definition: starpu_data_interfaces.h:456
STARPU_MAX_INTERFACE_ID
Definition: starpu_data_interfaces.h:361
starpu_csr_interface::rowptr
uint32_t * rowptr
Definition: starpu_data_interfaces.h:1401
starpu_multiformat_data_interface_ops::cuda_elemsize
size_t cuda_elemsize
Definition: starpu_data_interfaces.h:1735
starpu_data_copy_methods::opencl_to_cuda
int(* opencl_to_cuda)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node)
Definition: starpu_data_interfaces.h:166
starpu_block_interface::ny
uint32_t ny
Definition: starpu_data_interfaces.h:1020
starpu_multiformat_data_interface_ops::mic_to_cpu_cl
struct starpu_codelet * mic_to_cpu_cl
Definition: starpu_data_interfaces.h:1740
starpu_vector_get_nx
uint32_t starpu_vector_get_nx(starpu_data_handle_t handle)
starpu_variable_interface::ptr
uintptr_t ptr
Definition: starpu_data_interfaces.h:1296
starpu_malloc_on_node_set_default_flags
void starpu_malloc_on_node_set_default_flags(unsigned node, int flags)
starpu_block_interface::elemsize
size_t elemsize
Definition: starpu_data_interfaces.h:1024
starpu_data_interface_ops::footprint
uint32_t(* footprint)(starpu_data_handle_t handle)
Definition: starpu_data_interfaces.h:463
starpu_matrix_interface::dev_handle
uintptr_t dev_handle
Definition: starpu_data_interfaces.h:750
STARPU_MULTIFORMAT_INTERFACE_ID
Definition: starpu_data_interfaces.h:359
starpu_data_interface_ops::alloc_footprint
uint32_t(* alloc_footprint)(starpu_data_handle_t handle)
Definition: starpu_data_interfaces.h:471
starpu_free_on_node_flags
void starpu_free_on_node_flags(unsigned dst_node, uintptr_t addr, size_t size, int flags)
starpu_block_get_elemsize
size_t starpu_block_get_elemsize(starpu_data_handle_t handle)
starpu_data_ptr_register
void starpu_data_ptr_register(starpu_data_handle_t handle, unsigned node)
starpu_data_interface_ops::interfaceid
enum starpu_data_interface_id interfaceid
Definition: starpu_data_interfaces.h:506
starpu_data_unpack
int starpu_data_unpack(starpu_data_handle_t handle, void *ptr, size_t count)
starpu_variable_interface::id
enum starpu_data_interface_id id
Definition: starpu_data_interfaces.h:1294
starpu_data_interface_ops::name
char * name
Definition: starpu_data_interfaces.h:558
starpu_matrix_get_ny
uint32_t starpu_matrix_get_ny(starpu_data_handle_t handle)
starpu_interface_copy
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)
starpu_bcsr_interface::c
uint32_t c
Definition: starpu_data_interfaces.h:1550
starpu_data_copy_methods::mpi_ms_to_ram
int(* mpi_ms_to_ram)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node)
Definition: starpu_data_interfaces.h:194
starpu_csr_interface::id
enum starpu_data_interface_id id
Definition: starpu_data_interfaces.h:1395
starpu_coo_interface::ny
uint32_t ny
Definition: starpu_data_interfaces.h:926
starpu_matrix_ptr_register
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)
starpu_data_get_local_ptr
void * starpu_data_get_local_ptr(starpu_data_handle_t handle)
starpu_data_copy_methods::mic_to_ram_async
int(* mic_to_ram_async)(void *src_interface, unsigned srd_node, void *dst_interface, unsigned dst_node)
Definition: starpu_data_interfaces.h:324
starpu_variable_interface::offset
size_t offset
Definition: starpu_data_interfaces.h:1298
starpu_data_copy_methods::opencl_to_ram_async
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:259
starpu_vector_ptr_register
void starpu_vector_ptr_register(starpu_data_handle_t handle, unsigned node, uintptr_t ptr, uintptr_t dev_handle, size_t offset)
starpu_vector_data_register
void starpu_vector_data_register(starpu_data_handle_t *handle, int home_node, uintptr_t ptr, uint32_t nx, size_t elemsize)
starpu_block_interface::dev_handle
uintptr_t dev_handle
Definition: starpu_data_interfaces.h:1017
starpu_data_interface_ops::compare
int(* compare)(void *data_interface_a, void *data_interface_b)
Definition: starpu_data_interfaces.h:478
starpu_data_get_interface_id
enum starpu_data_interface_id starpu_data_get_interface_id(starpu_data_handle_t handle)
starpu_matrix_get_elemsize
size_t starpu_matrix_get_elemsize(starpu_data_handle_t handle)
starpu_matrix_interface::offset
size_t offset
Definition: starpu_data_interfaces.h:751
starpu_multiformat_data_interface_ops::opencl_to_cpu_cl
struct starpu_codelet * opencl_to_cpu_cl
Definition: starpu_data_interfaces.h:1734
starpu_csr_get_local_colind
uint32_t * starpu_csr_get_local_colind(starpu_data_handle_t handle)
STARPU_UNKNOWN_INTERFACE_ID
Definition: starpu_data_interfaces.h:351
starpu_matrix_interface::ny
uint32_t ny
Definition: starpu_data_interfaces.h:753
starpu_bcsr_get_nnz
uint32_t starpu_bcsr_get_nnz(starpu_data_handle_t handle)
starpu_interface_data_copy
void starpu_interface_data_copy(unsigned src_node, unsigned dst_node, size_t size)
starpu_interface_end_driver_copy_async
void starpu_interface_end_driver_copy_async(unsigned src_node, unsigned dst_node, double start)
starpu_vector_interface::elemsize
size_t elemsize
Definition: starpu_data_interfaces.h:1171
starpu_data_interface_ops::init
void(* init)(void *data_interface)
Definition: starpu_data_interfaces.h:409
starpu_block_interface::nz
uint32_t nz
Definition: starpu_data_interfaces.h:1021
starpu_data_lookup
starpu_data_handle_t starpu_data_lookup(const void *ptr)
starpu_csr_get_nnz
uint32_t starpu_csr_get_nnz(starpu_data_handle_t handle)
starpu_vector_get_local_ptr
uintptr_t starpu_vector_get_local_ptr(starpu_data_handle_t handle)
starpu_matrix_interface::nx
uint32_t nx
Definition: starpu_data_interfaces.h:752
starpu_matrix_interface::allocsize
size_t allocsize
Definition: starpu_data_interfaces.h:759
starpu_variable_data_register
void starpu_variable_data_register(starpu_data_handle_t *handle, int home_node, uintptr_t ptr, size_t size)
starpu_bcsr_interface::elemsize
size_t elemsize
Definition: starpu_data_interfaces.h:1552
starpu_data_get_interface_on_node
void * starpu_data_get_interface_on_node(starpu_data_handle_t handle, unsigned memory_node)
STARPU_MATRIX_INTERFACE_ID
Definition: starpu_data_interfaces.h:352
starpu_block_interface::offset
size_t offset
Definition: starpu_data_interfaces.h:1018
starpu_matrix_interface
Definition: starpu_data_interfaces.h:746
starpu_multiformat_data_register
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)
starpu_csr_get_firstentry
uint32_t starpu_csr_get_firstentry(starpu_data_handle_t handle)
starpu_data_interface_ops::describe
starpu_ssize_t(* describe)(void *data_interface, char *buf, size_t size)
Definition: starpu_data_interfaces.h:501
starpu_csr_get_elemsize
size_t starpu_csr_get_elemsize(starpu_data_handle_t handle)
starpu_data_register_same
void starpu_data_register_same(starpu_data_handle_t *handledst, starpu_data_handle_t handlesrc)
starpu_vector_interface::offset
size_t offset
Definition: starpu_data_interfaces.h:1169
starpu_bcsr_get_local_nzval
uintptr_t starpu_bcsr_get_local_nzval(starpu_data_handle_t handle)
starpu_vector_get_elemsize
size_t starpu_vector_get_elemsize(starpu_data_handle_t handle)
starpu_variable_interface::dev_handle
uintptr_t dev_handle
Definition: starpu_data_interfaces.h:1297
starpu_data_interface_ops::pack_data
int(* pack_data)(starpu_data_handle_t handle, unsigned node, void **ptr, starpu_ssize_t *count)
Definition: starpu_data_interfaces.h:546
starpu_multiformat_interface
Definition: starpu_data_interfaces.h:1743
starpu_data_interface_ops::get_size
size_t(* get_size)(starpu_data_handle_t handle)
Definition: starpu_data_interfaces.h:448
starpu_bcsr_interface::colind
uint32_t * colind
Definition: starpu_data_interfaces.h:1535
starpu_block_interface::ptr
uintptr_t ptr
Definition: starpu_data_interfaces.h:1016
starpu_matrix_data_register
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)
starpu_block_data_register
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)
starpu_csr_interface
Definition: starpu_data_interfaces.h:1393
STARPU_VARIABLE_INTERFACE_ID
Definition: starpu_data_interfaces.h:357
starpu_bcsr_get_firstentry
uint32_t starpu_bcsr_get_firstentry(starpu_data_handle_t handle)
starpu_bcsr_get_r
uint32_t starpu_bcsr_get_r(starpu_data_handle_t handle)
starpu_data_copy_methods::opencl_to_ram
int(* opencl_to_ram)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node)
Definition: starpu_data_interfaces.h:159
starpu_block_get_local_ldz
uint32_t starpu_block_get_local_ldz(starpu_data_handle_t handle)
starpu_block_get_ny
uint32_t starpu_block_get_ny(starpu_data_handle_t handle)
starpu_coo_interface
Definition: starpu_data_interfaces.h:918
starpu_vector_interface::ptr
uintptr_t ptr
Definition: starpu_data_interfaces.h:1167
starpu_multiformat_data_interface_ops::opencl_elemsize
size_t opencl_elemsize
Definition: starpu_data_interfaces.h:1732
starpu_matrix_interface::id
enum starpu_data_interface_id id
Definition: starpu_data_interfaces.h:748
starpu_data_copy_methods::ram_to_mpi_ms_async
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:284
starpu_vector_interface
Definition: starpu_data_interfaces.h:1163
starpu_multiformat_data_interface_ops::mic_elemsize
size_t mic_elemsize
Definition: starpu_data_interfaces.h:1738
starpu_data_copy_methods::mpi_ms_to_mpi_ms_async
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:304
starpu_block_get_nz
uint32_t starpu_block_get_nz(starpu_data_handle_t handle)
starpu_csr_interface::firstentry
uint32_t firstentry
Definition: starpu_data_interfaces.h:1403
starpu_multiformat_data_interface_ops
Definition: starpu_data_interfaces.h:1729
starpu_block_interface::nx
uint32_t nx
Definition: starpu_data_interfaces.h:1019
starpu_bcsr_interface::r
uint32_t r
Definition: starpu_data_interfaces.h:1549
starpu_data_interface_ops::register_data_handle
void(* register_data_handle)(starpu_data_handle_t handle, unsigned home_node, void *data_interface)
Definition: starpu_data_interfaces.h:380
starpu_matrix_data_register_allocsize
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)
starpu_data_copy_methods::ram_to_cuda
int(* ram_to_cuda)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node)
Definition: starpu_data_interfaces.h:117
STARPU_COO_INTERFACE_ID
Definition: starpu_data_interfaces.h:360
starpu_data_interface_ops::interface_size
size_t interface_size
Definition: starpu_data_interfaces.h:511
starpu_bcsr_data_register
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)
starpu_malloc_on_node
uintptr_t starpu_malloc_on_node(unsigned dst_node, size_t size)
starpu_block_interface::id
enum starpu_data_interface_id id
Definition: starpu_data_interfaces.h:1014
starpu_data_copy_methods::cuda_to_cuda
int(* cuda_to_cuda)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node)
Definition: starpu_data_interfaces.h:145
starpu_data_copy_methods::mpi_ms_to_ram_async
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:294
starpu_data_copy_methods::can_copy
int(* can_copy)(void *src_interface, unsigned src_node, void *dst_interface, unsigned dst_node, unsigned handling_node)
Definition: starpu_data_interfaces.h:103
starpu_data_interface_ops::alloc_compare
int(* alloc_compare)(void *data_interface_a, void *data_interface_b)
Definition: starpu_data_interfaces.h:487
starpu_multiformat_data_interface_ops::cpu_to_mic_cl
struct starpu_codelet * cpu_to_mic_cl
Definition: starpu_data_interfaces.h:1739
starpu_matrix_get_nx
uint32_t starpu_matrix_get_nx(starpu_data_handle_t handle)
starpu_csr_interface::colind
uint32_t * colind
Definition: starpu_data_interfaces.h:1400
starpu_matrix_get_local_ld
uint32_t starpu_matrix_get_local_ld(starpu_data_handle_t handle)