mxnet
c_api.h
Go to the documentation of this file.
1 /*
2  * Licensed to the Apache Software Foundation (ASF) under one
3  * or more contributor license agreements. See the NOTICE file
4  * distributed with this work for additional information
5  * regarding copyright ownership. The ASF licenses this file
6  * to you under the Apache License, Version 2.0 (the
7  * "License"); you may not use this file except in compliance
8  * with the License. You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing,
13  * software distributed under the License is distributed on an
14  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15  * KIND, either express or implied. See the License for the
16  * specific language governing permissions and limitations
17  * under the License.
18  */
19 
25 #ifndef MXNET_C_API_H_
26 #define MXNET_C_API_H_
27 
29 #ifdef __cplusplus
30 extern "C" {
31 #endif // __cplusplus
32 
34 #ifdef __cplusplus
35 #define DEFAULT(x) = x
36 #else
37 #define DEFAULT(x)
38 #endif // __cplusplus
39 
40 #include <stdint.h>
41 
42 #include <stdint.h>
43 #include <stddef.h>
44 #include <stdbool.h>
45 
47 #ifdef _WIN32
48 #ifdef MXNET_EXPORTS
49 #define MXNET_DLL __declspec(dllexport)
50 #else
51 #define MXNET_DLL __declspec(dllimport)
52 #endif
53 #else
54 #define MXNET_DLL
55 #endif
56 
58 typedef uint32_t mx_uint;
60 typedef float mx_float;
62 typedef int64_t dim_t;
63 // all the handles are simply void *
64 // will be casted internally to specific pointers types
65 // these typedefs are mainly used for readablity reasons
67 typedef void *NDArrayHandle;
69 typedef const void *FunctionHandle;
71 typedef void *AtomicSymbolCreator;
73 typedef void *CachedOpHandle;
75 typedef void *SymbolHandle;
77 typedef void *AtomicSymbolHandle;
79 typedef void *ExecutorHandle;
81 typedef void *DataIterCreator;
83 typedef void *DataIterHandle;
85 typedef void *KVStoreHandle;
87 typedef void *RecordIOHandle;
89 typedef void *RtcHandle;
91 typedef void *CudaModuleHandle;
93 typedef void *CudaKernelHandle;
95 typedef void *ProfileHandle;
97 typedef void *DLManagedTensorHandle;
99 typedef const void *ContextHandle;
101 typedef const void *EngineFnPropertyHandle;
103 typedef void *EngineVarHandle;
104 
106 typedef void (*EngineAsyncFunc)(void*, void*, void*);
108 typedef void (*EngineSyncFunc)(void*, void*);
110 typedef void (*EngineFuncParamDeleter)(void*);
111 typedef void (*ExecutorMonitorCallback)(const char*,
113  void*);
115 typedef void (*CachedOpMonitorCallback)(const char*,
116  const char*,
117  NDArrayHandle);
118 
119 
120 struct NativeOpInfo {
121  void (*forward)(int, float**, int*, unsigned**, int*, void*);
122  void (*backward)(int, float**, int*, unsigned**, int*, void*);
123  void (*infer_shape)(int, int*, unsigned**, void*);
124  void (*list_outputs)(char***, void*);
125  void (*list_arguments)(char***, void*);
126  // all functions also pass a payload void* pointer
127  void* p_forward;
128  void* p_backward;
132 };
133 
135  bool (*forward)(int, void**, int*, void*);
136  bool (*backward)(int, void**, int*, void*);
137  bool (*infer_shape)(int, int*, unsigned**, void*);
138  bool (*list_outputs)(char***, void*);
139  bool (*list_arguments)(char***, void*);
140  bool (*declare_backward_dependency)(const int*, const int*, const int*,
141  int*, int**, void*);
142  // all functions also pass a payload void* pointer
143  void* p_forward;
144  void* p_backward;
149 };
150 
151 typedef int (*MXGenericCallback)(void);
152 
155  int (**callbacks)(void);
156  void **contexts;
157 };
158 
159 struct LibFeature {
160  const char* name;
161  bool enabled;
162 };
163 
168 };
169 
181 };
182 
183 
184 typedef int (*CustomOpFBFunc)(int /*size*/, void** /*ptrs*/, int* /*tags*/,
185  const int* /*reqs*/, const int /*is_train*/,
186  void* /*state*/);
187 typedef int (*CustomOpDelFunc)(void* /*state*/);
188 typedef int (*CustomOpListFunc)(char*** /*args*/, void* /*state*/);
189 typedef int (*CustomOpInferShapeFunc)(int /*num_input*/, int* /*ndims*/,
190  int** /*shapes*/, void* /*state*/);
191 typedef int (*CustomOpInferStorageTypeFunc)(int /*num_input*/, int* /*stypes*/, void* /*state*/);
192 typedef int (*CustomOpBackwardInferStorageTypeFunc)(int /*num_input*/,
193  int * /*stypes*/,
194  int * /*tags*/,
195  void * /*state*/);
196 typedef int (*CustomOpInferTypeFunc)(int /*num_input*/, int* /*types*/, void* /*state*/);
197 typedef int (*CustomOpBwdDepFunc)(const int* /*out_grad*/, const int* /*in_data*/,
198  const int* /*out_data*/, int* /*num_deps*/,
199  int** /*rdeps*/, void* /*state*/);
200 typedef int (*CustomOpCreateFunc)(const char* /*ctx*/, int /*num_inputs*/,
201  unsigned** /*shapes*/, const int* /*ndims*/,
202  const int* /*dtypes*/, struct MXCallbackList* /*ret*/,
203  void* /*state*/);
204 typedef int (*CustomOpPropCreator)(const char* /*op_type*/, const int /*num_kwargs*/,
205  const char** /*keys*/, const char** /*values*/,
206  struct MXCallbackList* /*ret*/);
207 
208 
212 };
213 
214 typedef int (*CustomFunctionBwdFunc)(int /*num_ograds*/, int /*num_igrads*/, void** /*ptrs*/,
215  const int* /*reqs*/, const int /*is_train*/,
216  void* /*state*/);
217 typedef int (*CustomFunctionDelFunc)(void* /*state*/);
218 
228 MXNET_DLL const char *MXGetLastError();
229 
230 //-------------------------------------
231 // Part 0: Global State setups
232 //-------------------------------------
233 
240 MXNET_DLL int MXLoadLib(const char *path, unsigned verbose);
241 
248 MXNET_DLL int MXLibInfoFeatures(const struct LibFeature **libFeature, size_t *size);
249 
255 MXNET_DLL int MXRandomSeed(int seed);
256 
262 MXNET_DLL int MXRandomSeedContext(int seed, int dev_type, int dev_id);
263 
272 
281 MXNET_DLL int MXSetProcessProfilerConfig(int num_params, const char* const* keys,
282  const char* const* vals,
283  KVStoreHandle kvstoreHandle);
284 
292 MXNET_DLL int MXSetProfilerConfig(int num_params, const char* const* keys, const char* const* vals);
293 
305 MXNET_DLL int MXSetProcessProfilerState(int state, int profile_process,
306  KVStoreHandle kvStoreHandle);
307 
315 MXNET_DLL int MXSetProfilerState(int state);
316 
326 MXNET_DLL int MXDumpProcessProfile(int finished, int profile_process, KVStoreHandle kvStoreHandle);
327 
328 
334 MXNET_DLL int MXDumpProfile(int finished);
335 
336 
344 MXNET_DLL int MXAggregateProfileStatsPrint(const char **out_str, int reset);
345 
357 MXNET_DLL int MXAggregateProfileStatsPrintEx(const char **out_str, int reset, int format,
358  int sort_by, int ascending);
359 
368 MXNET_DLL int MXProcessProfilePause(int paused, int profile_process, KVStoreHandle kvStoreHandle);
369 
376 MXNET_DLL int MXProfilePause(int paused);
377 
384 MXNET_DLL int MXProfileCreateDomain(const char *domain, ProfileHandle *out);
385 
393 MXNET_DLL int MXProfileCreateTask(ProfileHandle domain,
394  const char *task_name,
395  ProfileHandle *out);
396 
404 MXNET_DLL int MXProfileCreateFrame(ProfileHandle domain,
405  const char *frame_name,
406  ProfileHandle *out);
407 
414 MXNET_DLL int MXProfileCreateEvent(const char *event_name, ProfileHandle *out);
415 
423 MXNET_DLL int MXProfileCreateCounter(ProfileHandle domain,
424  const char *counter_name,
425  ProfileHandle *out);
426 
432 MXNET_DLL int MXProfileDestroyHandle(ProfileHandle frame_handle);
433 
439 MXNET_DLL int MXProfileDurationStart(ProfileHandle duration_handle);
440 
446 MXNET_DLL int MXProfileDurationStop(ProfileHandle duration_handle);
447 
454 MXNET_DLL int MXProfileSetCounter(ProfileHandle counter_handle, uint64_t value);
455 
462 MXNET_DLL int MXProfileAdjustCounter(ProfileHandle counter_handle, int64_t value);
463 
471 MXNET_DLL int MXProfileSetMarker(ProfileHandle domain,
472  const char *instant_marker_name,
473  const char *scope);
474 
480 MXNET_DLL int MXSetNumOMPThreads(int thread_num);
481 
487 MXNET_DLL int MXEngineSetBulkSize(int bulk_size, int* prev_bulk_size);
488 
494 MXNET_DLL int MXGetGPUCount(int* out);
495 
504 MXNET_DLL int MXGetGPUMemoryInformation(int dev, int *free_mem, int *total_mem);
505 
513 MXNET_DLL int MXGetGPUMemoryInformation64(int dev, uint64_t *free_mem, uint64_t *total_mem);
514 
520 MXNET_DLL int MXGetVersion(int *out);
521 
527 #if MXNET_USE_TVM_OP
528 MXNET_DLL int MXLoadTVMOp(const char *libpath);
529 
530 struct OtherOptionEntity {
531  int val;
532 };
533 
534 struct OtherOptionSpace {
535  OtherOptionEntity* entities;
536  int entities_size;
537 };
538 
539 struct ConfigSpace {
540  int entity_map_size;
541  char** entity_map_key;
542  OtherOptionEntity* entity_map_val;
543  int space_map_size;
544  char** space_map_key;
545  OtherOptionSpace* space_map_val;
546 };
547 
548 typedef struct ConfigSpaces {
549  int spaces_size;
550  char** spaces_key;
551  ConfigSpace* spaces_val;
552 } ConfigSpaces;
553 
554 MXNET_DLL int MXLoadTVMConfig(ConfigSpaces config);
555 #endif // MXNET_USE_TVM_OP
556 
557 
558 //-------------------------------------
559 // Part 1: NDArray creation and deletion
560 //-------------------------------------
568 MXNET_DLL int MXNDArrayCreateNone(NDArrayHandle *out);
580 MXNET_DLL int MXNDArrayCreate(const uint32_t *shape,
581  uint32_t ndim,
582  int dev_type,
583  int dev_id,
584  int delay_alloc,
585  NDArrayHandle *out);
586 
601 MXNET_DLL int MXNDArrayCreateEx(const uint32_t *shape,
602  uint32_t ndim,
603  int dev_type,
604  int dev_id,
605  int delay_alloc,
606  int dtype,
607  NDArrayHandle *out);
608 
623 MXNET_DLL int MXNDArrayCreateEx64(const int64_t *shape,
624  int ndim,
625  int dev_type,
626  int dev_id,
627  int delay_alloc,
628  int dtype,
629  NDArrayHandle *out);
630 
650 MXNET_DLL int MXNDArrayCreateSparseEx(int storage_type,
651  const uint32_t *shape,
652  uint32_t ndim,
653  int dev_type,
654  int dev_id,
655  int delay_alloc,
656  int dtype,
657  uint32_t num_aux,
658  int *aux_type,
659  uint32_t *aux_ndims,
660  const uint32_t *aux_shape,
661  NDArrayHandle *out);
662 
682 MXNET_DLL int MXNDArrayCreateSparseEx64(int storage_type,
683  const int64_t *shape,
684  int ndim,
685  int dev_type,
686  int dev_id,
687  int delay_alloc,
688  int dtype,
689  uint32_t num_aux,
690  int *aux_type,
691  int *aux_ndims,
692  const int64_t *aux_shape,
693  NDArrayHandle *out);
694 
702 MXNET_DLL int MXNDArrayLoadFromRawBytes(const void *buf,
703  size_t size,
704  NDArrayHandle *out);
712 MXNET_DLL int MXNDArraySaveRawBytes(NDArrayHandle handle,
713  size_t *out_size,
714  const char **out_buf);
723 MXNET_DLL int MXNDArraySave(const char* fname,
724  uint32_t num_args,
725  NDArrayHandle* args,
726  const char** keys);
736 MXNET_DLL int MXNDArrayLoad(const char* fname,
737  uint32_t *out_size,
738  NDArrayHandle** out_arr,
739  uint32_t *out_name_size,
740  const char*** out_names);
741 
756 MXNET_DLL int MXNDArrayLoadFromBuffer(const void *ndarray_buffer,
757  size_t size,
758  uint32_t *out_size,
759  NDArrayHandle** out_arr,
760  uint32_t *out_name_size,
761  const char*** out_names);
762 
774 MXNET_DLL int MXNDArraySyncCopyFromCPU(NDArrayHandle handle,
775  const void *data,
776  size_t size);
788 MXNET_DLL int MXNDArraySyncCopyToCPU(NDArrayHandle handle,
789  void *data,
790  size_t size);
791 
799 MXNET_DLL int MXNDArraySyncCopyFromNDArray(NDArrayHandle handle_dst,
800  const NDArrayHandle handle_src,
801  const int i);
802 
808 MXNET_DLL int MXNDArraySyncCheckFormat(NDArrayHandle handle, const bool full_check);
809 
816 MXNET_DLL int MXNDArrayWaitToRead(NDArrayHandle handle);
817 
824 MXNET_DLL int MXNDArrayWaitToWrite(NDArrayHandle handle);
825 
832 
838 MXNET_DLL int MXNDArrayFree(NDArrayHandle handle);
839 
850 MXNET_DLL int MXNDArraySlice(NDArrayHandle handle,
851  uint32_t slice_begin,
852  uint32_t slice_end,
853  NDArrayHandle *out);
854 
865 MXNET_DLL int MXNDArraySlice64(NDArrayHandle handle,
866  int64_t slice_begin,
867  int64_t slice_end,
868  NDArrayHandle *out);
869 
879 MXNET_DLL int MXNDArrayAt(NDArrayHandle handle,
880  uint32_t idx,
881  NDArrayHandle *out);
882 
892 MXNET_DLL int MXNDArrayAt64(NDArrayHandle handle,
893  int64_t idx,
894  NDArrayHandle *out);
895 
899 MXNET_DLL int MXNDArrayGetStorageType(NDArrayHandle handle,
900  int *out_storage_type);
901 
910 MXNET_DLL int MXNDArrayReshape(NDArrayHandle handle,
911  int ndim,
912  int *dims,
913  NDArrayHandle *out);
914 
923 MXNET_DLL int MXNDArrayReshape64(NDArrayHandle handle,
924  int ndim,
925  dim_t *dims,
926  bool reverse,
927  NDArrayHandle *out);
936 MXNET_DLL int MXNDArrayGetShape(NDArrayHandle handle,
937  uint32_t *out_dim,
938  const uint32_t **out_pdata);
939 
949 MXNET_DLL int MXNDArrayGetShapeEx(NDArrayHandle handle,
950  int *out_dim,
951  const int **out_pdata);
952 
962 MXNET_DLL int MXNDArrayGetShapeEx64(NDArrayHandle handle,
963  int *out_dim,
964  const int64_t **out_pdata);
965 
972 MXNET_DLL int MXNDArrayGetData(NDArrayHandle handle,
973  void **out_pdata);
983 MXNET_DLL int MXNDArrayToDLPack(NDArrayHandle handle,
984  DLManagedTensorHandle *out_dlpack);
985 
1001 MXNET_DLL int MXNDArrayFromDLPack(DLManagedTensorHandle dlpack,
1002  NDArrayHandle *out_handle);
1003 
1018 MXNET_DLL int MXNDArrayFromDLPackEx(DLManagedTensorHandle dlpack,
1019  const bool transient_handle,
1020  NDArrayHandle *out_handle);
1021 
1027 MXNET_DLL int MXNDArrayCallDLPackDeleter(DLManagedTensorHandle dlpack);
1028 
1035 MXNET_DLL int MXNDArrayGetDType(NDArrayHandle handle,
1036  int *out_dtype);
1037 
1047 MXNET_DLL int MXNDArrayGetAuxType(NDArrayHandle handle,
1048  uint32_t i,
1049  int *out_type);
1050 
1060 MXNET_DLL int MXNDArrayGetAuxType64(NDArrayHandle handle,
1061  int64_t i,
1062  int *out_type);
1063 
1071 MXNET_DLL int MXNDArrayGetAuxNDArray(NDArrayHandle handle,
1072  uint32_t i,
1073  NDArrayHandle *out);
1074 
1082 MXNET_DLL int MXNDArrayGetAuxNDArray64(NDArrayHandle handle,
1083  int64_t i,
1084  NDArrayHandle *out);
1085 
1091 MXNET_DLL int MXNDArrayGetDataNDArray(NDArrayHandle handle,
1092  NDArrayHandle *out);
1100 MXNET_DLL int MXNDArrayGetContext(NDArrayHandle handle,
1101  int *out_dev_type,
1102  int *out_dev_id);
1108 MXNET_DLL int MXNDArrayGetGrad(NDArrayHandle handle, NDArrayHandle *out);
1114 MXNET_DLL int MXNDArrayDetach(NDArrayHandle handle, NDArrayHandle *out);
1121 MXNET_DLL int MXNDArraySetGradState(NDArrayHandle handle, int state);
1128 MXNET_DLL int MXNDArrayGetGradState(NDArrayHandle handle, int *out);
1129 //--------------------------------
1130 // Part 2: functions on NDArray
1131 //--------------------------------
1139 MXNET_DLL int MXListFunctions(uint32_t *out_size,
1140  FunctionHandle **out_array);
1141 
1148 MXNET_DLL int MXGetFunction(const char *name,
1149  FunctionHandle *out);
1162 MXNET_DLL int MXFuncGetInfo(FunctionHandle fun,
1163  const char **name,
1164  const char **description,
1165  uint32_t *num_args,
1166  const char ***arg_names,
1167  const char ***arg_type_infos,
1168  const char ***arg_descriptions,
1169  const char **return_type DEFAULT(NULL));
1180 MXNET_DLL int MXFuncDescribe(FunctionHandle fun,
1181  uint32_t *num_use_vars,
1182  uint32_t *num_scalars,
1183  uint32_t *num_mutate_vars,
1184  int *type_mask);
1195 MXNET_DLL int MXFuncInvoke(FunctionHandle fun,
1196  NDArrayHandle *use_vars,
1197  float *scalar_args,
1198  NDArrayHandle *mutate_vars);
1212 MXNET_DLL int MXFuncInvokeEx(FunctionHandle fun,
1213  NDArrayHandle *use_vars,
1214  float *scalar_args,
1215  NDArrayHandle *mutate_vars,
1216  int num_params,
1217  char **param_keys,
1218  char **param_vals);
1231 MXNET_DLL int MXImperativeInvoke(AtomicSymbolCreator creator,
1232  int num_inputs,
1233  NDArrayHandle *inputs,
1234  int *num_outputs,
1235  NDArrayHandle **outputs,
1236  int num_params,
1237  const char **param_keys,
1238  const char **param_vals);
1252 MXNET_DLL int MXImperativeInvokeEx(AtomicSymbolCreator creator,
1253  int num_inputs,
1254  NDArrayHandle *inputs,
1255  int *num_outputs,
1256  NDArrayHandle **outputs,
1257  int num_params,
1258  const char **param_keys,
1259  const char **param_vals,
1260  const int **out_stypes);
1267 MXNET_DLL int MXAutogradSetIsRecording(int is_recording, int* prev);
1274 MXNET_DLL int MXAutogradSetIsTraining(int is_training, int* prev);
1280 MXNET_DLL int MXAutogradIsRecording(bool* curr);
1286 MXNET_DLL int MXAutogradIsTraining(bool* curr);
1292 MXNET_DLL int MXIsNumpyShape(int* curr);
1300 MXNET_DLL int MXSetIsNumpyShape(int is_np_shape, int* prev);
1307 MXNET_DLL int MXAutogradMarkVariables(uint32_t num_var,
1308  NDArrayHandle *var_handles,
1309  uint32_t *reqs_array,
1310  NDArrayHandle *grad_handles);
1317 MXNET_DLL int MXAutogradComputeGradient(uint32_t num_output,
1318  NDArrayHandle* output_handles);
1327 MXNET_DLL int MXAutogradBackward(uint32_t num_output,
1328  NDArrayHandle* output_handles,
1329  NDArrayHandle* ograd_handles,
1330  int retain_graph);
1342 MXNET_DLL int MXAutogradBackwardEx(uint32_t num_output,
1343  NDArrayHandle *output_handles,
1344  NDArrayHandle *ograd_handles,
1345  uint32_t num_variables,
1346  NDArrayHandle *var_handles,
1347  int retain_graph,
1348  int create_graph,
1349  int is_train,
1350  NDArrayHandle **grad_handles,
1351  int **grad_stypes);
1352 /*
1353  * \brief get the graph constructed by autograd.
1354  * \param handle ndarray handle
1355  * \param out output symbol handle
1356  */
1357 MXNET_DLL int MXAutogradGetSymbol(NDArrayHandle handle, SymbolHandle *out);
1361 MXNET_DLL int MXCreateCachedOp(SymbolHandle handle, CachedOpHandle *out);
1365 MXNET_DLL int MXCreateCachedOpEx(SymbolHandle handle,
1366  int num_flags,
1367  const char** keys,
1368  const char** vals,
1369  CachedOpHandle *out);
1370 
1375 MXNET_DLL int MXCreateCachedOpEX(SymbolHandle handle,
1376  int num_flags,
1377  const char** keys,
1378  const char** vals,
1379  CachedOpHandle *out,
1380  bool thread_safe DEFAULT(false));
1381 
1385 MXNET_DLL int MXFreeCachedOp(CachedOpHandle handle);
1386 
1390 MXNET_DLL int MXInvokeCachedOp(CachedOpHandle handle,
1391  int num_inputs,
1392  NDArrayHandle *inputs,
1393  int *num_outputs,
1394  NDArrayHandle **outputs);
1395 
1406 MXNET_DLL int MXInvokeCachedOpEx(CachedOpHandle handle,
1407  int num_inputs,
1408  NDArrayHandle *inputs,
1409  int *num_outputs,
1410  NDArrayHandle **outputs,
1411  const int** out_stypes);
1412 
1416 MXNET_DLL int MXCachedOpRegisterOpHook(NDArrayHandle handle,
1417  CachedOpMonitorCallback callback,
1418  bool monitor_all);
1419 
1420 //--------------------------------------------
1421 // Part 3: symbolic configuration generation
1422 //--------------------------------------------
1429 MXNET_DLL int MXListAllOpNames(uint32_t *out_size,
1430  const char ***out_array);
1431 
1438 MXNET_DLL int MXSymbolListAtomicSymbolCreators(uint32_t *out_size,
1439  AtomicSymbolCreator **out_array);
1440 
1446 MXNET_DLL int MXSymbolGetAtomicSymbolName(AtomicSymbolCreator creator,
1447  const char **name);
1448 
1455 MXNET_DLL int MXSymbolGetInputSymbols(SymbolHandle sym, SymbolHandle **inputs,
1456  int *input_size);
1457 
1467 MXNET_DLL int MXSymbolCutSubgraph(SymbolHandle sym, SymbolHandle **inputs,
1468  int *input_size);
1469 
1487 MXNET_DLL int MXSymbolGetAtomicSymbolInfo(AtomicSymbolCreator creator,
1488  const char **name,
1489  const char **description,
1490  uint32_t *num_args,
1491  const char ***arg_names,
1492  const char ***arg_type_infos,
1493  const char ***arg_descriptions,
1494  const char **key_var_num_args,
1495  const char **return_type DEFAULT(NULL));
1505 MXNET_DLL int MXSymbolCreateAtomicSymbol(AtomicSymbolCreator creator,
1506  uint32_t num_param,
1507  const char **keys,
1508  const char **vals,
1509  SymbolHandle *out);
1516 MXNET_DLL int MXSymbolCreateVariable(const char *name, SymbolHandle *out);
1524 MXNET_DLL int MXSymbolCreateGroup(uint32_t num_symbols,
1525  SymbolHandle *symbols,
1526  SymbolHandle *out);
1533 MXNET_DLL int MXSymbolCreateFromFile(const char *fname, SymbolHandle *out);
1540 MXNET_DLL int MXSymbolCreateFromJSON(const char *json, SymbolHandle *out);
1547 MXNET_DLL int MXSymbolRemoveAmpCast(SymbolHandle sym_handle, SymbolHandle* ret_sym_handle);
1554 MXNET_DLL int MXSymbolSaveToFile(SymbolHandle symbol, const char *fname);
1561 MXNET_DLL int MXSymbolSaveToJSON(SymbolHandle symbol, const char **out_json);
1567 MXNET_DLL int MXSymbolFree(SymbolHandle symbol);
1574 MXNET_DLL int MXSymbolCopy(SymbolHandle symbol, SymbolHandle *out);
1581 MXNET_DLL int MXSymbolPrint(SymbolHandle symbol, const char **out_str);
1589 MXNET_DLL int MXSymbolGetName(SymbolHandle symbol,
1590  const char** out,
1591  int *success);
1600 MXNET_DLL int MXSymbolGetAttr(SymbolHandle symbol,
1601  const char* key,
1602  const char** out,
1603  int *success);
1620 MXNET_DLL int MXSymbolSetAttr(SymbolHandle symbol,
1621  const char* key,
1622  const char* value);
1630 MXNET_DLL int MXSymbolListAttr(SymbolHandle symbol,
1631  uint32_t *out_size,
1632  const char*** out);
1640 MXNET_DLL int MXSymbolListAttrShallow(SymbolHandle symbol,
1641  uint32_t *out_size,
1642  const char*** out);
1650 MXNET_DLL int MXSymbolListArguments(SymbolHandle symbol,
1651  uint32_t *out_size,
1652  const char ***out_str_array);
1653 
1661 MXNET_DLL int MXSymbolListOutputs(SymbolHandle symbol,
1662  uint32_t *out_size,
1663  const char ***out_str_array);
1664 
1671 MXNET_DLL int MXSymbolGetNumOutputs(SymbolHandle symbol,
1672  uint32_t *output_count);
1673 
1680 MXNET_DLL int MXSymbolGetInternals(SymbolHandle symbol,
1681  SymbolHandle *out);
1688 MXNET_DLL int MXSymbolGetChildren(SymbolHandle symbol,
1689  SymbolHandle *out);
1697 MXNET_DLL int MXSymbolGetOutput(SymbolHandle symbol,
1698  uint32_t index,
1699  SymbolHandle *out);
1700 
1708 MXNET_DLL int MXSymbolListAuxiliaryStates(SymbolHandle symbol,
1709  uint32_t *out_size,
1710  const char ***out_str_array);
1711 
1726 MXNET_DLL int MXSymbolCompose(SymbolHandle sym,
1727  const char *name,
1728  uint32_t num_args,
1729  const char** keys,
1730  SymbolHandle* args);
1740 MXNET_DLL int MXSymbolGrad(SymbolHandle sym,
1741  uint32_t num_wrt,
1742  const char** wrt,
1743  SymbolHandle* out);
1767 MXNET_DLL int MXSymbolInferShape(SymbolHandle sym,
1768  uint32_t num_args,
1769  const char** keys,
1770  const uint32_t *arg_ind_ptr,
1771  const uint32_t *arg_shape_data,
1772  uint32_t *in_shape_size,
1773  const uint32_t **in_shape_ndim,
1774  const uint32_t ***in_shape_data,
1775  uint32_t *out_shape_size,
1776  const uint32_t **out_shape_ndim,
1777  const uint32_t ***out_shape_data,
1778  uint32_t *aux_shape_size,
1779  const uint32_t **aux_shape_ndim,
1780  const uint32_t ***aux_shape_data,
1781  int *complete);
1782 
1806 MXNET_DLL int MXSymbolInferShapeEx(SymbolHandle sym,
1807  uint32_t num_args,
1808  const char** keys,
1809  const uint32_t *arg_ind_ptr,
1810  const int *arg_shape_data,
1811  uint32_t *in_shape_size,
1812  const int **in_shape_ndim,
1813  const int ***in_shape_data,
1814  uint32_t *out_shape_size,
1815  const int **out_shape_ndim,
1816  const int ***out_shape_data,
1817  uint32_t *aux_shape_size,
1818  const int **aux_shape_ndim,
1819  const int ***aux_shape_data,
1820  int *complete);
1821 
1845 MXNET_DLL int MXSymbolInferShapeEx64(SymbolHandle sym,
1846  uint32_t num_args,
1847  const char** keys,
1848  const int64_t *arg_ind_ptr,
1849  const int64_t *arg_shape_data,
1850  size_t *in_shape_size,
1851  const int **in_shape_ndim,
1852  const int64_t ***in_shape_data,
1853  size_t *out_shape_size,
1854  const int **out_shape_ndim,
1855  const int64_t ***out_shape_data,
1856  size_t *aux_shape_size,
1857  const int **aux_shape_ndim,
1858  const int64_t ***aux_shape_data,
1859  int *complete);
1860 
1886 MXNET_DLL int MXSymbolInferShapePartial(SymbolHandle sym,
1887  uint32_t num_args,
1888  const char** keys,
1889  const uint32_t *arg_ind_ptr,
1890  const uint32_t *arg_shape_data,
1891  uint32_t *in_shape_size,
1892  const uint32_t **in_shape_ndim,
1893  const uint32_t ***in_shape_data,
1894  uint32_t *out_shape_size,
1895  const uint32_t **out_shape_ndim,
1896  const uint32_t ***out_shape_data,
1897  uint32_t *aux_shape_size,
1898  const uint32_t **aux_shape_ndim,
1899  const uint32_t ***aux_shape_data,
1900  int *complete);
1901 
1928 MXNET_DLL int MXSymbolInferShapePartialEx(SymbolHandle sym,
1929  uint32_t num_args,
1930  const char** keys,
1931  const uint32_t *arg_ind_ptr,
1932  const int *arg_shape_data,
1933  uint32_t *in_shape_size,
1934  const int **in_shape_ndim,
1935  const int ***in_shape_data,
1936  uint32_t *out_shape_size,
1937  const int **out_shape_ndim,
1938  const int ***out_shape_data,
1939  uint32_t *aux_shape_size,
1940  const int **aux_shape_ndim,
1941  const int ***aux_shape_data,
1942  int *complete);
1943 
1970 MXNET_DLL int MXSymbolInferShapePartialEx64(SymbolHandle sym,
1971  uint32_t num_args,
1972  const char** keys,
1973  const int64_t *arg_ind_ptr,
1974  const int64_t *arg_shape_data,
1975  size_t *in_shape_size,
1976  const int **in_shape_ndim,
1977  const int64_t ***in_shape_data,
1978  size_t *out_shape_size,
1979  const int **out_shape_ndim,
1980  const int64_t ***out_shape_data,
1981  size_t *aux_shape_size,
1982  const int **aux_shape_ndim,
1983  const int64_t ***aux_shape_data,
1984  int *complete);
1985 
2004 MXNET_DLL int MXSymbolInferType(SymbolHandle sym,
2005  uint32_t num_args,
2006  const char** keys,
2007  const int *arg_type_data,
2008  uint32_t *in_type_size,
2009  const int **in_type_data,
2010  uint32_t *out_type_size,
2011  const int **out_type_data,
2012  uint32_t *aux_type_size,
2013  const int **aux_type_data,
2014  int *complete);
2015 
2036 MXNET_DLL int MXSymbolInferTypePartial(SymbolHandle sym,
2037  uint32_t num_args,
2038  const char** keys,
2039  const int *arg_type_data,
2040  uint32_t *in_type_size,
2041  const int **in_type_data,
2042  uint32_t *out_type_size,
2043  const int **out_type_data,
2044  uint32_t *aux_type_size,
2045  const int **aux_type_data,
2046  int *complete);
2047 
2066 MXNET_DLL int MXQuantizeSymbol(SymbolHandle sym_handle,
2067  SymbolHandle *ret_sym_handle,
2068  const int* dev_type,
2069  const uint32_t num_excluded_sym_names,
2070  const char **excluded_sym_names,
2071  const uint32_t num_excluded_op_names,
2072  const char **excluded_op_names,
2073  const uint32_t num_offline, const char **offline_params,
2074  const char *quantized_dtype, const bool calib_quantize,
2075  const char *quantize_mode, const char *quantize_granularity,
2076  uint32_t* out_num_calib_names, const char ***out_calib_names);
2077 
2104 MXNET_DLL int MXReducePrecisionSymbol(SymbolHandle sym_handle,
2105  SymbolHandle *ret_sym_handle,
2106  uint32_t num_args,
2107  const int* arg_type_data,
2108  uint32_t num_ind_ptr,
2109  const int* ind_ptr,
2110  const int* target_dtype,
2111  const int cast_optional_params,
2112  const uint32_t num_target_dtype_op_names,
2113  const uint32_t num_fp32_op_names,
2114  const uint32_t num_widest_dtype_op_names,
2115  const uint32_t num_conditional_fp32_op_names,
2116  const uint32_t num_excluded_symbols,
2117  const uint32_t num_model_params,
2118  const char **target_dtype_op_names,
2119  const char **fp32_op_names,
2120  const char **widest_dtype_op_names,
2121  const char **conditional_fp32_op_names,
2122  const char **excluded_symbols,
2123  const char **conditional_param_names,
2124  const char **conditional_param_vals,
2125  const char **model_param_names,
2126  const char **arg_names);
2136 MXNET_DLL int MXSetCalibTableToQuantizedSymbol(SymbolHandle qsym_handle,
2137  const uint32_t num_layers,
2138  const char** layer_names,
2139  const float* low_quantiles,
2140  const float* high_quantiles,
2141  SymbolHandle* ret_sym_handle);
2142 
2149 MXNET_DLL int MXGenBackendSubgraph(SymbolHandle sym_handle, const char *backend,
2150  SymbolHandle *ret_sym_handle);
2151 
2157 MXNET_DLL int MXGenAtomicSymbolFromSymbol(SymbolHandle sym_handle, SymbolHandle *ret_sym_handle);
2189 MXNET_DLL int MXOptimizeForBackend(SymbolHandle sym_handle,
2190  const char* backend_name,
2191  const int dev_type,
2192  SymbolHandle* ret_sym_handle,
2193  const mx_uint args_len,
2194  NDArrayHandle* in_args_handle,
2195  const mx_uint aux_len,
2196  NDArrayHandle* in_aux_handle,
2197  const mx_uint num_options,
2198  const char** keys,
2199  const char** vals,
2200  const uint32_t num_input_shapes,
2201  const char** input_shape_names,
2202  const int64_t* input_shape_data,
2203  const uint32_t* input_shape_idx,
2204  const uint32_t num_input_dtypes,
2205  const char** input_dtype_names,
2206  const int* input_dtypes,
2207  const uint32_t num_input_stypes,
2208  const char** input_stype_names,
2209  const int* input_stypes,
2210  bool skip_infer,
2211  int* new_args_cnt,
2212  NDArrayHandle** new_args_handle,
2213  char*** new_arg_names_handle,
2214  int* new_aux_cnt,
2215  NDArrayHandle** new_aux_handle,
2216  char*** new_aux_names_handle);
2217 
2218 
2219 //--------------------------------------------
2220 // Part 4: Executor interface
2221 //--------------------------------------------
2227 MXNET_DLL int MXExecutorFree(ExecutorHandle handle);
2234 MXNET_DLL int MXExecutorPrint(ExecutorHandle handle, const char **out_str);
2242 MXNET_DLL int MXExecutorForward(ExecutorHandle handle, int is_train);
2252 MXNET_DLL int MXExecutorBackward(ExecutorHandle handle,
2253  uint32_t len,
2254  NDArrayHandle *head_grads);
2265 MXNET_DLL int MXExecutorBackwardEx(ExecutorHandle handle,
2266  uint32_t len,
2267  NDArrayHandle *head_grads,
2268  int is_train);
2277 MXNET_DLL int MXExecutorOutputs(ExecutorHandle handle,
2278  uint32_t *out_size,
2279  NDArrayHandle **out);
2280 
2296 MXNET_DLL int MXExecutorBind(SymbolHandle symbol_handle,
2297  int dev_type,
2298  int dev_id,
2299  uint32_t len,
2300  NDArrayHandle *in_args,
2301  NDArrayHandle *arg_grad_store,
2302  uint32_t *grad_req_type,
2303  uint32_t aux_states_len,
2304  NDArrayHandle *aux_states,
2305  ExecutorHandle *out);
2327 MXNET_DLL int MXExecutorBindX(SymbolHandle symbol_handle,
2328  int dev_type,
2329  int dev_id,
2330  uint32_t num_map_keys,
2331  const char** map_keys,
2332  const int* map_dev_types,
2333  const int* map_dev_ids,
2334  uint32_t len,
2335  NDArrayHandle *in_args,
2336  NDArrayHandle *arg_grad_store,
2337  uint32_t *grad_req_type,
2338  uint32_t aux_states_len,
2339  NDArrayHandle *aux_states,
2340  ExecutorHandle *out);
2363 MXNET_DLL int MXExecutorBindEX(SymbolHandle symbol_handle,
2364  int dev_type,
2365  int dev_id,
2366  uint32_t num_map_keys,
2367  const char** map_keys,
2368  const int* map_dev_types,
2369  const int* map_dev_ids,
2370  uint32_t len,
2371  NDArrayHandle *in_args,
2372  NDArrayHandle *arg_grad_store,
2373  uint32_t *grad_req_type,
2374  uint32_t aux_states_len,
2375  NDArrayHandle *aux_states,
2376  ExecutorHandle shared_exec,
2377  ExecutorHandle *out);
2380 MXNET_DLL int MXExecutorSimpleBind(SymbolHandle symbol_handle,
2381  int dev_type,
2382  int dev_id,
2383  const uint32_t num_g2c_keys,
2384  const char** g2c_keys,
2385  const int* g2c_dev_types,
2386  const int* g2c_dev_ids,
2387  const uint32_t provided_grad_req_list_len,
2388  const char** provided_grad_req_names,
2389  const char** provided_grad_req_types,
2390  const uint32_t num_provided_arg_shapes,
2391  const char** provided_arg_shape_names,
2392  const uint32_t* provided_arg_shape_data,
2393  const uint32_t* provided_arg_shape_idx,
2394  const uint32_t num_provided_arg_dtypes,
2395  const char** provided_arg_dtype_names,
2396  const int* provided_arg_dtypes,
2397  const uint32_t num_provided_arg_stypes,
2398  const char** provided_arg_stype_names,
2399  const int* provided_arg_stypes,
2400  const uint32_t num_shared_arg_names,
2401  const char** shared_arg_name_list,
2402  int* shared_buffer_len,
2403  const char** shared_buffer_name_list,
2404  NDArrayHandle* shared_buffer_handle_list,
2405  const char*** updated_shared_buffer_name_list,
2406  NDArrayHandle** updated_shared_buffer_handle_list,
2407  uint32_t* num_in_args,
2408  NDArrayHandle** in_args,
2409  NDArrayHandle** arg_grads,
2410  uint32_t* num_aux_states,
2411  NDArrayHandle** aux_states,
2412  ExecutorHandle shared_exec_handle,
2413  ExecutorHandle* out);
2414 
2415 
2416 MXNET_DLL int MXExecutorSimpleBindEx(SymbolHandle symbol_handle,
2417  int dev_type,
2418  int dev_id,
2419  const uint32_t num_g2c_keys,
2420  const char** g2c_keys,
2421  const int* g2c_dev_types,
2422  const int* g2c_dev_ids,
2423  const uint32_t provided_grad_req_list_len,
2424  const char** provided_grad_req_names,
2425  const char** provided_grad_req_types,
2426  const uint32_t num_provided_arg_shapes,
2427  const char** provided_arg_shape_names,
2428  const int* provided_arg_shape_data,
2429  const uint32_t* provided_arg_shape_idx,
2430  const uint32_t num_provided_arg_dtypes,
2431  const char** provided_arg_dtype_names,
2432  const int* provided_arg_dtypes,
2433  const uint32_t num_provided_arg_stypes,
2434  const char** provided_arg_stype_names,
2435  const int* provided_arg_stypes,
2436  const uint32_t num_shared_arg_names,
2437  const char** shared_arg_name_list,
2438  int* shared_buffer_len,
2439  const char** shared_buffer_name_list,
2440  NDArrayHandle* shared_buffer_handle_list,
2441  const char*** updated_shared_buffer_name_list,
2442  NDArrayHandle** updated_shared_buffer_handle_list,
2443  uint32_t* num_in_args,
2444  NDArrayHandle** in_args,
2445  NDArrayHandle** arg_grads,
2446  uint32_t* num_aux_states,
2447  NDArrayHandle** aux_states,
2448  ExecutorHandle shared_exec_handle,
2449  ExecutorHandle* out);
2450 
2451 
2452 MXNET_DLL int MXExecutorSimpleBindEx64(SymbolHandle symbol_handle,
2453  int dev_type,
2454  int dev_id,
2455  const uint32_t num_g2c_keys,
2456  const char** g2c_keys,
2457  const int* g2c_dev_types,
2458  const int* g2c_dev_ids,
2459  const uint32_t provided_grad_req_list_len,
2460  const char** provided_grad_req_names,
2461  const char** provided_grad_req_types,
2462  const uint32_t num_provided_arg_shapes,
2463  const char** provided_arg_shape_names,
2464  const int64_t* provided_arg_shape_data,
2465  const uint32_t* provided_arg_shape_idx,
2466  const uint32_t num_provided_arg_dtypes,
2467  const char** provided_arg_dtype_names,
2468  const int* provided_arg_dtypes,
2469  const uint32_t num_provided_arg_stypes,
2470  const char** provided_arg_stype_names,
2471  const int* provided_arg_stypes,
2472  const uint32_t num_shared_arg_names,
2473  const char** shared_arg_name_list,
2474  int* shared_buffer_len,
2475  const char** shared_buffer_name_list,
2476  NDArrayHandle* shared_buffer_handle_list,
2477  const char*** updated_shared_buffer_name_list,
2478  NDArrayHandle** updated_shared_buffer_handle_list,
2479  uint32_t* num_in_args,
2480  NDArrayHandle** in_args,
2481  NDArrayHandle** arg_grads,
2482  uint32_t* num_aux_states,
2483  NDArrayHandle** aux_states,
2484  ExecutorHandle shared_exec_handle,
2485  ExecutorHandle* out);
2486 
2487 
2510 MXNET_DLL int MXExecutorReshape(int partial_shaping,
2511  int allow_up_sizing,
2512  int dev_type,
2513  int dev_id,
2514  uint32_t num_map_keys,
2515  const char** map_keys,
2516  const int* map_dev_types,
2517  const int* map_dev_ids,
2518  const uint32_t num_provided_arg_shapes,
2519  const char** provided_arg_shape_names,
2520  const uint32_t* provided_arg_shape_data,
2521  const uint32_t* provided_arg_shape_idx,
2522  uint32_t* num_in_args,
2523  NDArrayHandle** in_args,
2524  NDArrayHandle** arg_grads,
2525  uint32_t* num_aux_states,
2526  NDArrayHandle** aux_states,
2527  ExecutorHandle shared_exec,
2528  ExecutorHandle *out);
2550 MXNET_DLL int MXExecutorReshapeEx(int partial_shaping,
2551  int allow_up_sizing,
2552  int dev_type,
2553  int dev_id,
2554  uint32_t num_map_keys,
2555  const char** map_keys,
2556  const int* map_dev_types,
2557  const int* map_dev_ids,
2558  const uint32_t num_provided_arg_shapes,
2559  const char** provided_arg_shape_names,
2560  const int* provided_arg_shape_data,
2561  const uint32_t* provided_arg_shape_idx,
2562  uint32_t* num_in_args,
2563  NDArrayHandle** in_args,
2564  NDArrayHandle** arg_grads,
2565  uint32_t* num_aux_states,
2566  NDArrayHandle** aux_states,
2567  ExecutorHandle shared_exec,
2568  ExecutorHandle *out);
2569 
2573 MXNET_DLL int MXExecutorGetOptimizedSymbol(ExecutorHandle handle,
2574  SymbolHandle *out);
2578 MXNET_DLL int MXExecutorSetMonitorCallback(ExecutorHandle handle,
2579  ExecutorMonitorCallback callback,
2580  void* callback_handle);
2581 
2586 MXNET_DLL int MXExecutorSetMonitorCallbackEX(ExecutorHandle handle,
2587  ExecutorMonitorCallback callback,
2588  void *callback_handle, bool monitor_all);
2589 //--------------------------------------------
2590 // Part 5: IO Interface
2591 //--------------------------------------------
2598 MXNET_DLL int MXListDataIters(uint32_t *out_size,
2599  DataIterCreator **out_array);
2610 MXNET_DLL int MXDataIterCreateIter(DataIterCreator handle,
2611  uint32_t num_param,
2612  const char **keys,
2613  const char **vals,
2614  DataIterHandle *out);
2626 MXNET_DLL int MXDataIterGetIterInfo(DataIterCreator creator,
2627  const char **name,
2628  const char **description,
2629  uint32_t *num_args,
2630  const char ***arg_names,
2631  const char ***arg_type_infos,
2632  const char ***arg_descriptions);
2638 MXNET_DLL int MXDataIterFree(DataIterHandle handle);
2645 MXNET_DLL int MXDataIterNext(DataIterHandle handle,
2646  int *out);
2652 MXNET_DLL int MXDataIterBeforeFirst(DataIterHandle handle);
2653 
2660 MXNET_DLL int MXDataIterGetData(DataIterHandle handle,
2661  NDArrayHandle *out);
2669 MXNET_DLL int MXDataIterGetIndex(DataIterHandle handle,
2670  uint64_t **out_index,
2671  uint64_t *out_size);
2678 MXNET_DLL int MXDataIterGetPadNum(DataIterHandle handle,
2679  int *pad);
2680 
2687 MXNET_DLL int MXDataIterGetLabel(DataIterHandle handle,
2688  NDArrayHandle *out);
2689 //--------------------------------------------
2690 // Part 6: basic KVStore interface
2691 //--------------------------------------------
2698 MXNET_DLL int MXInitPSEnv(uint32_t num_vars,
2699  const char **keys,
2700  const char **vals);
2701 
2702 
2709 MXNET_DLL int MXKVStoreCreate(const char *type,
2710  KVStoreHandle *out);
2711 
2719 MXNET_DLL int MXKVStoreSetGradientCompression(KVStoreHandle handle,
2720  uint32_t num_params,
2721  const char** keys,
2722  const char** vals);
2723 
2729 MXNET_DLL int MXKVStoreFree(KVStoreHandle handle);
2738 MXNET_DLL int MXKVStoreInit(KVStoreHandle handle,
2739  uint32_t num,
2740  const int* keys,
2741  NDArrayHandle* vals);
2742 
2751 MXNET_DLL int MXKVStoreInitEx(KVStoreHandle handle,
2752  uint32_t num,
2753  const char** keys,
2754  NDArrayHandle* vals);
2755 
2765 MXNET_DLL int MXKVStorePush(KVStoreHandle handle,
2766  uint32_t num,
2767  const int* keys,
2768  NDArrayHandle* vals,
2769  int priority);
2779 MXNET_DLL int MXKVStorePushEx(KVStoreHandle handle,
2780  uint32_t num,
2781  const char** keys,
2782  NDArrayHandle* vals,
2783  int priority);
2794 MXNET_DLL int MXKVStorePullWithSparse(KVStoreHandle handle,
2795  uint32_t num,
2796  const int* keys,
2797  NDArrayHandle* vals,
2798  int priority,
2799  bool ignore_sparse);
2810 MXNET_DLL int MXKVStorePullWithSparseEx(KVStoreHandle handle,
2811  uint32_t num,
2812  const char** keys,
2813  NDArrayHandle* vals,
2814  int priority,
2815  bool ignore_sparse);
2825 MXNET_DLL int MXKVStorePull(KVStoreHandle handle,
2826  uint32_t num,
2827  const int* keys,
2828  NDArrayHandle* vals,
2829  int priority);
2839 MXNET_DLL int MXKVStorePullEx(KVStoreHandle handle,
2840  uint32_t num,
2841  const char** keys,
2842  NDArrayHandle* vals,
2843  int priority);
2844 
2857 MXNET_DLL int MXKVStorePullRowSparse(KVStoreHandle handle,
2858  uint32_t num,
2859  const int* keys,
2860  NDArrayHandle* vals,
2861  const NDArrayHandle* row_ids,
2862  int priority);
2875 MXNET_DLL int MXKVStorePullRowSparseEx(KVStoreHandle handle,
2876  uint32_t num,
2877  const char** keys,
2878  NDArrayHandle* vals,
2879  const NDArrayHandle* row_ids,
2880  int priority);
2881 
2894 MXNET_DLL int MXKVStoreBroadcast(KVStoreHandle handle,
2895  mx_uint vnum,
2896  const int* vkeys,
2897  mx_uint onum,
2898  const int* okeys,
2899  NDArrayHandle* vals,
2900  NDArrayHandle* outs,
2901  int priority);
2915 MXNET_DLL int MXKVStoreBroadcastEx(KVStoreHandle handle,
2916  mx_uint vnum,
2917  const char** vkeys,
2918  mx_uint onum,
2919  const char** okeys,
2920  NDArrayHandle* vals,
2921  NDArrayHandle* outs,
2922  int priority);
2923 
2936 MXNET_DLL int MXKVStorePushPull(KVStoreHandle handle,
2937  mx_uint vnum,
2938  const int* vkeys,
2939  mx_uint onum,
2940  const int* okeys,
2941  NDArrayHandle* vals,
2942  NDArrayHandle* outs,
2943  int priority);
2957 MXNET_DLL int MXKVStorePushPullEx(KVStoreHandle handle,
2958  mx_uint vnum,
2959  const char** vkeys,
2960  mx_uint onum,
2961  const char** okeys,
2962  NDArrayHandle* vals,
2963  NDArrayHandle* outs,
2964  int priority);
2965 
2974 typedef void (MXKVStoreUpdater)(int key,
2975  NDArrayHandle recv,
2976  NDArrayHandle local,
2977  void *handle);
2986 typedef void (MXKVStoreStrUpdater)(const char* key,
2987  NDArrayHandle recv,
2988  NDArrayHandle local,
2989  void *handle);
2997 MXNET_DLL int MXKVStoreSetUpdater(KVStoreHandle handle,
2998  MXKVStoreUpdater updater,
2999  void *updater_handle);
3008 MXNET_DLL int MXKVStoreSetUpdaterEx(KVStoreHandle handle,
3009  MXKVStoreUpdater updater,
3010  MXKVStoreStrUpdater str_updater,
3011  void *updater_handle);
3018 MXNET_DLL int MXKVStoreGetType(KVStoreHandle handle,
3019  const char** type);
3020 //--------------------------------------------
3021 // Part 6: advanced KVStore for multi-machines
3022 //--------------------------------------------
3023 
3031 MXNET_DLL int MXKVStoreGetRank(KVStoreHandle handle,
3032  int *ret);
3033 
3043 MXNET_DLL int MXKVStoreGetGroupSize(KVStoreHandle handle,
3044  int *ret);
3045 
3051 MXNET_DLL int MXKVStoreIsWorkerNode(int *ret);
3052 
3053 
3059 MXNET_DLL int MXKVStoreIsServerNode(int *ret);
3060 
3061 
3067 MXNET_DLL int MXKVStoreIsSchedulerNode(int *ret);
3068 
3075 MXNET_DLL int MXKVStoreBarrier(KVStoreHandle handle);
3076 
3084 MXNET_DLL int MXKVStoreSetBarrierBeforeExit(KVStoreHandle handle,
3085  const int barrier_before_exit);
3086 
3093 typedef void (MXKVStoreServerController)(int head,
3094  const char *body,
3095  void *controller_handle);
3096 
3104 MXNET_DLL int MXKVStoreRunServer(KVStoreHandle handle,
3105  MXKVStoreServerController controller,
3106  void *controller_handle);
3107 
3115 MXNET_DLL int MXKVStoreSendCommmandToServers(KVStoreHandle handle,
3116  int cmd_id,
3117  const char* cmd_body);
3118 
3129 MXNET_DLL int MXKVStoreGetNumDeadNode(KVStoreHandle handle,
3130  const int node_id,
3131  int *number,
3132  const int timeout_sec DEFAULT(60));
3133 
3140 MXNET_DLL int MXRecordIOWriterCreate(const char *uri, RecordIOHandle *out);
3141 
3147 MXNET_DLL int MXRecordIOWriterFree(RecordIOHandle handle);
3148 
3156 MXNET_DLL int MXRecordIOWriterWriteRecord(RecordIOHandle handle,
3157  const char *buf, size_t size);
3158 
3165 MXNET_DLL int MXRecordIOWriterTell(RecordIOHandle handle, size_t *pos);
3166 
3173 MXNET_DLL int MXRecordIOReaderCreate(const char *uri, RecordIOHandle *out);
3174 
3180 MXNET_DLL int MXRecordIOReaderFree(RecordIOHandle handle);
3181 
3189 MXNET_DLL int MXRecordIOReaderReadRecord(RecordIOHandle handle,
3190  char const **buf, size_t *size);
3191 
3198 MXNET_DLL int MXRecordIOReaderSeek(RecordIOHandle handle, size_t pos);
3199 
3206 MXNET_DLL int MXRecordIOReaderTell(RecordIOHandle handle, size_t *pos);
3207 
3211 MXNET_DLL int MXRtcCreate(char* name, uint32_t num_input, uint32_t num_output,
3212  char** input_names, char** output_names,
3213  NDArrayHandle* inputs, NDArrayHandle* outputs,
3214  char* kernel, RtcHandle *out);
3215 
3219 MXNET_DLL int MXRtcPush(RtcHandle handle, uint32_t num_input, uint32_t num_output,
3220  NDArrayHandle* inputs, NDArrayHandle* outputs,
3221  uint32_t gridDimX,
3222  uint32_t gridDimY,
3223  uint32_t gridDimZ,
3224  uint32_t blockDimX,
3225  uint32_t blockDimY,
3226  uint32_t blockDimZ);
3227 
3231 MXNET_DLL int MXRtcFree(RtcHandle handle);
3232 /*
3233  * \brief register custom operators from frontend.
3234  * \param op_type name of custom op
3235  * \param creator
3236  */
3237 MXNET_DLL int MXCustomOpRegister(const char* op_type, CustomOpPropCreator creator);
3238 /*
3239  * \brief record custom function for backward later.
3240  * \param num_inputs number of input NDArrays.
3241  * \param inputs handle to input NDArrays.
3242  * \param num_outputs number of output NDArrays.
3243  * \param outputs handle to output NDArrays.
3244  * \param callbacks callbacks for backward function.
3245  */
3246 MXNET_DLL int MXCustomFunctionRecord(int num_inputs, NDArrayHandle *inputs,
3247  int num_outputs, NDArrayHandle *outputs,
3248  struct MXCallbackList *callbacks);
3249 /*
3250  * \brief create cuda rtc module
3251  * \param source cuda source code
3252  * \param num_options number of compiler flags
3253  * \param options compiler flags
3254  * \param num_exports number of exported function names
3255  * \param exported function names
3256  * \param out handle to created module
3257  */
3258 MXNET_DLL int MXRtcCudaModuleCreate(const char* source, int num_options,
3259  const char** options, int num_exports,
3260  const char** exports, CudaModuleHandle *out);
3261 /*
3262  * \brief delete cuda rtc module
3263  * \param handle handle to cuda module
3264  */
3265 MXNET_DLL int MXRtcCudaModuleFree(CudaModuleHandle handle);
3266 /*
3267  * \brief get kernel from module
3268  * \param handle handle to cuda module
3269  * \param name name of kernel function
3270  * \param num_args number of arguments
3271  * \param is_ndarray whether argument is ndarray
3272  * \param is_const whether argument is constant
3273  * \param arg_types data type of arguments
3274  * \param out created kernel
3275  */
3276 MXNET_DLL int MXRtcCudaKernelCreate(CudaModuleHandle handle, const char* name,
3277  int num_args, int* is_ndarray, int* is_const,
3278  int* arg_types, CudaKernelHandle *out);
3279 /*
3280  * \brief delete kernel
3281  * \param handle handle to previously created kernel
3282  */
3283 MXNET_DLL int MXRtcCudaKernelFree(CudaKernelHandle handle);
3284 /*
3285  * \brief launch cuda kernel
3286  * \param handle handle to kernel
3287  * \param dev_id (GPU) device id
3288  * \param args pointer to arguments
3289  * \param grid_dim_x grid dimension x
3290  * \param grid_dim_y grid dimension y
3291  * \param grid_dim_z grid dimension z
3292  * \param block_dim_x block dimension x
3293  * \param block_dim_y block dimension y
3294  * \param block_dim_z block dimension z
3295  * \param shared_mem size of dynamically allocated shared memory
3296  */
3297 MXNET_DLL int MXRtcCudaKernelCall(CudaKernelHandle handle, int dev_id, void** args,
3298  uint32_t grid_dim_x, uint32_t grid_dim_y,
3299  uint32_t grid_dim_z, uint32_t block_dim_x,
3300  uint32_t block_dim_y, uint32_t block_dim_z,
3301  uint32_t shared_mem);
3308 MXNET_DLL int MXNDArrayGetSharedMemHandle(NDArrayHandle handle, int* shared_pid,
3309  int* shared_id);
3320 MXNET_DLL int MXNDArrayCreateFromSharedMem(int shared_pid, int shared_id, const uint32_t *shape,
3321  uint32_t ndim, int dtype, NDArrayHandle *out);
3322 
3328 MXNET_DLL int MXStorageEmptyCache(int dev_type, int dev_id);
3329 
3339 MXNET_DLL int MXNDArrayCreateFromSharedMemEx(int shared_pid, int shared_id, const int *shape,
3340  int ndim, int dtype, NDArrayHandle *out);
3341 
3359 MXNET_DLL int MXEnginePushAsync(EngineAsyncFunc async_func, void* func_param,
3360  EngineFuncParamDeleter deleter, ContextHandle ctx_handle,
3361  EngineVarHandle const_vars_handle, int num_const_vars,
3362  EngineVarHandle mutable_vars_handle, int num_mutable_vars,
3363  EngineFnPropertyHandle prop_handle DEFAULT(NULL),
3364  int priority DEFAULT(0), const char* opr_name DEFAULT(NULL),
3365  bool wait DEFAULT(false));
3366 
3382 MXNET_DLL int MXEnginePushSync(EngineSyncFunc sync_func, void* func_param,
3383  EngineFuncParamDeleter deleter, ContextHandle ctx_handle,
3384  EngineVarHandle const_vars_handle, int num_const_vars,
3385  EngineVarHandle mutable_vars_handle, int num_mutable_vars,
3386  EngineFnPropertyHandle prop_handle DEFAULT(NULL),
3387  int priority DEFAULT(0), const char* opr_name DEFAULT(NULL));
3393 MXNET_DLL int MXShallowCopyNDArray(NDArrayHandle src, NDArrayHandle* out);
3399 MXNET_DLL int MXShallowCopySymbol(SymbolHandle src, SymbolHandle * out);
3400 
3418 MXNET_DLL int MXEnginePushAsyncND(EngineAsyncFunc async_func, void* func_param,
3419  EngineFuncParamDeleter deleter, ContextHandle ctx_handle,
3420  NDArrayHandle* const_nds_handle, int num_const_nds,
3421  NDArrayHandle* mutable_nds_handle, int num_mutable_nds,
3422  EngineFnPropertyHandle prop_handle DEFAULT(NULL),
3423  int priority DEFAULT(0), const char* opr_name DEFAULT(NULL),
3424  bool wait DEFAULT(false));
3425 
3441 MXNET_DLL int MXEnginePushSyncND(EngineSyncFunc sync_func, void* func_param,
3442  EngineFuncParamDeleter deleter, ContextHandle ctx_handle,
3443  NDArrayHandle* const_nds_handle, int num_const_nds,
3444  NDArrayHandle* mutable_nds_handle, int num_mutable_nds,
3445  EngineFnPropertyHandle prop_handle DEFAULT(NULL),
3446  int priority DEFAULT(0), const char* opr_name DEFAULT(NULL));
3447 
3448 #ifdef __cplusplus
3449 }
3450 #endif // __cplusplus
3451 
3452 #endif // MXNET_C_API_H_
MXNET_DLL int MXKVStoreCreate(const char *type, KVStoreHandle *out)
Create a kvstore.
int(* CustomFunctionDelFunc)(void *)
Definition: c_api.h:217
MXNET_DLL int MXSymbolListAttr(SymbolHandle symbol, uint32_t *out_size, const char ***out)
Get all attributes from symbol, including all descendents.
MXNET_DLL int MXProfileAdjustCounter(ProfileHandle counter_handle, int64_t value)
Adjust a counter by the given amount, given its handle.
MXNET_DLL int MXProfileCreateFrame(ProfileHandle domain, const char *frame_name, ProfileHandle *out)
Create profile frame.
Definition: c_api.h:172
MXNET_DLL int MXSymbolRemoveAmpCast(SymbolHandle sym_handle, SymbolHandle *ret_sym_handle)
Remove the operators amp_cast and amp_multicast.
MXNET_DLL int MXDataIterGetLabel(DataIterHandle handle, NDArrayHandle *out)
Get the handle to the NDArray of underlying label.
MXNET_DLL int MXNDArrayCallDLPackDeleter(DLManagedTensorHandle dlpack)
Delete a dlpack tensor.
MXNET_DLL int MXNDArraySetGradState(NDArrayHandle handle, int state)
set the flag for gradient array state.
MXNET_DLL int MXNDArrayAt64(NDArrayHandle handle, int64_t idx, NDArrayHandle *out)
Index the NDArray along axis 0. This api is available when MXNet is built with flag USE_INT64_TENSOR_...
MXNET_DLL int MXSymbolListAuxiliaryStates(SymbolHandle symbol, uint32_t *out_size, const char ***out_str_array)
List auxiliary states in the symbol.
MXNET_DLL int MXSymbolListAttrShallow(SymbolHandle symbol, uint32_t *out_size, const char ***out)
Get all attributes from symbol, excluding descendents.
MXNET_DLL int MXProfilePause(int paused)
Pause profiler tuning collection for worker/current process.
MXNET_DLL int MXSetCalibTableToQuantizedSymbol(SymbolHandle qsym_handle, const uint32_t num_layers, const char **layer_names, const float *low_quantiles, const float *high_quantiles, SymbolHandle *ret_sym_handle)
Set calibration table to node attributes in the sym.
MXNET_DLL int MXAutogradComputeGradient(uint32_t num_output, NDArrayHandle *output_handles)
compute the gradient of outputs w.r.t variabels
MXNET_DLL int MXNDArrayGetShapeEx(NDArrayHandle handle, int *out_dim, const int **out_pdata)
get the shape of the array This api is available when MXNet is built with flag USE_INT64_TENSOR_SIZE=...
MXNET_DLL int MXRecordIOReaderSeek(RecordIOHandle handle, size_t pos)
Set the current reader pointer position.
void * DataIterCreator
handle a dataiter creator
Definition: c_api.h:81
int(* CustomOpInferShapeFunc)(int, int *, int **, void *)
Definition: c_api.h:189
MXNET_DLL int MXDataIterGetIndex(DataIterHandle handle, uint64_t **out_index, uint64_t *out_size)
Get the image index by array.
MXNET_DLL int MXRtcPush(RtcHandle handle, uint32_t num_input, uint32_t num_output, NDArrayHandle *inputs, NDArrayHandle *outputs, uint32_t gridDimX, uint32_t gridDimY, uint32_t gridDimZ, uint32_t blockDimX, uint32_t blockDimY, uint32_t blockDimZ)
Run cuda kernel.
MXNET_DLL int MXKVStoreIsServerNode(int *ret)
return whether or not this process is a server node.
void * ExecutorHandle
handle to an Executor
Definition: c_api.h:79
MXNET_DLL int MXProfileCreateEvent(const char *event_name, ProfileHandle *out)
Create profile event.
MXNET_DLL int MXKVStorePull(KVStoreHandle handle, uint32_t num, const int *keys, NDArrayHandle *vals, int priority)
pull a list of (key, value) pairs from the kvstore
void * p_infer_shape
Definition: c_api.h:145
MXNET_DLL int MXNDArraySaveRawBytes(NDArrayHandle handle, size_t *out_size, const char **out_buf)
save the NDArray into raw bytes.
PaddingExp< SrcExp, DType, ExpInfo< SrcExp >::kDim > pad(const Exp< SrcExp, DType, etype > &src, index_t pad)
padding expression, pad a image with zeros on boundaries, padding affects shape[0], and shape[1]
Definition: pad.h:72
Definition: c_api.h:177
MXNET_DLL int MXAutogradMarkVariables(uint32_t num_var, NDArrayHandle *var_handles, uint32_t *reqs_array, NDArrayHandle *grad_handles)
mark NDArrays as variables to compute gradient for autograd
void(* list_arguments)(char ***, void *)
Definition: c_api.h:125
void * SymbolHandle
handle to a symbol that can be bind as operator
Definition: c_api.h:75
MXNET_DLL int MXNDArrayGetDType(NDArrayHandle handle, int *out_dtype)
get the type of the data in NDArray
MXNET_DLL int MXRtcCudaKernelCall(CudaKernelHandle handle, int dev_id, void **args, uint32_t grid_dim_x, uint32_t grid_dim_y, uint32_t grid_dim_z, uint32_t block_dim_x, uint32_t block_dim_y, uint32_t block_dim_z, uint32_t shared_mem)
MXNET_DLL int MXAggregateProfileStatsPrint(const char **out_str, int reset)
Deprecated, use MXAggregateProfileStatsPrintEx instead.
MXNET_DLL int MXSymbolInferShapePartialEx64(SymbolHandle sym, uint32_t num_args, const char **keys, const int64_t *arg_ind_ptr, const int64_t *arg_shape_data, size_t *in_shape_size, const int **in_shape_ndim, const int64_t ***in_shape_data, size_t *out_shape_size, const int **out_shape_ndim, const int64_t ***out_shape_data, size_t *aux_shape_size, const int **aux_shape_ndim, const int64_t ***aux_shape_data, int *complete)
partially infer shape of unknown input shapes given the known one.
float mx_float
manually define float
Definition: c_api.h:60
MXNET_DLL int MXNDArraySlice(NDArrayHandle handle, uint32_t slice_begin, uint32_t slice_end, NDArrayHandle *out)
Slice the NDArray along axis 0. This api is available when MXNet is built with flag USE_INT64_TENSOR_...
MXNET_DLL int MXSetProfilerState(int state)
Set up state of profiler for current process.
int(* CustomOpBwdDepFunc)(const int *, const int *, const int *, int *, int **, void *)
Definition: c_api.h:197
MXNET_DLL int MXSymbolCutSubgraph(SymbolHandle sym, SymbolHandle **inputs, int *input_size)
Cut a subgraph whose nodes are marked with a subgraph attribute. The input graph will be modified...
MXNET_DLL int MXNDArraySyncCheckFormat(NDArrayHandle handle, const bool full_check)
check whether the NDArray format is valid
MXNET_DLL int MXGenBackendSubgraph(SymbolHandle sym_handle, const char *backend, SymbolHandle *ret_sym_handle)
Run subgraph pass based on the backend provided.
MXNET_DLL int MXNDArrayCreateEx64(const int64_t *shape, int ndim, int dev_type, int dev_id, int delay_alloc, int dtype, NDArrayHandle *out)
create a NDArray with specified shape and data type This api is available when MXNet is built with fl...
int(* CustomFunctionBwdFunc)(int, int, void **, const int *, const int, void *)
Definition: c_api.h:214
void * p_forward
Definition: c_api.h:143
void * ProfileHandle
handle to a Profile object (domain, duration, counter, etc.)
Definition: c_api.h:95
MXNET_DLL int MXAutogradBackward(uint32_t num_output, NDArrayHandle *output_handles, NDArrayHandle *ograd_handles, int retain_graph)
compute the gradient of outputs w.r.t variabels
Definition: c_api.h:166
MXNET_DLL int MXCachedOpRegisterOpHook(NDArrayHandle handle, CachedOpMonitorCallback callback, bool monitor_all)
cached op set monitor callback
MXNET_DLL int MXSymbolGetNumOutputs(SymbolHandle symbol, uint32_t *output_count)
Get number of outputs of the symbol.
MXNET_DLL int MXProfileDestroyHandle(ProfileHandle frame_handle)
Destroy a frame.
CustomFunctionCallbacks
Definition: c_api.h:209
MXNET_DLL int MXSymbolGetInputSymbols(SymbolHandle sym, SymbolHandle **inputs, int *input_size)
Get the input symbols of the graph.
MXNET_DLL int MXExecutorSetMonitorCallbackEX(ExecutorHandle handle, ExecutorMonitorCallback callback, void *callback_handle, bool monitor_all)
set a call back to notify the completion of operation
MXNET_DLL int MXExecutorBindEX(SymbolHandle symbol_handle, int dev_type, int dev_id, uint32_t num_map_keys, const char **map_keys, const int *map_dev_types, const int *map_dev_ids, uint32_t len, NDArrayHandle *in_args, NDArrayHandle *arg_grad_store, uint32_t *grad_req_type, uint32_t aux_states_len, NDArrayHandle *aux_states, ExecutorHandle shared_exec, ExecutorHandle *out)
Generate Executor from symbol, This is advanced function, allow specify group2ctx map...
MXNET_DLL int MXProfileSetMarker(ProfileHandle domain, const char *instant_marker_name, const char *scope)
Mark a single instant in time.
MXNET_DLL int MXKVStoreFree(KVStoreHandle handle)
Delete a KVStore handle.
MXNET_DLL int MXKVStoreBroadcastEx(KVStoreHandle handle, mx_uint vnum, const char **vkeys, mx_uint onum, const char **okeys, NDArrayHandle *vals, NDArrayHandle *outs, int priority)
broadcast a list of (key, value) pairs from the kvstore, where each key is a string ...
MXNET_DLL int MXShallowCopySymbol(SymbolHandle src, SymbolHandle *out)
Create an Symbol from source sharing the same graph structure.
MXNET_DLL int MXRtcCudaModuleFree(CudaModuleHandle handle)
MXNET_DLL int MXIsNumpyShape(int *curr)
get whether numpy compatibility is on
MXNET_DLL int MXKVStorePullRowSparse(KVStoreHandle handle, uint32_t num, const int *keys, NDArrayHandle *vals, const NDArrayHandle *row_ids, int priority)
pull a list of (key, value) pairs from the kvstore, where each key is an integer. The NDArray pulled ...
void * AtomicSymbolCreator
handle to a function that takes param and creates symbol
Definition: c_api.h:71
MXNET_DLL int MXNDArrayGetAuxType(NDArrayHandle handle, uint32_t i, int *out_type)
get the type of the ith aux data in NDArray This api is available when MXNet is built with flag USE_I...
MXNET_DLL int MXRtcFree(RtcHandle handle)
Delete a MXRtc object.
MXNET_DLL int MXFuncDescribe(FunctionHandle fun, uint32_t *num_use_vars, uint32_t *num_scalars, uint32_t *num_mutate_vars, int *type_mask)
get the argument requirements of the function
void * p_backward
Definition: c_api.h:128
MXNET_DLL int MXCreateCachedOpEx(SymbolHandle handle, int num_flags, const char **keys, const char **vals, CachedOpHandle *out)
create cached operator
void() MXKVStoreUpdater(int key, NDArrayHandle recv, NDArrayHandle local, void *handle)
user-defined updater for the kvstore It&#39;s this updater&#39;s responsibility to delete recv and local ...
Definition: c_api.h:2974
MXNET_DLL int MXSetIsNumpyShape(int is_np_shape, int *prev)
set numpy compatibility switch
MXNET_DLL int MXSymbolPrint(SymbolHandle symbol, const char **out_str)
Print the content of symbol, used for debug.
MXNET_DLL int MXGetGPUMemoryInformation64(int dev, uint64_t *free_mem, uint64_t *total_mem)
get the free and total available memory on a GPU
int(* CustomOpFBFunc)(int, void **, int *, const int *, const int, void *)
Definition: c_api.h:184
MXNET_DLL int MXKVStoreBarrier(KVStoreHandle handle)
global barrier among all worker machines
MXNET_DLL int MXExecutorSimpleBindEx(SymbolHandle symbol_handle, int dev_type, int dev_id, const uint32_t num_g2c_keys, const char **g2c_keys, const int *g2c_dev_types, const int *g2c_dev_ids, const uint32_t provided_grad_req_list_len, const char **provided_grad_req_names, const char **provided_grad_req_types, const uint32_t num_provided_arg_shapes, const char **provided_arg_shape_names, const int *provided_arg_shape_data, const uint32_t *provided_arg_shape_idx, const uint32_t num_provided_arg_dtypes, const char **provided_arg_dtype_names, const int *provided_arg_dtypes, const uint32_t num_provided_arg_stypes, const char **provided_arg_stype_names, const int *provided_arg_stypes, const uint32_t num_shared_arg_names, const char **shared_arg_name_list, int *shared_buffer_len, const char **shared_buffer_name_list, NDArrayHandle *shared_buffer_handle_list, const char ***updated_shared_buffer_name_list, NDArrayHandle **updated_shared_buffer_handle_list, uint32_t *num_in_args, NDArrayHandle **in_args, NDArrayHandle **arg_grads, uint32_t *num_aux_states, NDArrayHandle **aux_states, ExecutorHandle shared_exec_handle, ExecutorHandle *out)
MXNET_DLL int MXDataIterBeforeFirst(DataIterHandle handle)
Call iterator.Reset.
MXNET_DLL int MXNDArrayGetShape(NDArrayHandle handle, uint32_t *out_dim, const uint32_t **out_pdata)
DEPRECATED. Use MXNDArrayGetShapeEx instead. get the shape of the array.
MXNET_DLL int MXNDArrayGetAuxNDArray64(NDArrayHandle handle, int64_t i, NDArrayHandle *out)
Get a deep copy of the ith aux data blob This api is available when MXNet is built with flag USE_INT6...
MXNET_DLL int MXNDArrayCreateEx(const uint32_t *shape, uint32_t ndim, int dev_type, int dev_id, int delay_alloc, int dtype, NDArrayHandle *out)
create a NDArray with specified shape and data type This api is available when MXNet is built with fl...
MXNET_DLL int MXNDArrayDetach(NDArrayHandle handle, NDArrayHandle *out)
detach and ndarray from computation graph by clearing entry_
void(* CachedOpMonitorCallback)(const char *, const char *, NDArrayHandle)
Monitor callback called at operator level for cached op.
Definition: c_api.h:115
MXNET_DLL int MXAggregateProfileStatsPrintEx(const char **out_str, int reset, int format, int sort_by, int ascending)
Print sorted aggregate stats to the a string How aggregate stats are stored will not change...
bool enabled
Definition: c_api.h:161
MXNET_DLL int MXProfileDurationStop(ProfileHandle duration_handle)
Stop timing the duration of a profile duration object such as an event, task or frame.
MXNET_DLL int MXEngineSetBulkSize(int bulk_size, int *prev_bulk_size)
set bulk execution limit
MXNET_DLL int MXNDArrayFree(NDArrayHandle handle)
free the narray handle
MXNET_DLL int MXStorageEmptyCache(int dev_type, int dev_id)
Release all unreferenced memory from the devices storage managers memory pool.
MXNET_DLL int MXKVStoreSetUpdaterEx(KVStoreHandle handle, MXKVStoreUpdater updater, MXKVStoreStrUpdater str_updater, void *updater_handle)
register a push updater with int keys and one with string keys
void(* ExecutorMonitorCallback)(const char *, NDArrayHandle, void *)
Definition: c_api.h:111
Definition: c_api.h:167
MXNET_DLL int MXKVStoreGetGroupSize(KVStoreHandle handle, int *ret)
return The number of nodes in this group, which is
MXNET_DLL int MXSetNumOMPThreads(int thread_num)
Set the number of OMP threads to use.
MXNET_DLL int MXRandomSeed(int seed)
Seed all global random number generators in mxnet.
MXNET_DLL int MXExecutorOutputs(ExecutorHandle handle, uint32_t *out_size, NDArrayHandle **out)
Get executor&#39;s head NDArray.
MXNET_DLL int MXKVStorePullEx(KVStoreHandle handle, uint32_t num, const char **keys, NDArrayHandle *vals, int priority)
pull a list of (key, value) pairs from the kvstore, where each key is a string
MXNET_DLL int MXNDArrayAt(NDArrayHandle handle, uint32_t idx, NDArrayHandle *out)
Index the NDArray along axis 0. This api is available when MXNet is built with flag USE_INT64_TENSOR_...
MXNET_DLL int MXProfileCreateDomain(const char *domain, ProfileHandle *out)
Create profiling domain.
MXNET_DLL int MXSymbolFree(SymbolHandle symbol)
Free the symbol handle.
Definition: c_api.h:210
MXNET_DLL int MXSymbolGetAttr(SymbolHandle symbol, const char *key, const char **out, int *success)
Get string attribute from symbol.
MXNET_DLL int MXShallowCopyNDArray(NDArrayHandle src, NDArrayHandle *out)
Create an NDArray from source sharing the same data chunk.
Definition: c_api.h:134
void * p_forward
Definition: c_api.h:127
MXNET_DLL int MXExecutorBackward(ExecutorHandle handle, uint32_t len, NDArrayHandle *head_grads)
Excecutor run backward.
void * p_list_arguments
Definition: c_api.h:131
MXNET_DLL int MXKVStoreInitEx(KVStoreHandle handle, uint32_t num, const char **keys, NDArrayHandle *vals)
Init a list of (key,value) pairs in kvstore, where each key is a string.
MXNET_DLL int MXNDArrayCreate(const uint32_t *shape, uint32_t ndim, int dev_type, int dev_id, int delay_alloc, NDArrayHandle *out)
create a NDArray with specified shape
MXNET_DLL int MXKVStoreGetRank(KVStoreHandle handle, int *ret)
return The rank of this node in its group, which is in [0, GroupSize).
MXNET_DLL int MXNDArrayGetGrad(NDArrayHandle handle, NDArrayHandle *out)
return gradient buffer attached to this NDArray
MXNET_DLL int MXNDArrayGetGradState(NDArrayHandle handle, int *out)
set the flag for gradient array state.
MXNET_DLL int MXRecordIOWriterFree(RecordIOHandle handle)
Delete a RecordIO writer object.
MXNET_DLL int MXExecutorSimpleBindEx64(SymbolHandle symbol_handle, int dev_type, int dev_id, const uint32_t num_g2c_keys, const char **g2c_keys, const int *g2c_dev_types, const int *g2c_dev_ids, const uint32_t provided_grad_req_list_len, const char **provided_grad_req_names, const char **provided_grad_req_types, const uint32_t num_provided_arg_shapes, const char **provided_arg_shape_names, const int64_t *provided_arg_shape_data, const uint32_t *provided_arg_shape_idx, const uint32_t num_provided_arg_dtypes, const char **provided_arg_dtype_names, const int *provided_arg_dtypes, const uint32_t num_provided_arg_stypes, const char **provided_arg_stype_names, const int *provided_arg_stypes, const uint32_t num_shared_arg_names, const char **shared_arg_name_list, int *shared_buffer_len, const char **shared_buffer_name_list, NDArrayHandle *shared_buffer_handle_list, const char ***updated_shared_buffer_name_list, NDArrayHandle **updated_shared_buffer_handle_list, uint32_t *num_in_args, NDArrayHandle **in_args, NDArrayHandle **arg_grads, uint32_t *num_aux_states, NDArrayHandle **aux_states, ExecutorHandle shared_exec_handle, ExecutorHandle *out)
void * p_declare_backward_dependency
Definition: c_api.h:148
MXNET_DLL int MXNDArrayGetData(NDArrayHandle handle, void **out_pdata)
get the content of the data in NDArray
int(* CustomOpInferTypeFunc)(int, int *, void *)
Definition: c_api.h:196
MXNET_DLL int MXKVStoreSendCommmandToServers(KVStoreHandle handle, int cmd_id, const char *cmd_body)
Send a command to all server nodes.
MXNET_DLL int MXFuncInvoke(FunctionHandle fun, NDArrayHandle *use_vars, float *scalar_args, NDArrayHandle *mutate_vars)
invoke a function, the array size of passed in arguments must match the values in the ...
Definition: c_api.h:174
MXNET_DLL int MXExecutorReshapeEx(int partial_shaping, int allow_up_sizing, int dev_type, int dev_id, uint32_t num_map_keys, const char **map_keys, const int *map_dev_types, const int *map_dev_ids, const uint32_t num_provided_arg_shapes, const char **provided_arg_shape_names, const int *provided_arg_shape_data, const uint32_t *provided_arg_shape_idx, uint32_t *num_in_args, NDArrayHandle **in_args, NDArrayHandle **arg_grads, uint32_t *num_aux_states, NDArrayHandle **aux_states, ExecutorHandle shared_exec, ExecutorHandle *out)
Return a new executor with the same symbol and shared memory, but different input/output shapes...
void * CudaKernelHandle
handle to rtc cuda kernel
Definition: c_api.h:93
MXNET_DLL int MXRandomSeedContext(int seed, int dev_type, int dev_id)
Seed the global random number generator of the given device.
void * p_list_arguments
Definition: c_api.h:147
MXNET_DLL int MXSymbolGetChildren(SymbolHandle symbol, SymbolHandle *out)
Get a symbol that contains only direct children.
MXNET_DLL int MXKVStoreRunServer(KVStoreHandle handle, MXKVStoreServerController controller, void *controller_handle)
Run as server (or scheduler)
MXNET_DLL int MXInvokeCachedOpEx(CachedOpHandle handle, int num_inputs, NDArrayHandle *inputs, int *num_outputs, NDArrayHandle **outputs, const int **out_stypes)
invoke a cached op
MXNET_DLL int MXGenAtomicSymbolFromSymbol(SymbolHandle sym_handle, SymbolHandle *ret_sym_handle)
Generate atomic symbol (able to be composed) from a source symbol.
MXNET_DLL int MXAutogradIsRecording(bool *curr)
get whether autograd recording is on
MXNET_DLL int MXReducePrecisionSymbol(SymbolHandle sym_handle, SymbolHandle *ret_sym_handle, uint32_t num_args, const int *arg_type_data, uint32_t num_ind_ptr, const int *ind_ptr, const int *target_dtype, const int cast_optional_params, const uint32_t num_target_dtype_op_names, const uint32_t num_fp32_op_names, const uint32_t num_widest_dtype_op_names, const uint32_t num_conditional_fp32_op_names, const uint32_t num_excluded_symbols, const uint32_t num_model_params, const char **target_dtype_op_names, const char **fp32_op_names, const char **widest_dtype_op_names, const char **conditional_fp32_op_names, const char **excluded_symbols, const char **conditional_param_names, const char **conditional_param_vals, const char **model_param_names, const char **arg_names)
Convert a symbol into a mixed precision symbol with cast operators for target dtype casting...
MXNET_DLL int MXNDArrayToDLPack(NDArrayHandle handle, DLManagedTensorHandle *out_dlpack)
Create a reference view of NDArray that represents as DLManagedTensor Notice: MXNet uses asynchronous...
int(* CustomOpPropCreator)(const char *, const int, const char **, const char **, struct MXCallbackList *)
Definition: c_api.h:204
MXNET_DLL int MXFuncInvokeEx(FunctionHandle fun, NDArrayHandle *use_vars, float *scalar_args, NDArrayHandle *mutate_vars, int num_params, char **param_keys, char **param_vals)
invoke a function, the array size of passed in arguments must match the values in the ...
MXNET_DLL int MXLoadLib(const char *path, unsigned verbose)
Load library dynamically.
MXNET_DLL int MXExecutorSimpleBind(SymbolHandle symbol_handle, int dev_type, int dev_id, const uint32_t num_g2c_keys, const char **g2c_keys, const int *g2c_dev_types, const int *g2c_dev_ids, const uint32_t provided_grad_req_list_len, const char **provided_grad_req_names, const char **provided_grad_req_types, const uint32_t num_provided_arg_shapes, const char **provided_arg_shape_names, const uint32_t *provided_arg_shape_data, const uint32_t *provided_arg_shape_idx, const uint32_t num_provided_arg_dtypes, const char **provided_arg_dtype_names, const int *provided_arg_dtypes, const uint32_t num_provided_arg_stypes, const char **provided_arg_stype_names, const int *provided_arg_stypes, const uint32_t num_shared_arg_names, const char **shared_arg_name_list, int *shared_buffer_len, const char **shared_buffer_name_list, NDArrayHandle *shared_buffer_handle_list, const char ***updated_shared_buffer_name_list, NDArrayHandle **updated_shared_buffer_handle_list, uint32_t *num_in_args, NDArrayHandle **in_args, NDArrayHandle **arg_grads, uint32_t *num_aux_states, NDArrayHandle **aux_states, ExecutorHandle shared_exec_handle, ExecutorHandle *out)
DEPRECATED. Use MXExecutorSimpleBindEx instead.
MXNET_DLL int MXSymbolCreateFromFile(const char *fname, SymbolHandle *out)
Load a symbol from a json file.
MXNET_DLL int MXDataIterGetData(DataIterHandle handle, NDArrayHandle *out)
Get the handle to the NDArray of underlying data.
MXNET_DLL int MXSymbolCreateGroup(uint32_t num_symbols, SymbolHandle *symbols, SymbolHandle *out)
Create a Symbol by grouping list of symbols together.
int num_callbacks
Definition: c_api.h:154
MXNET_DLL int MXGetGPUCount(int *out)
Get the number of GPUs.
MXNET_DLL int MXListAllOpNames(uint32_t *out_size, const char ***out_array)
list all the available operator names, include entries.
MXNET_DLL int MXFreeCachedOp(CachedOpHandle handle)
free cached operator
MXNET_DLL int MXRecordIOReaderFree(RecordIOHandle handle)
Delete a RecordIO reader object.
MXNET_DLL int MXNotifyShutdown()
Notify the engine about a shutdown, This can help engine to print less messages into display...
void(* forward)(int, float **, int *, unsigned **, int *, void *)
Definition: c_api.h:121
MXNET_DLL int MXSymbolInferTypePartial(SymbolHandle sym, uint32_t num_args, const char **keys, const int *arg_type_data, uint32_t *in_type_size, const int **in_type_data, uint32_t *out_type_size, const int **out_type_data, uint32_t *aux_type_size, const int **aux_type_data, int *complete)
partially infer type of unknown input types given the known one.
MXNET_DLL int MXKVStorePushEx(KVStoreHandle handle, uint32_t num, const char **keys, NDArrayHandle *vals, int priority)
Push a list of (key,value) pairs to kvstore, where each key is a string.
MXNET_DLL int MXExecutorSetMonitorCallback(ExecutorHandle handle, ExecutorMonitorCallback callback, void *callback_handle)
set a call back to notify the completion of operation
MXNET_DLL int MXSymbolGetAtomicSymbolInfo(AtomicSymbolCreator creator, const char **name, const char **description, uint32_t *num_args, const char ***arg_names, const char ***arg_type_infos, const char ***arg_descriptions, const char **key_var_num_args, const char **return_type DEFAULT(NULL))
Get the detailed information about atomic symbol.
MXNET_DLL int MXEnginePushAsyncND(EngineAsyncFunc async_func, void *func_param, EngineFuncParamDeleter deleter, ContextHandle ctx_handle, NDArrayHandle *const_nds_handle, int num_const_nds, NDArrayHandle *mutable_nds_handle, int num_mutable_nds, EngineFnPropertyHandle prop_handle DEFAULT(NULL), int priority DEFAULT(0), const char *opr_name DEFAULT(NULL), bool wait DEFAULT(false))
Push an asynchronous operation to the engine.
Definition: c_api.h:171
int(* CustomOpDelFunc)(void *)
Definition: c_api.h:187
MXNET_DLL int MXProfileCreateTask(ProfileHandle domain, const char *task_name, ProfileHandle *out)
Create profile task.
const char * name
Definition: c_api.h:160
MXNET_DLL int MXAutogradSetIsRecording(int is_recording, int *prev)
set whether to record operator for autograd
MXNET_DLL int MXNDArrayLoad(const char *fname, uint32_t *out_size, NDArrayHandle **out_arr, uint32_t *out_name_size, const char ***out_names)
Load list of narray from the file.
MXNET_DLL int MXSymbolGetInternals(SymbolHandle symbol, SymbolHandle *out)
Get a symbol that contains all the internals.
Definition: c_api.h:179
MXNET_DLL int MXFuncGetInfo(FunctionHandle fun, const char **name, const char **description, uint32_t *num_args, const char ***arg_names, const char ***arg_type_infos, const char ***arg_descriptions, const char **return_type DEFAULT(NULL))
Get the information of the function handle.
MXNET_DLL int MXNDArrayGetAuxNDArray(NDArrayHandle handle, uint32_t i, NDArrayHandle *out)
Get a deep copy of the ith aux data blob This api is available when MXNet is built with flag USE_INT6...
Definition: c_api.h:211
MXNET_DLL int MXKVStoreGetType(KVStoreHandle handle, const char **type)
get the type of the kvstore
MXNET_DLL int MXImperativeInvoke(AtomicSymbolCreator creator, int num_inputs, NDArrayHandle *inputs, int *num_outputs, NDArrayHandle **outputs, int num_params, const char **param_keys, const char **param_vals)
invoke a nnvm op and imperative function
void(* EngineSyncFunc)(void *, void *)
Engine synchronous operation.
Definition: c_api.h:108
Definition: c_api.h:178
MXNET_DLL int MXQuantizeSymbol(SymbolHandle sym_handle, SymbolHandle *ret_sym_handle, const int *dev_type, const uint32_t num_excluded_sym_names, const char **excluded_sym_names, const uint32_t num_excluded_op_names, const char **excluded_op_names, const uint32_t num_offline, const char **offline_params, const char *quantized_dtype, const bool calib_quantize, const char *quantize_mode, const char *quantize_granularity, uint32_t *out_num_calib_names, const char ***out_calib_names)
Convert a symbol into a quantized symbol where FP32 operators are replaced with INT8.
MXNET_DLL int MXSymbolInferShapePartialEx(SymbolHandle sym, uint32_t num_args, const char **keys, const uint32_t *arg_ind_ptr, const int *arg_shape_data, uint32_t *in_shape_size, const int **in_shape_ndim, const int ***in_shape_data, uint32_t *out_shape_size, const int **out_shape_ndim, const int ***out_shape_data, uint32_t *aux_shape_size, const int **aux_shape_ndim, const int ***aux_shape_data, int *complete)
partially infer shape of unknown input shapes given the known one.
MXNET_DLL int MXNDArrayGetStorageType(NDArrayHandle handle, int *out_storage_type)
get the storage type of the array
MXNET_DLL int MXListFunctions(uint32_t *out_size, FunctionHandle **out_array)
list all the available functions handles most user can use it to list all the needed functions ...
MXNET_DLL int MXGetVersion(int *out)
get the MXNet library version as an integer
MXNET_DLL int MXNDArrayCreateSparseEx(int storage_type, const uint32_t *shape, uint32_t ndim, int dev_type, int dev_id, int delay_alloc, int dtype, uint32_t num_aux, int *aux_type, uint32_t *aux_ndims, const uint32_t *aux_shape, NDArrayHandle *out)
create an empty sparse NDArray with specified shape and data type This api is available when MXNet is...
int(* MXGenericCallback)(void)
Definition: c_api.h:151
void(* EngineFuncParamDeleter)(void *)
Callback to free the param for EngineAsyncFunc/EngineSyncFunc.
Definition: c_api.h:110
MXNET_DLL int MXAutogradIsTraining(bool *curr)
get whether training mode is on
MXNET_DLL int MXProcessProfilePause(int paused, int profile_process, KVStoreHandle kvStoreHandle)
Pause profiler tuning collection.
const void * ContextHandle
handle to Context
Definition: c_api.h:99
MXNET_DLL int MXRtcCudaKernelFree(CudaKernelHandle handle)
MXNET_DLL int MXKVStorePullWithSparse(KVStoreHandle handle, uint32_t num, const int *keys, NDArrayHandle *vals, int priority, bool ignore_sparse)
pull a list of (key, value) pairs from the kvstore
void * p_list_outputs
Definition: c_api.h:146
void(* EngineAsyncFunc)(void *, void *, void *)
Engine asynchronous operation.
Definition: c_api.h:106
MXNET_DLL int MXCreateCachedOp(SymbolHandle handle, CachedOpHandle *out)
create cached operator
MXNET_DLL int MXNDArrayReshape64(NDArrayHandle handle, int ndim, dim_t *dims, bool reverse, NDArrayHandle *out)
Reshape the NDArray.
MXNET_DLL int MXNDArrayWaitToRead(NDArrayHandle handle)
Wait until all the pending writes with respect NDArray are finished. Always call this before read dat...
MXNET_DLL int MXProfileDurationStart(ProfileHandle duration_handle)
Start timing the duration of a profile duration object such as an event, task or frame.
MXNET_DLL int MXEnginePushSyncND(EngineSyncFunc sync_func, void *func_param, EngineFuncParamDeleter deleter, ContextHandle ctx_handle, NDArrayHandle *const_nds_handle, int num_const_nds, NDArrayHandle *mutable_nds_handle, int num_mutable_nds, EngineFnPropertyHandle prop_handle DEFAULT(NULL), int priority DEFAULT(0), const char *opr_name DEFAULT(NULL))
Push a synchronous operation to the engine.
MXNET_DLL int MXSymbolListArguments(SymbolHandle symbol, uint32_t *out_size, const char ***out_str_array)
List arguments in the symbol.
void * RtcHandle
handle to MXRtc
Definition: c_api.h:89
MXNET_DLL int MXKVStorePushPull(KVStoreHandle handle, mx_uint vnum, const int *vkeys, mx_uint onum, const int *okeys, NDArrayHandle *vals, NDArrayHandle *outs, int priority)
push and pull a list of (key, value) pairs from the kvstore
MXNET_DLL int MXNDArraySlice64(NDArrayHandle handle, int64_t slice_begin, int64_t slice_end, NDArrayHandle *out)
Slice the NDArray along axis 0. This api is available when MXNet is built with flag USE_INT64_TENSOR_...
MXNET_DLL int MXSymbolInferType(SymbolHandle sym, uint32_t num_args, const char **keys, const int *arg_type_data, uint32_t *in_type_size, const int **in_type_data, uint32_t *out_type_size, const int **out_type_data, uint32_t *aux_type_size, const int **aux_type_data, int *complete)
infer type of unknown input types given the known one. The types are packed into a CSR matrix represe...
MXNET_DLL int MXImperativeInvokeEx(AtomicSymbolCreator creator, int num_inputs, NDArrayHandle *inputs, int *num_outputs, NDArrayHandle **outputs, int num_params, const char **param_keys, const char **param_vals, const int **out_stypes)
invoke a nnvm op and imperative function
#define DEFAULT(x)
Inhibit C++ name-mangling for MXNet functions.
Definition: c_api.h:37
MXNET_DLL int MXKVStoreGetNumDeadNode(KVStoreHandle handle, const int node_id, int *number, const int timeout_sec DEFAULT(60))
Get the number of ps dead node(s) specified by {node_id}.
MXNET_DLL int MXRtcCudaKernelCreate(CudaModuleHandle handle, const char *name, int num_args, int *is_ndarray, int *is_const, int *arg_types, CudaKernelHandle *out)
void() MXKVStoreStrUpdater(const char *key, NDArrayHandle recv, NDArrayHandle local, void *handle)
user-defined updater for the kvstore with string keys It&#39;s this updater&#39;s responsibility to delete re...
Definition: c_api.h:2986
void * RecordIOHandle
handle to RecordIO
Definition: c_api.h:87
MXNET_DLL int MXKVStoreSetBarrierBeforeExit(KVStoreHandle handle, const int barrier_before_exit)
whether to do barrier when finalize
MXNET_DLL int MXSetProcessProfilerConfig(int num_params, const char *const *keys, const char *const *vals, KVStoreHandle kvstoreHandle)
Set up configuration of profiler for the process passed as profile_process in keys.
MXNET_DLL int MXEnginePushAsync(EngineAsyncFunc async_func, void *func_param, EngineFuncParamDeleter deleter, ContextHandle ctx_handle, EngineVarHandle const_vars_handle, int num_const_vars, EngineVarHandle mutable_vars_handle, int num_mutable_vars, EngineFnPropertyHandle prop_handle DEFAULT(NULL), int priority DEFAULT(0), const char *opr_name DEFAULT(NULL), bool wait DEFAULT(false))
Push an asynchronous operation to the engine.
MXNET_DLL int MXExecutorFree(ExecutorHandle handle)
Delete the executor.
MXNET_DLL int MXSymbolSaveToFile(SymbolHandle symbol, const char *fname)
Save a symbol into a json file.
MXNET_DLL int MXRtcCudaModuleCreate(const char *source, int num_options, const char **options, int num_exports, const char **exports, CudaModuleHandle *out)
void * p_infer_shape
Definition: c_api.h:129
void * AtomicSymbolHandle
handle to a AtomicSymbol
Definition: c_api.h:77
const void * EngineFnPropertyHandle
handle to Engine FnProperty
Definition: c_api.h:101
MXNET_DLL int MXSymbolCreateAtomicSymbol(AtomicSymbolCreator creator, uint32_t num_param, const char **keys, const char **vals, SymbolHandle *out)
Create an AtomicSymbol.
MXNET_DLL int MXProfileSetCounter(ProfileHandle counter_handle, uint64_t value)
Set a counter, given its handle.
MXNET_DLL int MXNDArrayCreateNone(NDArrayHandle *out)
Load TVM operator from the binary library.
MXNET_DLL int MXKVStorePullWithSparseEx(KVStoreHandle handle, uint32_t num, const char **keys, NDArrayHandle *vals, int priority, bool ignore_sparse)
pull a list of (key, value) pairs from the kvstore, where each key is a string
Definition: c_api.h:165
MXNET_DLL int MXDumpProcessProfile(int finished, int profile_process, KVStoreHandle kvStoreHandle)
Save profile and stop profiler.
void() MXKVStoreServerController(int head, const char *body, void *controller_handle)
the prototype of a server controller
Definition: c_api.h:3093
MXNET_DLL int MXSetProcessProfilerState(int state, int profile_process, KVStoreHandle kvStoreHandle)
Set up state of profiler for either worker or server process.
CustomOpCallbacks
Definition: c_api.h:164
MXNET_DLL int MXNDArrayCreateFromSharedMemEx(int shared_pid, int shared_id, const int *shape, int ndim, int dtype, NDArrayHandle *out)
Reconstruct NDArray from shared memory handle.
void * p_backward
Definition: c_api.h:144
MXNET_DLL int MXNDArrayGetAuxType64(NDArrayHandle handle, int64_t i, int *out_type)
get the type of the ith aux data in NDArray This api is available when MXNet is built with flag USE_I...
void * NDArrayHandle
handle to NDArray
Definition: c_api.h:67
Definition: c_api.h:159
void * KVStoreHandle
handle to KVStore
Definition: c_api.h:85
void * CudaModuleHandle
handle to rtc cuda module
Definition: c_api.h:91
MXNET_DLL int MXSymbolGetName(SymbolHandle symbol, const char **out, int *success)
Get string name from symbol.
MXNET_DLL int MXNDArraySave(const char *fname, uint32_t num_args, NDArrayHandle *args, const char **keys)
Save list of narray into the file.
MXNET_DLL int MXKVStorePullRowSparseEx(KVStoreHandle handle, uint32_t num, const char **keys, NDArrayHandle *vals, const NDArrayHandle *row_ids, int priority)
pull a list of (key, value) pairs from the kvstore, where each key is a string. The NDArray pulled ba...
MXNET_DLL int MXSymbolSaveToJSON(SymbolHandle symbol, const char **out_json)
Save a symbol into a json string.
MXNET_DLL int MXLibInfoFeatures(const struct LibFeature **libFeature, size_t *size)
Get list of features supported on the runtime.
MXNET_DLL int MXKVStoreInit(KVStoreHandle handle, uint32_t num, const int *keys, NDArrayHandle *vals)
Init a list of (key,value) pairs in kvstore.
MXNET_DLL int MXKVStoreSetUpdater(KVStoreHandle handle, MXKVStoreUpdater updater, void *updater_handle)
register a push updater
MXNET_DLL int MXNDArrayWaitToWrite(NDArrayHandle handle)
Wait until all the pending read/write with respect NDArray are finished. Always call this before writ...
CustomOpPropCallbacks
Definition: c_api.h:170
MXNET_DLL const char * MXGetLastError()
return str message of the last error all function in this file will return 0 when success and -1 when...
MXNET_DLL int MXSymbolGetAtomicSymbolName(AtomicSymbolCreator creator, const char **name)
Get the name of an atomic symbol.
MXNET_DLL int MXAutogradGetSymbol(NDArrayHandle handle, SymbolHandle *out)
MXNET_DLL int MXCustomFunctionRecord(int num_inputs, NDArrayHandle *inputs, int num_outputs, NDArrayHandle *outputs, struct MXCallbackList *callbacks)
Definition: c_api.h:173
void * CachedOpHandle
handle to cached operator
Definition: c_api.h:73
MXNET_DLL int MXSymbolCompose(SymbolHandle sym, const char *name, uint32_t num_args, const char **keys, SymbolHandle *args)
Compose the symbol on other symbols.
MXNET_DLL int MXNDArrayFromDLPack(DLManagedTensorHandle dlpack, NDArrayHandle *out_handle)
DEPRECATED. Use MXNDArrayFromDLPackEx instead.
MXNET_DLL int MXSymbolListOutputs(SymbolHandle symbol, uint32_t *out_size, const char ***out_str_array)
List returns in the symbol.
MXNET_DLL int MXNDArrayWaitAll()
wait until all delayed operations in the system is completed
MXNET_DLL int MXSymbolInferShapeEx(SymbolHandle sym, uint32_t num_args, const char **keys, const uint32_t *arg_ind_ptr, const int *arg_shape_data, uint32_t *in_shape_size, const int **in_shape_ndim, const int ***in_shape_data, uint32_t *out_shape_size, const int **out_shape_ndim, const int ***out_shape_data, uint32_t *aux_shape_size, const int **aux_shape_ndim, const int ***aux_shape_data, int *complete)
infer shape of unknown input shapes given the known one. The shapes are packed into a CSR matrix repr...
MXNET_DLL int MXDataIterGetIterInfo(DataIterCreator creator, const char **name, const char **description, uint32_t *num_args, const char ***arg_names, const char ***arg_type_infos, const char ***arg_descriptions)
Get the detailed information about data iterator.
MXNET_DLL int MXInvokeCachedOp(CachedOpHandle handle, int num_inputs, NDArrayHandle *inputs, int *num_outputs, NDArrayHandle **outputs)
invoke cached operator
MXNET_DLL int MXRecordIOWriterTell(RecordIOHandle handle, size_t *pos)
Get the current writer pointer position.
#define MXNET_DLL
MXNET_DLL prefix for windows.
Definition: c_api.h:54
MXNET_DLL int MXNDArraySyncCopyFromCPU(NDArrayHandle handle, const void *data, size_t size)
Perform a synchronize copy from a contiguous CPU memory region.
MXNET_DLL int MXEnginePushSync(EngineSyncFunc sync_func, void *func_param, EngineFuncParamDeleter deleter, ContextHandle ctx_handle, EngineVarHandle const_vars_handle, int num_const_vars, EngineVarHandle mutable_vars_handle, int num_mutable_vars, EngineFnPropertyHandle prop_handle DEFAULT(NULL), int priority DEFAULT(0), const char *opr_name DEFAULT(NULL))
Push a synchronous operation to the engine.
MXNET_DLL int MXRtcCreate(char *name, uint32_t num_input, uint32_t num_output, char **input_names, char **output_names, NDArrayHandle *inputs, NDArrayHandle *outputs, char *kernel, RtcHandle *out)
Create a MXRtc object.
MXNET_DLL int MXNDArrayGetContext(NDArrayHandle handle, int *out_dev_type, int *out_dev_id)
get the context of the NDArray
MXNET_DLL int MXSymbolGrad(SymbolHandle sym, uint32_t num_wrt, const char **wrt, SymbolHandle *out)
Get the gradient graph of the symbol.
MXNET_DLL int MXKVStoreSetGradientCompression(KVStoreHandle handle, uint32_t num_params, const char **keys, const char **vals)
Set parameters to use low-bit compressed gradients.
MXNET_DLL int MXRecordIOWriterCreate(const char *uri, RecordIOHandle *out)
Create a RecordIO writer object.
MXNET_DLL int MXKVStoreIsSchedulerNode(int *ret)
return whether or not this process is a scheduler node.
MXNET_DLL int MXKVStorePush(KVStoreHandle handle, uint32_t num, const int *keys, NDArrayHandle *vals, int priority)
Push a list of (key,value) pairs to kvstore.
MXNET_DLL int MXSymbolSetAttr(SymbolHandle symbol, const char *key, const char *value)
Set string attribute from symbol. NOTE: Setting attribute to a symbol can affect the semantics(mutabl...
MXNET_DLL int MXSymbolCreateFromJSON(const char *json, SymbolHandle *out)
Load a symbol from a json string.
void * DLManagedTensorHandle
handle to DLManagedTensor
Definition: c_api.h:97
MXNET_DLL int MXDataIterCreateIter(DataIterCreator handle, uint32_t num_param, const char **keys, const char **vals, DataIterHandle *out)
Init an iterator, init with parameters the array size of passed in arguments.
MXNET_DLL int MXExecutorForward(ExecutorHandle handle, int is_train)
Executor forward method.
MXNET_DLL int MXExecutorBackwardEx(ExecutorHandle handle, uint32_t len, NDArrayHandle *head_grads, int is_train)
Excecutor run backward.
MXNET_DLL int MXSymbolGetOutput(SymbolHandle symbol, uint32_t index, SymbolHandle *out)
Get index-th outputs of the symbol.
MXNET_DLL int MXNDArrayReshape(NDArrayHandle handle, int ndim, int *dims, NDArrayHandle *out)
Reshape the NDArray.
MXNET_DLL int MXNDArrayGetSharedMemHandle(NDArrayHandle handle, int *shared_pid, int *shared_id)
Get shared memory handle from NDArray.
MXNET_DLL int MXKVStoreBroadcast(KVStoreHandle handle, mx_uint vnum, const int *vkeys, mx_uint onum, const int *okeys, NDArrayHandle *vals, NDArrayHandle *outs, int priority)
broadcast a list of (key, value) pairs from the kvstore
void ** contexts
Definition: c_api.h:156
MXNET_DLL int MXCustomOpRegister(const char *op_type, CustomOpPropCreator creator)
MXNET_DLL int MXNDArrayGetDataNDArray(NDArrayHandle handle, NDArrayHandle *out)
Get a deep copy of the data blob in the form of an NDArray of default storage type. This function blocks. Do not use it in performance critical code.
MXNET_DLL int MXNDArrayFromDLPackEx(DLManagedTensorHandle dlpack, const bool transient_handle, NDArrayHandle *out_handle)
Create a NDArray backed by a dlpack tensor.
MXNET_DLL int MXNDArrayCreateFromSharedMem(int shared_pid, int shared_id, const uint32_t *shape, uint32_t ndim, int dtype, NDArrayHandle *out)
DEPRECATED. Use MXNDArrayCreateFromSharedMemEx instead. Reconstruct NDArray from shared memory handle...
MXNET_DLL int MXExecutorGetOptimizedSymbol(ExecutorHandle handle, SymbolHandle *out)
get optimized graph from graph executor
MXNET_DLL int MXSetProfilerConfig(int num_params, const char *const *keys, const char *const *vals)
Set up configuration of profiler for worker/current process.
MXNET_DLL int MXDumpProfile(int finished)
Save profile and stop profiler for worker/current process.
MXNET_DLL int MXSymbolListAtomicSymbolCreators(uint32_t *out_size, AtomicSymbolCreator **out_array)
list all the available AtomicSymbolEntry
MXNET_DLL int MXDataIterNext(DataIterHandle handle, int *out)
Move iterator to next position.
MXNET_DLL int MXKVStoreIsWorkerNode(int *ret)
return whether or not this process is a worker node.
MXNET_DLL int MXSymbolInferShapePartial(SymbolHandle sym, uint32_t num_args, const char **keys, const uint32_t *arg_ind_ptr, const uint32_t *arg_shape_data, uint32_t *in_shape_size, const uint32_t **in_shape_ndim, const uint32_t ***in_shape_data, uint32_t *out_shape_size, const uint32_t **out_shape_ndim, const uint32_t ***out_shape_data, uint32_t *aux_shape_size, const uint32_t **aux_shape_ndim, const uint32_t ***aux_shape_data, int *complete)
DEPRECATED. Use MXSymbolInferShapePartialEx instead. partially infer shape of unknown input shapes gi...
MXNET_DLL int MXNDArraySyncCopyFromNDArray(NDArrayHandle handle_dst, const NDArrayHandle handle_src, const int i)
Copy src.data() to dst.data() if i = -1, else dst.aux_data(i) if i >= 0 This function blocks...
void(* infer_shape)(int, int *, unsigned **, void *)
Definition: c_api.h:123
int(* CustomOpListFunc)(char ***, void *)
Definition: c_api.h:188
MXNET_DLL int MXExecutorBindX(SymbolHandle symbol_handle, int dev_type, int dev_id, uint32_t num_map_keys, const char **map_keys, const int *map_dev_types, const int *map_dev_ids, uint32_t len, NDArrayHandle *in_args, NDArrayHandle *arg_grad_store, uint32_t *grad_req_type, uint32_t aux_states_len, NDArrayHandle *aux_states, ExecutorHandle *out)
Generate Executor from symbol, This is advanced function, allow specify group2ctx map...
MXNET_DLL int MXRecordIOReaderTell(RecordIOHandle handle, size_t *pos)
Get the current writer pointer position.
MXNET_DLL int MXRecordIOReaderCreate(const char *uri, RecordIOHandle *out)
Create a RecordIO reader object.
MXNET_DLL int MXRecordIOReaderReadRecord(RecordIOHandle handle, char const **buf, size_t *size)
Write a record to a RecordIO object.
void * p_list_outputs
Definition: c_api.h:130
MXNET_DLL int MXExecutorBind(SymbolHandle symbol_handle, int dev_type, int dev_id, uint32_t len, NDArrayHandle *in_args, NDArrayHandle *arg_grad_store, uint32_t *grad_req_type, uint32_t aux_states_len, NDArrayHandle *aux_states, ExecutorHandle *out)
Generate Executor from symbol.
MXNET_DLL int MXExecutorPrint(ExecutorHandle handle, const char **out_str)
Print the content of execution plan, used for debug.
void * EngineVarHandle
handle to Engine VarHandle
Definition: c_api.h:103
int64_t dim_t
data type to store dim size
Definition: c_api.h:62
MXNET_DLL int MXAutogradSetIsTraining(int is_training, int *prev)
set whether to record operator for autograd
MXNET_DLL int MXNDArrayLoadFromRawBytes(const void *buf, size_t size, NDArrayHandle *out)
create a NDArray handle that is loaded from raw bytes.
MXNET_DLL int MXListDataIters(uint32_t *out_size, DataIterCreator **out_array)
List all the available iterator entries.
MXNET_DLL int MXCreateCachedOpEX(SymbolHandle handle, int num_flags, const char **keys, const char **vals, CachedOpHandle *out, bool thread_safe DEFAULT(false))
create cached operator, allows to choose thread_safe version of cachedop
MXNET_DLL int MXAutogradBackwardEx(uint32_t num_output, NDArrayHandle *output_handles, NDArrayHandle *ograd_handles, uint32_t num_variables, NDArrayHandle *var_handles, int retain_graph, int create_graph, int is_train, NDArrayHandle **grad_handles, int **grad_stypes)
compute the gradient of outputs w.r.t variabels
const void * FunctionHandle
handle to a mxnet narray function that changes NDArray
Definition: c_api.h:69
MXNET_DLL int MXNDArrayGetShapeEx64(NDArrayHandle handle, int *out_dim, const int64_t **out_pdata)
get the shape of the array This api is available when MXNet is built with flag USE_INT64_TENSOR_SIZE=...
void(* backward)(int, float **, int *, unsigned **, int *, void *)
Definition: c_api.h:122
Definition: c_api.h:153
void * DataIterHandle
handle to a DataIterator
Definition: c_api.h:83
MXNET_DLL int MXProfileCreateCounter(ProfileHandle domain, const char *counter_name, ProfileHandle *out)
Create profile counter.
MXNET_DLL int MXGetGPUMemoryInformation(int dev, int *free_mem, int *total_mem)
get the free and total available memory on a GPU Note: Deprecated, use MXGetGPUMemoryInformation64 in...
MXNET_DLL int MXOptimizeForBackend(SymbolHandle sym_handle, const char *backend_name, const int dev_type, SymbolHandle *ret_sym_handle, const mx_uint args_len, NDArrayHandle *in_args_handle, const mx_uint aux_len, NDArrayHandle *in_aux_handle, const mx_uint num_options, const char **keys, const char **vals, const uint32_t num_input_shapes, const char **input_shape_names, const int64_t *input_shape_data, const uint32_t *input_shape_idx, const uint32_t num_input_dtypes, const char **input_dtype_names, const int *input_dtypes, const uint32_t num_input_stypes, const char **input_stype_names, const int *input_stypes, bool skip_infer, int *new_args_cnt, NDArrayHandle **new_args_handle, char ***new_arg_names_handle, int *new_aux_cnt, NDArrayHandle **new_aux_handle, char ***new_aux_names_handle)
Partitions symbol for given backend, potentially creating subgraphs.
int(* CustomOpInferStorageTypeFunc)(int, int *, void *)
Definition: c_api.h:191
MXNET_DLL int MXRecordIOWriterWriteRecord(RecordIOHandle handle, const char *buf, size_t size)
Write a record to a RecordIO object.
Definition: c_api.h:175
MXNET_DLL int MXKVStorePushPullEx(KVStoreHandle handle, mx_uint vnum, const char **vkeys, mx_uint onum, const char **okeys, NDArrayHandle *vals, NDArrayHandle *outs, int priority)
push and pull a list of (key, value) pairs from the kvstore, where each key is a string ...
Definition: c_api.h:120
MXNET_DLL int MXNDArrayCreateSparseEx64(int storage_type, const int64_t *shape, int ndim, int dev_type, int dev_id, int delay_alloc, int dtype, uint32_t num_aux, int *aux_type, int *aux_ndims, const int64_t *aux_shape, NDArrayHandle *out)
create an empty sparse NDArray with specified shape and data type This api is available when MXNet is...
MXNET_DLL int MXDataIterFree(DataIterHandle handle)
Free the handle to the IO module.
MXNET_DLL int MXSymbolCopy(SymbolHandle symbol, SymbolHandle *out)
Copy the symbol to another handle.
MXNET_DLL int MXExecutorReshape(int partial_shaping, int allow_up_sizing, int dev_type, int dev_id, uint32_t num_map_keys, const char **map_keys, const int *map_dev_types, const int *map_dev_ids, const uint32_t num_provided_arg_shapes, const char **provided_arg_shape_names, const uint32_t *provided_arg_shape_data, const uint32_t *provided_arg_shape_idx, uint32_t *num_in_args, NDArrayHandle **in_args, NDArrayHandle **arg_grads, uint32_t *num_aux_states, NDArrayHandle **aux_states, ExecutorHandle shared_exec, ExecutorHandle *out)
DEPRECATED. Use MXExecutorReshapeEx instead. Return a new executor with the same symbol and shared me...
MXNET_DLL int MXNDArrayLoadFromBuffer(const void *ndarray_buffer, size_t size, uint32_t *out_size, NDArrayHandle **out_arr, uint32_t *out_name_size, const char ***out_names)
Load list / dictionary of narrays from file content loaded into memory. This will load a list of ndar...
MXNET_DLL int MXDataIterGetPadNum(DataIterHandle handle, int *pad)
Get the padding number in current data batch.
void(* list_outputs)(char ***, void *)
Definition: c_api.h:124
MXNET_DLL int MXNDArraySyncCopyToCPU(NDArrayHandle handle, void *data, size_t size)
Perform a synchronize copyto a contiguous CPU memory region.
MXNET_DLL int MXInitPSEnv(uint32_t num_vars, const char **keys, const char **vals)
Initialized ps-lite environment variables.
MXNET_DLL int MXSymbolCreateVariable(const char *name, SymbolHandle *out)
Create a Variable Symbol.
MXNET_DLL int MXGetFunction(const char *name, FunctionHandle *out)
get the function handle by name
int(* CustomOpCreateFunc)(const char *, int, unsigned **, const int *, const int *, struct MXCallbackList *, void *)
Definition: c_api.h:200
MXNET_DLL int MXSymbolInferShapeEx64(SymbolHandle sym, uint32_t num_args, const char **keys, const int64_t *arg_ind_ptr, const int64_t *arg_shape_data, size_t *in_shape_size, const int **in_shape_ndim, const int64_t ***in_shape_data, size_t *out_shape_size, const int **out_shape_ndim, const int64_t ***out_shape_data, size_t *aux_shape_size, const int **aux_shape_ndim, const int64_t ***aux_shape_data, int *complete)
infer shape of unknown input shapes given the known one. The shapes are packed into a CSR matrix repr...
int(* CustomOpBackwardInferStorageTypeFunc)(int, int *, int *, void *)
Definition: c_api.h:192
MXNET_DLL int MXSymbolInferShape(SymbolHandle sym, uint32_t num_args, const char **keys, const uint32_t *arg_ind_ptr, const uint32_t *arg_shape_data, uint32_t *in_shape_size, const uint32_t **in_shape_ndim, const uint32_t ***in_shape_data, uint32_t *out_shape_size, const uint32_t **out_shape_ndim, const uint32_t ***out_shape_data, uint32_t *aux_shape_size, const uint32_t **aux_shape_ndim, const uint32_t ***aux_shape_data, int *complete)
DEPRECATED. Use MXSymbolInferShapeEx instead. infer shape of unknown input shapes given the known one...
uint32_t mx_uint
manually define unsigned int
Definition: c_api.h:58