HIP: Heterogenous-computing Interface for Portability
hip_runtime_api.h
Go to the documentation of this file.
1 /*
2 Copyright (c) 2015 - present Advanced Micro Devices, Inc. All rights reserved.
3 
4 Permission is hereby granted, free of charge, to any person obtaining a copy
5 of this software and associated documentation files (the "Software"), to deal
6 in the Software without restriction, including without limitation the rights
7 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8 copies of the Software, and to permit persons to whom the Software is
9 furnished to do so, subject to the following conditions:
10 
11 The above copyright notice and this permission notice shall be included in
12 all copies or substantial portions of the Software.
13 
14 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20 THE SOFTWARE.
21 */
22 
23 //#pragma once
24 #ifndef HIP_INCLUDE_HIP_HCC_DETAIL_HIP_RUNTIME_API_H
25 #define HIP_INCLUDE_HIP_HCC_DETAIL_HIP_RUNTIME_API_H
26 
31 #include <stdint.h>
32 #include <stddef.h>
33 
34 #ifndef GENERIC_GRID_LAUNCH
35 #define GENERIC_GRID_LAUNCH 1
36 #endif
37 
38 #ifndef __HIP_VDI__
39 #define __HIP_VDI__ 0
40 #endif
41 
43 #include <hip/hcc_detail/driver_types.h>
46 
47 #if !__HIP_VDI__ && defined(__cplusplus)
48 #include <hsa/hsa.h>
49 #include <hip/hcc_detail/program_state.hpp>
50 #endif
51 
52 #if defined(_MSC_VER)
53 #define DEPRECATED(msg) __declspec(deprecated(msg))
54 #else // !defined(_MSC_VER)
55 #define DEPRECATED(msg) __attribute__ ((deprecated(msg)))
56 #endif // !defined(_MSC_VER)
57 
58 #define DEPRECATED_MSG "This API is marked as deprecated and may not be supported in future releases.For more details please refer https://github.com/ROCm-Developer-Tools/HIP/tree/master/docs/markdown/hip_deprecated_api_list"
59 
60 #if defined(__HCC__) && (__hcc_workweek__ < 16155)
61 #error("This version of HIP requires a newer version of HCC.");
62 #endif
63 
64 #define HIP_LAUNCH_PARAM_BUFFER_POINTER ((void*)0x01)
65 #define HIP_LAUNCH_PARAM_BUFFER_SIZE ((void*)0x02)
66 #define HIP_LAUNCH_PARAM_END ((void*)0x03)
67 
68 #ifdef __cplusplus
69  #define __dparm(x) \
70  = x
71 #else
72  #define __dparm(x)
73 #endif
74 
75 #ifdef __GNUC__
76 #pragma GCC visibility push (default)
77 #endif
78 
79 #ifdef __cplusplus
80 
81 namespace hip_impl {
82 hipError_t hip_init();
83 } // namespace hip_impl
84 #endif
85 
86 // Structure definitions:
87 #ifdef __cplusplus
88 extern "C" {
89 #endif
90 
91 //---
92 // API-visible structures
93 typedef struct ihipCtx_t* hipCtx_t;
94 
95 // Note many APIs also use integer deviceIds as an alternative to the device pointer:
96 typedef int hipDevice_t;
97 
98 typedef struct ihipStream_t* hipStream_t;
99 
100 // TODO: IPC implementation
101 
102 #define hipIpcMemLazyEnablePeerAccess 0
103 
104 #define HIP_IPC_HANDLE_SIZE 64
105 
106 typedef struct hipIpcMemHandle_st {
107  char reserved[HIP_IPC_HANDLE_SIZE];
109 
110 // TODO: IPC event handle currently unsupported
111 struct ihipIpcEventHandle_t;
112 typedef struct ihipIpcEventHandle_t* hipIpcEventHandle_t;
113 
114 
115 // END TODO
116 
117 typedef struct ihipModule_t* hipModule_t;
118 
119 typedef struct ihipModuleSymbol_t* hipFunction_t;
120 
121 typedef struct hipFuncAttributes {
122  int binaryVersion;
123  int cacheModeCA;
124  size_t constSizeBytes;
125  size_t localSizeBytes;
126  int maxDynamicSharedSizeBytes;
127  int maxThreadsPerBlock;
128  int numRegs;
129  int preferredShmemCarveout;
130  int ptxVersion;
131  size_t sharedSizeBytes;
133 
134 typedef struct ihipEvent_t* hipEvent_t;
135 
136 enum hipLimit_t {
137  hipLimitMallocHeapSize = 0x02,
138 };
139 
144 #define hipStreamDefault \
146  0x00
147 #define hipStreamNonBlocking 0x01
148 
149 
151 #define hipEventDefault 0x0
152 #define hipEventBlockingSync \
153  0x1
154 #define hipEventDisableTiming \
155  0x2
156 #define hipEventInterprocess 0x4
157 #define hipEventReleaseToDevice \
158  0x40000000
159 #define hipEventReleaseToSystem \
162  0x80000000
163 
166 
168 #define hipHostMallocDefault 0x0
169 #define hipHostMallocPortable 0x1
170 #define hipHostMallocMapped \
171  0x2
172 #define hipHostMallocWriteCombined 0x4
174 #define hipHostMallocCoherent \
175  0x40000000
176 #define hipHostMallocNonCoherent \
178  0x80000000
179 
181 #define hipMemAttachGlobal 0x0
182 #define hipMemAttachHost 0x1
183 
184 #define hipDeviceMallocDefault 0x0
185 #define hipDeviceMallocFinegrained 0x1
186 
187 #define hipHostRegisterDefault 0x0
189 #define hipHostRegisterPortable 0x1
190 #define hipHostRegisterMapped \
191  0x2
192 #define hipHostRegisterIoMemory 0x4
194 #define hipExtHostRegisterCoarseGrained 0x8
195 
196 #define hipDeviceScheduleAuto 0x0
197 #define hipDeviceScheduleSpin \
198  0x1
199 #define hipDeviceScheduleYield \
201  0x2
202 #define hipDeviceScheduleBlockingSync 0x4
204 #define hipDeviceScheduleMask 0x7
205 
206 #define hipDeviceMapHost 0x8
207 #define hipDeviceLmemResizeToMax 0x16
208 
209 #define hipArrayDefault 0x00
210 #define hipArrayLayered 0x01
211 #define hipArraySurfaceLoadStore 0x02
212 #define hipArrayCubemap 0x04
213 #define hipArrayTextureGather 0x08
214 
215 /*
216  * @brief hipJitOption
217  * @enum
218  * @ingroup Enumerations
219  */
220 typedef enum hipJitOption {
221  hipJitOptionMaxRegisters = 0,
222  hipJitOptionThreadsPerBlock,
223  hipJitOptionWallTime,
224  hipJitOptionInfoLogBuffer,
225  hipJitOptionInfoLogBufferSizeBytes,
226  hipJitOptionErrorLogBuffer,
227  hipJitOptionErrorLogBufferSizeBytes,
228  hipJitOptionOptimizationLevel,
229  hipJitOptionTargetFromContext,
230  hipJitOptionTarget,
231  hipJitOptionFallbackStrategy,
232  hipJitOptionGenerateDebugInfo,
233  hipJitOptionLogVerbose,
234  hipJitOptionGenerateLineInfo,
235  hipJitOptionCacheMode,
236  hipJitOptionSm3xOpt,
237  hipJitOptionFastCompile,
238  hipJitOptionNumOptions
239 } hipJitOption;
240 
241 
245 typedef enum hipFuncCache_t {
251 
252 
256 typedef enum hipSharedMemConfig {
263 
264 
269 typedef struct dim3 {
270  uint32_t x;
271  uint32_t y;
272  uint32_t z;
273 #ifdef __cplusplus
274  __host__ __device__ dim3(uint32_t _x = 1, uint32_t _y = 1, uint32_t _z = 1) : x(_x), y(_y), z(_z){};
275 #endif
276 } dim3;
277 
278 typedef struct hipLaunchParams_t {
279  void* func;
282  void **args;
283  size_t sharedMem;
284  hipStream_t stream;
286 
287 
288 // Doxygen end group GlobalDefs
292 //-------------------------------------------------------------------------------------------------
293 
294 
295 // The handle allows the async commands to use the stream even if the parent hipStream_t goes
296 // out-of-scope.
297 // typedef class ihipStream_t * hipStream_t;
298 
299 
300 /*
301  * Opaque structure allows the true event (pointed at by the handle) to remain "live" even if the
302  * surrounding hipEvent_t goes out-of-scope. This is handy for cases where the hipEvent_t goes
303  * out-of-scope but the true event is being written by some async queue or device */
304 // typedef struct hipEvent_t {
305 // struct ihipEvent_t *_handle;
306 //} hipEvent_t;
307 
308 
334 hipError_t hipDeviceSynchronize(void);
335 
336 
348 hipError_t hipDeviceReset(void);
349 
350 
382 hipError_t hipSetDevice(int deviceId);
383 
384 
398 hipError_t hipGetDevice(int* deviceId);
399 
400 
413 hipError_t hipGetDeviceCount(int* count);
414 
424 hipError_t hipDeviceGetAttribute(int* pi, hipDeviceAttribute_t attr, int deviceId);
425 
439 hipError_t hipGetDeviceProperties(hipDeviceProp_t* prop, int deviceId);
440 
441 
452 hipError_t hipDeviceSetCacheConfig(hipFuncCache_t cacheConfig);
453 
454 
465 hipError_t hipDeviceGetCacheConfig(hipFuncCache_t* cacheConfig);
466 
477 hipError_t hipDeviceGetLimit(size_t* pValue, enum hipLimit_t limit);
478 
479 
490 hipError_t hipFuncSetCacheConfig(const void* func, hipFuncCache_t config);
491 
503 hipError_t hipDeviceGetSharedMemConfig(hipSharedMemConfig* pConfig);
504 
505 
517 hipError_t hipDeviceSetSharedMemConfig(hipSharedMemConfig config);
518 
543 hipError_t hipSetDeviceFlags(unsigned flags);
544 
553 hipError_t hipChooseDevice(int* device, const hipDeviceProp_t* prop);
554 
567 hipError_t hipExtGetLinkTypeAndHopCount(int device1, int device2, uint32_t* linktype, uint32_t* hopcount);
568 
569 // end doxygen Device
592 hipError_t hipGetLastError(void);
593 
594 
605 hipError_t hipPeekAtLastError(void);
606 
607 
616 const char* hipGetErrorName(hipError_t hip_error);
617 
618 
629 const char* hipGetErrorString(hipError_t hipError);
630 
631 // end doxygen Error
664 hipError_t hipStreamCreate(hipStream_t* stream);
665 
666 
684 hipError_t hipStreamCreateWithFlags(hipStream_t* stream, unsigned int flags);
685 
686 
705 hipError_t hipStreamCreateWithPriority(hipStream_t* stream, unsigned int flags, int priority);
706 
707 
722 hipError_t hipDeviceGetStreamPriorityRange(int* leastPriority, int* greatestPriority);
723 
724 
743 hipError_t hipStreamDestroy(hipStream_t stream);
744 
745 
761 hipError_t hipStreamQuery(hipStream_t stream);
762 
763 
783 hipError_t hipStreamSynchronize(hipStream_t stream);
784 
785 
805 hipError_t hipStreamWaitEvent(hipStream_t stream, hipEvent_t event, unsigned int flags);
806 
807 
821 hipError_t hipStreamGetFlags(hipStream_t stream, unsigned int* flags);
822 
823 
837 hipError_t hipStreamGetPriority(hipStream_t stream, int* priority);
838 
839 
843 typedef void (*hipStreamCallback_t)(hipStream_t stream, hipError_t status, void* userData);
844 
860 hipError_t hipStreamAddCallback(hipStream_t stream, hipStreamCallback_t callback, void* userData,
861  unsigned int flags);
862 
863 
864 // end doxygen Stream
901 hipError_t hipEventCreateWithFlags(hipEvent_t* event, unsigned flags);
902 
903 
915 hipError_t hipEventCreate(hipEvent_t* event);
916 
917 
945 #ifdef __cplusplus
946 hipError_t hipEventRecord(hipEvent_t event, hipStream_t stream = NULL);
947 #else
948 hipError_t hipEventRecord(hipEvent_t event, hipStream_t stream);
949 #endif
950 
967 hipError_t hipEventDestroy(hipEvent_t event);
968 
969 
987 hipError_t hipEventSynchronize(hipEvent_t event);
988 
989 
1018 hipError_t hipEventElapsedTime(float* ms, hipEvent_t start, hipEvent_t stop);
1019 
1020 
1036 hipError_t hipEventQuery(hipEvent_t event);
1037 
1038 
1039 // end doxygen Events
1070 hipError_t hipPointerGetAttributes(hipPointerAttribute_t* attributes, const void* ptr);
1071 
1085 hipError_t hipMalloc(void** ptr, size_t size);
1086 
1101 hipError_t hipExtMallocWithFlags(void** ptr, size_t sizeBytes, unsigned int flags);
1102 
1115 DEPRECATED("use hipHostMalloc instead")
1116 hipError_t hipMallocHost(void** ptr, size_t size);
1117 
1130 DEPRECATED("use hipHostMalloc instead")
1131 hipError_t hipMemAllocHost(void** ptr, size_t size);
1132 
1146 hipError_t hipHostMalloc(void** ptr, size_t size, unsigned int flags);
1147 
1157 hipError_t hipMallocManaged(void** devPtr, size_t size, unsigned int flags __dparm(0));
1158 
1172 DEPRECATED("use hipHostMalloc instead")
1173 hipError_t hipHostAlloc(void** ptr, size_t size, unsigned int flags);
1174 
1186 hipError_t hipHostGetDevicePointer(void** devPtr, void* hstPtr, unsigned int flags);
1187 
1197 hipError_t hipHostGetFlags(unsigned int* flagsPtr, void* hostPtr);
1198 
1235 hipError_t hipHostRegister(void* hostPtr, size_t sizeBytes, unsigned int flags);
1236 
1245 hipError_t hipHostUnregister(void* hostPtr);
1246 
1266 hipError_t hipMallocPitch(void** ptr, size_t* pitch, size_t width, size_t height);
1267 
1290 hipError_t hipMemAllocPitch(hipDeviceptr_t* dptr, size_t* pitch, size_t widthInBytes, size_t height, unsigned int elementSizeBytes);
1291 
1305 hipError_t hipFree(void* ptr);
1306 
1317 DEPRECATED("use hipHostFree instead")
1318 hipError_t hipFreeHost(void* ptr);
1319 
1333 hipError_t hipHostFree(void* ptr);
1334 
1362 hipError_t hipMemcpy(void* dst, const void* src, size_t sizeBytes, hipMemcpyKind kind);
1363 
1381 hipError_t hipMemcpyHtoD(hipDeviceptr_t dst, void* src, size_t sizeBytes);
1382 
1400 hipError_t hipMemcpyDtoH(void* dst, hipDeviceptr_t src, size_t sizeBytes);
1401 
1419 hipError_t hipMemcpyDtoD(hipDeviceptr_t dst, hipDeviceptr_t src, size_t sizeBytes);
1420 
1438 hipError_t hipMemcpyHtoDAsync(hipDeviceptr_t dst, void* src, size_t sizeBytes, hipStream_t stream);
1439 
1457 hipError_t hipMemcpyDtoHAsync(void* dst, hipDeviceptr_t src, size_t sizeBytes, hipStream_t stream);
1458 
1476 hipError_t hipMemcpyDtoDAsync(hipDeviceptr_t dst, hipDeviceptr_t src, size_t sizeBytes,
1477  hipStream_t stream);
1478 
1479 #if __HIP_VDI__
1480 hipError_t hipModuleGetGlobal(hipDeviceptr_t* dptr, size_t* bytes,
1481  hipModule_t hmod, const char* name);
1482 
1483 hipError_t hipGetSymbolAddress(void** devPtr, const void* symbolName);
1484 hipError_t hipGetSymbolSize(size_t* size, const void* symbolName);
1485 hipError_t hipMemcpyToSymbol(const void* symbolName, const void* src,
1486  size_t sizeBytes, size_t offset __dparm(0),
1487  hipMemcpyKind kind __dparm(hipMemcpyHostToDevice));
1488 hipError_t hipMemcpyToSymbolAsync(const void* symbolName, const void* src,
1489  size_t sizeBytes, size_t offset,
1490  hipMemcpyKind kind, hipStream_t stream __dparm(0));
1491 hipError_t hipMemcpyFromSymbol(void* dst, const void* symbolName,
1492  size_t sizeBytes, size_t offset __dparm(0),
1493  hipMemcpyKind kind __dparm(hipMemcpyDeviceToHost));
1494 hipError_t hipMemcpyFromSymbolAsync(void* dst, const void* symbolName,
1495  size_t sizeBytes, size_t offset,
1496  hipMemcpyKind kind,
1497  hipStream_t stream __dparm(0));
1498 #else
1499 hipError_t hipModuleGetGlobal(void**, size_t*, hipModule_t, const char*);
1500 
1501 #ifdef __cplusplus //Start : Not supported in gcc
1502 namespace hip_impl {
1503 inline
1504 __attribute__((visibility("hidden")))
1505 hipError_t read_agent_global_from_process(hipDeviceptr_t* dptr, size_t* bytes,
1506  const char* name);
1507 } // Namespace hip_impl.
1508 
1509 
1520 inline
1521 __attribute__((visibility("hidden")))
1522 hipError_t hipGetSymbolAddress(void** devPtr, const void* symbolName) {
1523  //HIP_INIT_API(hipGetSymbolAddress, devPtr, symbolName);
1524  hip_impl::hip_init();
1525  size_t size = 0;
1526  return hip_impl::read_agent_global_from_process(devPtr, &size, (const char*)symbolName);
1527 }
1528 
1529 
1540 inline
1541 __attribute__((visibility("hidden")))
1542 hipError_t hipGetSymbolSize(size_t* size, const void* symbolName) {
1543  // HIP_INIT_API(hipGetSymbolSize, size, symbolName);
1544  hip_impl::hip_init();
1545  void* devPtr = nullptr;
1546  return hip_impl::read_agent_global_from_process(&devPtr, size, (const char*)symbolName);
1547 }
1548 #endif // End : Not supported in gcc
1549 
1550 #if defined(__cplusplus)
1551 } // extern "C"
1552 #endif
1553 
1554 #ifdef __cplusplus
1555 namespace hip_impl {
1556 hipError_t hipMemcpyToSymbol(void*, const void*, size_t, size_t, hipMemcpyKind,
1557  const char*);
1558 } // Namespace hip_impl.
1559 #endif
1560 
1561 #if defined(__cplusplus)
1562 extern "C" {
1563 #endif
1564 
1588 #ifdef __cplusplus
1589 inline
1590 __attribute__((visibility("hidden")))
1591 hipError_t hipMemcpyToSymbol(const void* symbolName, const void* src,
1592  size_t sizeBytes, size_t offset __dparm(0),
1593  hipMemcpyKind kind __dparm(hipMemcpyHostToDevice)) {
1594  if (!symbolName) return hipErrorInvalidSymbol;
1595 
1596  hipDeviceptr_t dst = NULL;
1597  hipGetSymbolAddress(&dst, (const char*)symbolName);
1598 
1599  return hip_impl::hipMemcpyToSymbol(dst, src, sizeBytes, offset, kind,
1600  (const char*)symbolName);
1601 }
1602 #endif
1603 
1604 #if defined(__cplusplus)
1605 } // extern "C"
1606 #endif
1607 
1608 #ifdef __cplusplus
1609 namespace hip_impl {
1610 hipError_t hipMemcpyToSymbolAsync(void*, const void*, size_t, size_t,
1611  hipMemcpyKind, hipStream_t, const char*);
1612 hipError_t hipMemcpyFromSymbol(void*, const void*, size_t, size_t,
1613  hipMemcpyKind, const char*);
1614 hipError_t hipMemcpyFromSymbolAsync(void*, const void*, size_t, size_t,
1615  hipMemcpyKind, hipStream_t, const char*);
1616 } // Namespace hip_impl.
1617 #endif
1618 
1619 #if defined(__cplusplus)
1620 extern "C" {
1621 #endif
1622 
1649 #ifdef __cplusplus //Start : Not supported in gcc
1650 inline
1651 __attribute__((visibility("hidden")))
1652 hipError_t hipMemcpyToSymbolAsync(const void* symbolName, const void* src,
1653  size_t sizeBytes, size_t offset,
1654  hipMemcpyKind kind, hipStream_t stream __dparm(0)) {
1655  if (!symbolName) return hipErrorInvalidSymbol;
1656 
1657  hipDeviceptr_t dst = NULL;
1658  hipGetSymbolAddress(&dst, symbolName);
1659 
1660  return hip_impl::hipMemcpyToSymbolAsync(dst, src, sizeBytes, offset, kind,
1661  stream,
1662  (const char*)symbolName);
1663 }
1664 
1665 inline
1666 __attribute__((visibility("hidden")))
1667 hipError_t hipMemcpyFromSymbol(void* dst, const void* symbolName,
1668  size_t sizeBytes, size_t offset __dparm(0),
1669  hipMemcpyKind kind __dparm(hipMemcpyDeviceToHost)) {
1670  if (!symbolName) return hipErrorInvalidSymbol;
1671 
1672  hipDeviceptr_t src = NULL;
1673  hipGetSymbolAddress(&src, symbolName);
1674 
1675  return hip_impl::hipMemcpyFromSymbol(dst, src, sizeBytes, offset, kind,
1676  (const char*)symbolName);
1677 }
1678 
1679 inline
1680 __attribute__((visibility("hidden")))
1681 hipError_t hipMemcpyFromSymbolAsync(void* dst, const void* symbolName,
1682  size_t sizeBytes, size_t offset,
1683  hipMemcpyKind kind,
1684  hipStream_t stream __dparm(0)) {
1685  if (!symbolName) return hipErrorInvalidSymbol;
1686 
1687  hipDeviceptr_t src = NULL;
1688  hipGetSymbolAddress(&src, symbolName);
1689 
1690  return hip_impl::hipMemcpyFromSymbolAsync(dst, src, sizeBytes, offset, kind,
1691  stream,
1692  (const char*)symbolName);
1693 }
1694 #endif // End : Not supported in gcc
1695 
1696 #endif // __HIP_VDI__
1697 
1725 hipError_t hipMemcpyAsync(void* dst, const void* src, size_t sizeBytes, hipMemcpyKind kind,
1726  hipStream_t stream __dparm(0));
1727 
1737 hipError_t hipMemset(void* dst, int value, size_t sizeBytes);
1738 
1748 hipError_t hipMemsetD8(hipDeviceptr_t dest, unsigned char value, size_t count);
1749 
1765 hipError_t hipMemsetD8Async(hipDeviceptr_t dest, unsigned char value, size_t count, hipStream_t stream __dparm(0));
1766 
1776 hipError_t hipMemsetD16(hipDeviceptr_t dest, unsigned short value, size_t count);
1777 
1793 hipError_t hipMemsetD16Async(hipDeviceptr_t dest, unsigned short value, size_t count, hipStream_t stream __dparm(0));
1794 
1804 hipError_t hipMemsetD32(hipDeviceptr_t dest, int value, size_t count);
1805 
1821 hipError_t hipMemsetAsync(void* dst, int value, size_t sizeBytes, hipStream_t stream __dparm(0));
1822 
1838 hipError_t hipMemsetD32Async(hipDeviceptr_t dst, int value, size_t count,
1839  hipStream_t stream __dparm(0));
1840 
1852 hipError_t hipMemset2D(void* dst, size_t pitch, int value, size_t width, size_t height);
1853 
1866 hipError_t hipMemset2DAsync(void* dst, size_t pitch, int value, size_t width, size_t height,hipStream_t stream __dparm(0));
1867 
1876 hipError_t hipMemset3D(hipPitchedPtr pitchedDevPtr, int value, hipExtent extent );
1877 
1887 hipError_t hipMemset3DAsync(hipPitchedPtr pitchedDevPtr, int value, hipExtent extent ,hipStream_t stream __dparm(0));
1888 
1898 hipError_t hipMemGetInfo(size_t* free, size_t* total);
1899 
1900 
1901 hipError_t hipMemPtrGetInfo(void* ptr, size_t* size);
1902 
1903 
1916 hipError_t hipMallocArray(hipArray** array, const hipChannelFormatDesc* desc, size_t width,
1917  size_t height __dparm(0), unsigned int flags __dparm(hipArrayDefault));
1918 hipError_t hipArrayCreate(hipArray** pHandle, const HIP_ARRAY_DESCRIPTOR* pAllocateArray);
1919 
1920 hipError_t hipArray3DCreate(hipArray** array, const HIP_ARRAY3D_DESCRIPTOR* pAllocateArray);
1921 
1922 hipError_t hipMalloc3D(hipPitchedPtr* pitchedDevPtr, hipExtent extent);
1923 
1932 hipError_t hipFreeArray(hipArray* array);
1933 
1946 hipError_t hipMalloc3DArray(hipArray** array, const struct hipChannelFormatDesc* desc,
1947  struct hipExtent extent, unsigned int flags);
1964 hipError_t hipMemcpy2D(void* dst, size_t dpitch, const void* src, size_t spitch, size_t width,
1965  size_t height, hipMemcpyKind kind);
1966 
1976 hipError_t hipMemcpyParam2D(const hip_Memcpy2D* pCopy);
1977 
1988 hipError_t hipMemcpyParam2DAsync(const hip_Memcpy2D* pCopy, hipStream_t stream __dparm(0));
1989 
2007 hipError_t hipMemcpy2DAsync(void* dst, size_t dpitch, const void* src, size_t spitch, size_t width,
2008  size_t height, hipMemcpyKind kind, hipStream_t stream __dparm(0));
2009 
2026 hipError_t hipMemcpy2DToArray(hipArray* dst, size_t wOffset, size_t hOffset, const void* src,
2027  size_t spitch, size_t width, size_t height, hipMemcpyKind kind);
2028 
2045 hipError_t hipMemcpyToArray(hipArray* dst, size_t wOffset, size_t hOffset, const void* src,
2046  size_t count, hipMemcpyKind kind);
2047 
2063 hipError_t hipMemcpyFromArray(void* dst, hipArray_const_t srcArray, size_t wOffset, size_t hOffset,
2064  size_t count, hipMemcpyKind kind);
2065 
2083 hipError_t hipMemcpy2DFromArray( void* dst, size_t dpitch, hipArray_const_t src, size_t wOffset, size_t hOffset, size_t width, size_t height, hipMemcpyKind kind);
2084 
2103 hipError_t hipMemcpy2DFromArrayAsync( void* dst, size_t dpitch, hipArray_const_t src, size_t wOffset, size_t hOffset, size_t width, size_t height, hipMemcpyKind kind, hipStream_t stream __dparm(0));
2104 
2118 hipError_t hipMemcpyAtoH(void* dst, hipArray* srcArray, size_t srcOffset, size_t count);
2119 
2133 hipError_t hipMemcpyHtoA(hipArray* dstArray, size_t dstOffset, const void* srcHost, size_t count);
2134 
2145 hipError_t hipMemcpy3D(const struct hipMemcpy3DParms* p);
2146 
2158 hipError_t hipMemcpy3DAsync(const struct hipMemcpy3DParms* p, hipStream_t stream __dparm(0));
2159 
2160 // doxygen end Memory
2192 hipError_t hipDeviceCanAccessPeer(int* canAccessPeer, int deviceId, int peerDeviceId);
2193 
2194 
2211 hipError_t hipDeviceEnablePeerAccess(int peerDeviceId, unsigned int flags);
2212 
2213 
2225 hipError_t hipDeviceDisablePeerAccess(int peerDeviceId);
2226 
2239 hipError_t hipMemGetAddressRange(hipDeviceptr_t* pbase, size_t* psize, hipDeviceptr_t dptr);
2240 
2241 #ifndef USE_PEER_NON_UNIFIED
2242 #define USE_PEER_NON_UNIFIED 1
2243 #endif
2244 
2245 #if USE_PEER_NON_UNIFIED == 1
2246 
2257 hipError_t hipMemcpyPeer(void* dst, int dstDeviceId, const void* src, int srcDeviceId,
2258  size_t sizeBytes);
2259 
2272 hipError_t hipMemcpyPeerAsync(void* dst, int dstDeviceId, const void* src, int srcDevice,
2273  size_t sizeBytes, hipStream_t stream __dparm(0));
2274 #endif
2275 
2276 
2277 // doxygen end PeerToPeer
2296 // TODO-ctx - more description on error codes.
2297 hipError_t hipInit(unsigned int flags);
2298 
2299 
2319 DEPRECATED(DEPRECATED_MSG)
2320 hipError_t hipCtxCreate(hipCtx_t* ctx, unsigned int flags, hipDevice_t device);
2321 
2332 DEPRECATED(DEPRECATED_MSG)
2333 hipError_t hipCtxDestroy(hipCtx_t ctx);
2334 
2345 DEPRECATED(DEPRECATED_MSG)
2346 hipError_t hipCtxPopCurrent(hipCtx_t* ctx);
2347 
2358 DEPRECATED(DEPRECATED_MSG)
2359 hipError_t hipCtxPushCurrent(hipCtx_t ctx);
2360 
2371 DEPRECATED(DEPRECATED_MSG)
2372 hipError_t hipCtxSetCurrent(hipCtx_t ctx);
2373 
2384 DEPRECATED(DEPRECATED_MSG)
2385 hipError_t hipCtxGetCurrent(hipCtx_t* ctx);
2386 
2398 DEPRECATED(DEPRECATED_MSG)
2399 hipError_t hipCtxGetDevice(hipDevice_t* device);
2400 
2418 DEPRECATED(DEPRECATED_MSG)
2419 hipError_t hipCtxGetApiVersion(hipCtx_t ctx, int* apiVersion);
2420 
2434 DEPRECATED(DEPRECATED_MSG)
2435 hipError_t hipCtxGetCacheConfig(hipFuncCache_t* cacheConfig);
2436 
2450 DEPRECATED(DEPRECATED_MSG)
2451 hipError_t hipCtxSetCacheConfig(hipFuncCache_t cacheConfig);
2452 
2466 DEPRECATED(DEPRECATED_MSG)
2467 hipError_t hipCtxSetSharedMemConfig(hipSharedMemConfig config);
2468 
2482 DEPRECATED(DEPRECATED_MSG)
2483 hipError_t hipCtxGetSharedMemConfig(hipSharedMemConfig* pConfig);
2484 
2496 DEPRECATED(DEPRECATED_MSG)
2497 hipError_t hipCtxSynchronize(void);
2498 
2509 DEPRECATED(DEPRECATED_MSG)
2510 hipError_t hipCtxGetFlags(unsigned int* flags);
2511 
2531 DEPRECATED(DEPRECATED_MSG)
2532 hipError_t hipCtxEnablePeerAccess(hipCtx_t peerCtx, unsigned int flags);
2533 
2550 DEPRECATED(DEPRECATED_MSG)
2551 hipError_t hipCtxDisablePeerAccess(hipCtx_t peerCtx);
2552 
2565 hipError_t hipDevicePrimaryCtxGetState(hipDevice_t dev, unsigned int* flags, int* active);
2566 
2579 hipError_t hipDevicePrimaryCtxRelease(hipDevice_t dev);
2580 
2592 hipError_t hipDevicePrimaryCtxRetain(hipCtx_t* pctx, hipDevice_t dev);
2593 
2604 hipError_t hipDevicePrimaryCtxReset(hipDevice_t dev);
2605 
2617 hipError_t hipDevicePrimaryCtxSetFlags(hipDevice_t dev, unsigned int flags);
2618 
2619 // doxygen end Context Management
2631 hipError_t hipDeviceGet(hipDevice_t* device, int ordinal);
2632 
2641 hipError_t hipDeviceComputeCapability(int* major, int* minor, hipDevice_t device);
2642 
2651 hipError_t hipDeviceGetName(char* name, int len, hipDevice_t device);
2652 
2661 hipError_t hipDeviceGetPCIBusId(char* pciBusId, int len, int device);
2662 
2663 
2671 hipError_t hipDeviceGetByPCIBusId(int* device, const char* pciBusId);
2672 
2673 
2681 hipError_t hipDeviceTotalMem(size_t* bytes, hipDevice_t device);
2682 
2698 hipError_t hipDriverGetVersion(int* driverVersion);
2699 
2712 hipError_t hipRuntimeGetVersion(int* runtimeVersion);
2713 
2725 hipError_t hipModuleLoad(hipModule_t* module, const char* fname);
2726 
2737 hipError_t hipModuleUnload(hipModule_t module);
2738 
2749 hipError_t hipModuleGetFunction(hipFunction_t* function, hipModule_t module, const char* kname);
2750 
2760 hipError_t hipFuncGetAttributes(struct hipFuncAttributes* attr, const void* func);
2761 
2771 hipError_t hipFuncGetAttribute(int* value, hipFunction_attribute attrib, hipFunction_t hfunc);
2772 
2773 #if !__HIP_VDI__
2774 #if defined(__cplusplus)
2775 } // extern "C"
2776 #endif
2777 
2778 #ifdef __cplusplus
2779 namespace hip_impl {
2780  class agent_globals_impl;
2781  class agent_globals {
2782  public:
2783  agent_globals();
2784  ~agent_globals();
2785  agent_globals(const agent_globals&) = delete;
2786 
2787  hipError_t read_agent_global_from_module(hipDeviceptr_t* dptr, size_t* bytes,
2788  hipModule_t hmod, const char* name);
2789  hipError_t read_agent_global_from_process(hipDeviceptr_t* dptr, size_t* bytes,
2790  const char* name);
2791  private:
2792  agent_globals_impl* impl;
2793  };
2794 
2795  inline
2796  __attribute__((visibility("hidden")))
2797  agent_globals& get_agent_globals() {
2798  static agent_globals ag;
2799  return ag;
2800  }
2801 
2802  extern "C"
2803  inline
2804  __attribute__((visibility("hidden")))
2805  hipError_t read_agent_global_from_process(hipDeviceptr_t* dptr, size_t* bytes,
2806  const char* name) {
2807  return get_agent_globals().read_agent_global_from_process(dptr, bytes, name);
2808  }
2809 } // Namespace hip_impl.
2810 #endif
2811 
2812 #if defined(__cplusplus)
2813 extern "C" {
2814 #endif
2815 
2826 hipError_t hipModuleGetGlobal(hipDeviceptr_t* dptr, size_t* bytes,
2827  hipModule_t hmod, const char* name);
2828 #endif // __HIP_VDI__
2829 
2830 hipError_t hipModuleGetTexRef(textureReference** texRef, hipModule_t hmod, const char* name);
2831 
2841 hipError_t hipModuleLoadData(hipModule_t* module, const void* image);
2842 
2855 hipError_t hipModuleLoadDataEx(hipModule_t* module, const void* image, unsigned int numOptions,
2856  hipJitOption* options, void** optionValues);
2857 
2882 hipError_t hipModuleLaunchKernel(hipFunction_t f, unsigned int gridDimX, unsigned int gridDimY,
2883  unsigned int gridDimZ, unsigned int blockDimX,
2884  unsigned int blockDimY, unsigned int blockDimZ,
2885  unsigned int sharedMemBytes, hipStream_t stream,
2886  void** kernelParams, void** extra);
2887 
2888 
2904 hipError_t hipLaunchCooperativeKernel(const void* f, dim3 gridDim, dim3 blockDimX,
2905  void** kernelParams, unsigned int sharedMemBytes,
2906  hipStream_t stream);
2907 
2918 hipError_t hipLaunchCooperativeKernelMultiDevice(hipLaunchParams* launchParamsList,
2919  int numDevices, unsigned int flags);
2920 
2932 hipError_t hipOccupancyMaxPotentialBlockSize(uint32_t* gridSize, uint32_t* blockSize,
2933  hipFunction_t f, size_t dynSharedMemPerBlk,
2934  uint32_t blockSizeLimit);
2935 
2945  uint32_t* numBlocks, hipFunction_t f, uint32_t blockSize, size_t dynSharedMemPerBlk);
2946 
2957  uint32_t* numBlocks, hipFunction_t f, uint32_t blockSize, size_t dynSharedMemPerBlk, unsigned int flags);
2958 
2959 #if defined(__clang__) && defined(__HIP__)
2960 
2971 hipError_t hipExtLaunchMultiKernelMultiDevice(hipLaunchParams* launchParamsList,
2972  int numDevices, unsigned int flags);
2973 
2974 #endif
2975 
2976 // doxygen end Version Management
2994 // TODO - expand descriptions:
3000 DEPRECATED("use roctracer/rocTX instead")
3001 hipError_t hipProfilerStart();
3002 
3003 
3009 DEPRECATED("use roctracer/rocTX instead")
3010 hipError_t hipProfilerStop();
3011 
3012 
3017 // TODO: implement IPC apis
3018 
3044 hipError_t hipIpcGetMemHandle(hipIpcMemHandle_t* handle, void* devPtr);
3045 
3082 hipError_t hipIpcOpenMemHandle(void** devPtr, hipIpcMemHandle_t handle, unsigned int flags);
3083 
3102 hipError_t hipIpcCloseMemHandle(void* devPtr);
3103 
3104 
3105 // hipError_t hipIpcGetMemHandle(hipIpcMemHandle_t* handle, void* devPtr);
3106 // hipError_t hipIpcCloseMemHandle(void *devPtr);
3107 // // hipError_t hipIpcOpenEventHandle(hipEvent_t* event, hipIpcEventHandle_t handle);
3108 // hipError_t hipIpcOpenMemHandle(void** devPtr, hipIpcMemHandle_t handle, unsigned int flags);
3109 
3110 
3131 hipError_t hipConfigureCall(dim3 gridDim, dim3 blockDim, size_t sharedMem __dparm(0), hipStream_t stream __dparm(0));
3132 
3133 
3144 hipError_t hipSetupArgument(const void* arg, size_t size, size_t offset);
3145 
3146 
3155 hipError_t hipLaunchByPtr(const void* func);
3156 
3157 
3172 hipError_t __hipPushCallConfiguration(dim3 gridDim,
3173  dim3 blockDim,
3174  size_t sharedMem __dparm(0),
3175  hipStream_t stream __dparm(0));
3176 
3190 hipError_t __hipPopCallConfiguration(dim3 *gridDim,
3191  dim3 *blockDim,
3192  size_t *sharedMem,
3193  hipStream_t *stream);
3194 
3211 hipError_t hipLaunchKernel(const void* function_address,
3212  dim3 numBlocks,
3213  dim3 dimBlocks,
3214  void** args,
3215  size_t sharedMemBytes __dparm(0),
3216  hipStream_t stream __dparm(0));
3217 
3223 #ifdef __cplusplus
3224 } /* extern "c" */
3225 #endif
3226 
3227 #if defined(__cplusplus) && !defined(__HCC__) && defined(__clang__) && defined(__HIP__)
3228 template <typename F>
3230  uint32_t* numBlocks, F func, uint32_t blockSize, size_t dynSharedMemPerBlk) {
3231  return ::hipOccupancyMaxActiveBlocksPerMultiprocessor(numBlocks, (hipFunction_t)func, blockSize,
3232  dynSharedMemPerBlk);
3233 }
3234 template <typename F>
3236  uint32_t* numBlocks, F func, uint32_t blockSize, size_t dynSharedMemPerBlk, unsigned int flags) {
3238  numBlocks, (hipFunction_t)func, blockSize, dynSharedMemPerBlk, flags);
3239 }
3240 #endif // defined(__cplusplus) && !defined(__HCC__) && defined(__clang__) && defined(__HIP__)
3241 
3242 #if USE_PROF_API
3243 #include <hip/hcc_detail/hip_prof_str.h>
3244 #endif
3245 
3246 #ifdef __cplusplus
3247 extern "C" {
3248 #endif
3249 
3252 hipError_t hipRegisterApiCallback(uint32_t id, void* fun, void* arg);
3253 hipError_t hipRemoveApiCallback(uint32_t id);
3254 hipError_t hipRegisterActivityCallback(uint32_t id, void* fun, void* arg);
3255 hipError_t hipRemoveActivityCallback(uint32_t id);
3256 const char* hipApiName(uint32_t id);
3257 const char* hipKernelNameRef(const hipFunction_t f);
3258 #ifdef __cplusplus
3259 } /* extern "C" */
3260 #endif
3261 
3262 #ifdef __cplusplus
3263 
3264 class TlsData;
3265 
3266 hipError_t hipBindTexture(size_t* offset, textureReference* tex, const void* devPtr,
3267  const hipChannelFormatDesc* desc, size_t size = UINT_MAX);
3268 
3269 hipError_t ihipBindTextureImpl(TlsData *tls, int dim, enum hipTextureReadMode readMode, size_t* offset,
3270  const void* devPtr, const struct hipChannelFormatDesc* desc,
3271  size_t size, textureReference* tex);
3272 
3273 /*
3274  * @brief hipBindTexture Binds size bytes of the memory area pointed to by @p devPtr to the texture
3275  *reference tex.
3276  *
3277  * @p desc describes how the memory is interpreted when fetching values from the texture. The @p
3278  *offset parameter is an optional byte offset as with the low-level hipBindTexture() function. Any
3279  *memory previously bound to tex is unbound.
3280  *
3281  * @param[in] offset - Offset in bytes
3282  * @param[out] tex - texture to bind
3283  * @param[in] devPtr - Memory area on device
3284  * @param[in] desc - Channel format
3285  * @param[in] size - Size of the memory area pointed to by devPtr
3286  * @return #hipSuccess, #hipErrorInvalidValue, #hipErrorMemoryFree, #hipErrorUnknown
3287  **/
3288 template <class T, int dim, enum hipTextureReadMode readMode>
3289 hipError_t hipBindTexture(size_t* offset, struct texture<T, dim, readMode>& tex, const void* devPtr,
3290  const struct hipChannelFormatDesc& desc, size_t size = UINT_MAX) {
3291  return ihipBindTextureImpl(nullptr, dim, readMode, offset, devPtr, &desc, size, &tex);
3292 }
3293 
3294 /*
3295  * @brief hipBindTexture Binds size bytes of the memory area pointed to by @p devPtr to the texture
3296  *reference tex.
3297  *
3298  * @p desc describes how the memory is interpreted when fetching values from the texture. The @p
3299  *offset parameter is an optional byte offset as with the low-level hipBindTexture() function. Any
3300  *memory previously bound to tex is unbound.
3301  *
3302  * @param[in] offset - Offset in bytes
3303  * @param[in] tex - texture to bind
3304  * @param[in] devPtr - Memory area on device
3305  * @param[in] size - Size of the memory area pointed to by devPtr
3306  * @return #hipSuccess, #hipErrorInvalidValue, #hipErrorMemoryFree, #hipErrorUnknown
3307  **/
3308 template <class T, int dim, enum hipTextureReadMode readMode>
3309 hipError_t hipBindTexture(size_t* offset, struct texture<T, dim, readMode>& tex, const void* devPtr,
3310  size_t size = UINT_MAX) {
3311  return ihipBindTextureImpl(nullptr, dim, readMode, offset, devPtr, &(tex.channelDesc), size, &tex);
3312 }
3313 
3314 // C API
3315 hipError_t hipBindTexture2D(size_t* offset, textureReference* tex, const void* devPtr,
3316  const hipChannelFormatDesc* desc, size_t width, size_t height,
3317  size_t pitch);
3318 
3319 hipError_t ihipBindTexture2DImpl(int dim, enum hipTextureReadMode readMode, size_t* offset,
3320  const void* devPtr, const struct hipChannelFormatDesc* desc,
3321  size_t width, size_t height, textureReference* tex, size_t pitch);
3322 
3323 template <class T, int dim, enum hipTextureReadMode readMode>
3324 hipError_t hipBindTexture2D(size_t* offset, struct texture<T, dim, readMode>& tex,
3325  const void* devPtr, size_t width, size_t height, size_t pitch) {
3326  return ihipBindTexture2DImpl(dim, readMode, offset, devPtr, &(tex.channelDesc), width, height,
3327  &tex);
3328 }
3329 
3330 template <class T, int dim, enum hipTextureReadMode readMode>
3331 hipError_t hipBindTexture2D(size_t* offset, struct texture<T, dim, readMode>& tex,
3332  const void* devPtr, const struct hipChannelFormatDesc& desc,
3333  size_t width, size_t height, size_t pitch) {
3334  return ihipBindTexture2DImpl(dim, readMode, offset, devPtr, &desc, width, height, &tex);
3335 }
3336 
3337 // C API
3338 hipError_t hipBindTextureToArray(textureReference* tex, hipArray_const_t array,
3339  const hipChannelFormatDesc* desc);
3340 
3341 hipError_t ihipBindTextureToArrayImpl(TlsData *tls, int dim, enum hipTextureReadMode readMode,
3342  hipArray_const_t array,
3343  const struct hipChannelFormatDesc& desc,
3344  textureReference* tex);
3345 
3346 template <class T, int dim, enum hipTextureReadMode readMode>
3347 hipError_t hipBindTextureToArray(struct texture<T, dim, readMode>& tex, hipArray_const_t array) {
3348  return ihipBindTextureToArrayImpl(nullptr, dim, readMode, array, tex.channelDesc, &tex);
3349 }
3350 
3351 template <class T, int dim, enum hipTextureReadMode readMode>
3352 hipError_t hipBindTextureToArray(struct texture<T, dim, readMode>& tex, hipArray_const_t array,
3353  const struct hipChannelFormatDesc& desc) {
3354  return ihipBindTextureToArrayImpl(nullptr, dim, readMode, array, desc, &tex);
3355 }
3356 
3357 template <class T, int dim, enum hipTextureReadMode readMode>
3358 inline static hipError_t hipBindTextureToArray(struct texture<T, dim, readMode> *tex,
3359  hipArray_const_t array,
3360  const struct hipChannelFormatDesc* desc) {
3361  return ihipBindTextureToArrayImpl(nullptr, dim, readMode, array, *desc, tex);
3362 }
3363 
3364 // C API
3365 hipError_t hipBindTextureToMipmappedArray(const textureReference* tex,
3366  hipMipmappedArray_const_t mipmappedArray,
3367  const hipChannelFormatDesc* desc);
3368 
3369 template <class T, int dim, enum hipTextureReadMode readMode>
3370 hipError_t hipBindTextureToMipmappedArray(const texture<T, dim, readMode>& tex,
3371  hipMipmappedArray_const_t mipmappedArray) {
3372  return hipSuccess;
3373 }
3374 
3375 template <class T, int dim, enum hipTextureReadMode readMode>
3376 hipError_t hipBindTextureToMipmappedArray(const texture<T, dim, readMode>& tex,
3377  hipMipmappedArray_const_t mipmappedArray,
3378  const hipChannelFormatDesc& desc) {
3379  return hipSuccess;
3380 }
3381 
3382 
3383 template <class T>
3384 inline hipError_t hipLaunchCooperativeKernel(T f, dim3 gridDim, dim3 blockDim,
3385  void** kernelParams, unsigned int sharedMemBytes, hipStream_t stream) {
3386  return hipLaunchCooperativeKernel(reinterpret_cast<const void*>(f), gridDim,
3387  blockDim, kernelParams, sharedMemBytes, stream);
3388 }
3389 
3390 template <class T>
3391 inline hipError_t hipLaunchCooperativeKernelMultiDevice(hipLaunchParams* launchParamsList,
3392  unsigned int numDevices, unsigned int flags = 0) {
3393  return hipLaunchCooperativeKernelMultiDevice(launchParamsList, numDevices, flags);
3394 }
3395 
3396 #if defined(__clang__) && defined(__HIP__)
3397 template <class T>
3398 inline hipError_t hipExtLaunchMultiKernelMultiDevice(hipLaunchParams* launchParamsList,
3399  unsigned int numDevices, unsigned int flags = 0) {
3400  return hipExtLaunchMultiKernelMultiDevice(launchParamsList, numDevices, flags);
3401 }
3402 
3403 #endif
3404 
3405 /*
3406  * @brief Unbinds the textuer bound to @p tex
3407  *
3408  * @param[in] tex - texture to unbind
3409  *
3410  * @return #hipSuccess
3411  **/
3412 hipError_t hipUnbindTexture(const textureReference* tex);
3413 
3414 extern hipError_t ihipUnbindTextureImpl(const hipTextureObject_t& textureObject);
3415 
3416 template <class T, int dim, enum hipTextureReadMode readMode>
3417 hipError_t hipUnbindTexture(struct texture<T, dim, readMode>& tex) {
3418  return ihipUnbindTextureImpl(tex.textureObject);
3419 }
3420 
3421 hipError_t hipGetChannelDesc(hipChannelFormatDesc* desc, hipArray_const_t array);
3422 hipError_t hipGetTextureAlignmentOffset(size_t* offset, const textureReference* texref);
3423 hipError_t hipGetTextureReference(const textureReference** texref, const void* symbol);
3424 
3425 hipError_t hipCreateTextureObject(hipTextureObject_t* pTexObject, const hipResourceDesc* pResDesc,
3426  const hipTextureDesc* pTexDesc,
3427  const hipResourceViewDesc* pResViewDesc);
3428 
3429 hipError_t hipDestroyTextureObject(hipTextureObject_t textureObject);
3430 
3431 hipError_t hipGetTextureObjectResourceDesc(hipResourceDesc* pResDesc,
3432  hipTextureObject_t textureObject);
3433 hipError_t hipGetTextureObjectResourceViewDesc(hipResourceViewDesc* pResViewDesc,
3434  hipTextureObject_t textureObject);
3435 hipError_t hipGetTextureObjectTextureDesc(hipTextureDesc* pTexDesc,
3436  hipTextureObject_t textureObject);
3437 hipError_t hipTexRefSetArray(textureReference* tex, hipArray_const_t array, unsigned int flags);
3438 
3439 hipError_t hipTexRefGetArray(hipArray_t* array, textureReference tex);
3440 
3441 hipError_t hipTexRefSetAddressMode(textureReference* tex, int dim, hipTextureAddressMode am);
3442 
3443 hipError_t hipTexRefGetAddressMode(hipTextureAddressMode* am, textureReference tex, int dim);
3444 
3445 hipError_t hipTexRefSetFilterMode(textureReference* tex, hipTextureFilterMode fm);
3446 
3447 hipError_t hipTexRefSetFlags(textureReference* tex, unsigned int flags);
3448 
3449 hipError_t hipTexRefSetFormat(textureReference* tex, hipArray_Format fmt, int NumPackedComponents);
3450 
3451 hipError_t hipTexRefSetAddress(size_t* offset, textureReference* tex, hipDeviceptr_t devPtr,
3452  size_t size);
3453 
3454 hipError_t hipTexRefGetAddress(hipDeviceptr_t* dev_ptr, textureReference tex);
3455 
3456 hipError_t hipTexRefSetAddress2D(textureReference* tex, const HIP_ARRAY_DESCRIPTOR* desc,
3457  hipDeviceptr_t devPtr, size_t pitch);
3458 
3459 hipError_t hipCreateSurfaceObject(hipSurfaceObject_t* pSurfObject, const hipResourceDesc* pResDesc);
3460 
3461 hipError_t hipDestroySurfaceObject(hipSurfaceObject_t surfaceObject);
3462 
3463 // doxygen end Texture
3469 #endif
3470 
3471 #ifdef __GNUC__
3472 #pragma GCC visibility pop
3473 #endif
3474 
3492 // end-group HCC_Specific
3498 // doxygen end HIP API
3503 #endif
hipError_t hipMemcpy2DFromArrayAsync(void *dst, size_t dpitch, hipArray_const_t src, size_t wOffset, size_t hOffset, size_t width, size_t height, hipMemcpyKind kind, hipStream_t stream __dparm(0))
Copies data between host and device asynchronously.
hipError_t hipHostFree(void *ptr)
Free memory allocated by the hcc hip host memory allocation API This API performs an implicit hipDevi...
Definition: hip_memory.cpp:2005
prefer larger L1 cache and smaller shared memory
Definition: hip_runtime_api.h:248
hipError_t hipModuleGetFunction(hipFunction_t *function, hipModule_t module, const char *kname)
Function with kname will be extracted if present in module.
Definition: hip_module.cpp:1038
hipError_t hipCtxDisablePeerAccess(hipCtx_t peerCtx)
Disable direct access from current context&#39;s virtual address space to memory allocations physically l...
Definition: hip_peer.cpp:220
hipError_t hipMemset3D(hipPitchedPtr pitchedDevPtr, int value, hipExtent extent)
Fills synchronously the memory area pointed to by pitchedDevPtr with the constant value...
Definition: hip_memory.cpp:1900
hipError_t hipStreamGetPriority(hipStream_t stream, int *priority)
Query the priority of a stream.
Definition: hip_stream.cpp:237
hipError_t hipDeviceGetCacheConfig(hipFuncCache_t *cacheConfig)
Set Cache configuration for a specific function.
Definition: hip_device.cpp:82
hipError_t hipDriverGetVersion(int *driverVersion)
Returns the approximate HIP driver version.
Definition: hip_context.cpp:85
hipError_t hipLaunchKernel(const void *function_address, dim3 numBlocks, dim3 dimBlocks, void **args, size_t sharedMemBytes __dparm(0), hipStream_t stream __dparm(0))
C compliant kernel launch API.
Definition: hip_runtime_api.h:278
hipError_t hipPeekAtLastError(void)
Return last error returned by any HIP runtime API call.
Definition: hip_error.cpp:41
hipError_t hipMemcpyParam2D(const hip_Memcpy2D *pCopy)
Copies memory for 2D arrays.
Definition: hip_memory.cpp:1783
hipError_t hipDevicePrimaryCtxSetFlags(hipDevice_t dev, unsigned int flags)
Set flags for the primary context.
Definition: hip_context.cpp:321
hipError_t hipDevicePrimaryCtxRetain(hipCtx_t *pctx, hipDevice_t dev)
Retain the primary context on the GPU.
Definition: hip_context.cpp:296
struct dim3 dim3
hipError_t hipDeviceComputeCapability(int *major, int *minor, hipDevice_t device)
Returns the compute capability of the device.
Definition: hip_device.cpp:417
hipError_t hipDeviceGetByPCIBusId(int *device, const char *pciBusId)
Returns a handle to a compute device.
Definition: hip_device.cpp:475
hipError_t hipExtMallocWithFlags(void **ptr, size_t sizeBytes, unsigned int flags)
Allocate memory on the default accelerator.
Definition: hip_memory.cpp:364
hipError_t hipMemGetAddressRange(hipDeviceptr_t *pbase, size_t *psize, hipDeviceptr_t dptr)
Get information on memory allocations.
Definition: hip_memory.cpp:2046
TODO-doc.
hipError_t hipMemsetD16Async(hipDeviceptr_t dest, unsigned short value, size_t count, hipStream_t stream __dparm(0))
Fills the first sizeBytes bytes of the memory area pointed to by dest with the constant short value v...
hipError_t hipFreeHost(void *ptr)
Free memory allocated by the hcc hip host memory allocation API. [Deprecated].
Definition: hip_memory.cpp:2016
hipError_t hipMemcpyToArray(hipArray *dst, size_t wOffset, size_t hOffset, const void *src, size_t count, hipMemcpyKind kind)
Copies data between host and device.
Definition: hip_memory.cpp:1192
unsigned long long hipSurfaceObject_t
Definition: hip_surface_types.h:36
hipError_t hipModuleLoadDataEx(hipModule_t *module, const void *image, unsigned int numOptions, hipJitOption *options, void **optionValues)
builds module from code object which resides in host memory. Image is pointer to that location...
Definition: hip_module.cpp:1206
Definition: driver_types.h:240
hipError_t hipMallocPitch(void **ptr, size_t *pitch, size_t width, size_t height)
Definition: hip_memory.cpp:493
hipError_t hipMemcpy2DAsync(void *dst, size_t dpitch, const void *src, size_t spitch, size_t width, size_t height, hipMemcpyKind kind, hipStream_t stream __dparm(0))
Copies data between host and device.
hipError_t hipMemsetD16(hipDeviceptr_t dest, unsigned short value, size_t count)
Fills the first sizeBytes bytes of the memory area pointed to by dest with the constant short value v...
Definition: hip_memory.cpp:1885
hipError_t hipMemcpy2D(void *dst, size_t dpitch, const void *src, size_t spitch, size_t width, size_t height, hipMemcpyKind kind)
Copies data between host and device.
Definition: hip_memory.cpp:1662
hipError_t hipStreamAddCallback(hipStream_t stream, hipStreamCallback_t callback, void *userData, unsigned int flags)
Adds a callback to be called on the host after all currently enqueued items in the stream have comple...
Definition: hip_stream.cpp:257
hipError_t hipMemcpyFromArray(void *dst, hipArray_const_t srcArray, size_t wOffset, size_t hOffset, size_t count, hipMemcpyKind kind)
Copies data between host and device.
Definition: hip_memory.cpp:1209
uint32_t x
x
Definition: hip_runtime_api.h:270
hipError_t hipMemcpyAtoH(void *dst, hipArray *srcArray, size_t srcOffset, size_t count)
Copies data between host and device.
Definition: hip_memory.cpp:1242
hipError_t hipDeviceEnablePeerAccess(int peerDeviceId, unsigned int flags)
Enable direct access from current device&#39;s virtual address space to memory allocations physically loc...
Definition: hip_peer.cpp:193
hipError_t hipCtxPopCurrent(hipCtx_t *ctx)
Pop the current/default context and return the popped context.
Definition: hip_context.cpp:133
const char * hipGetErrorString(hipError_t hipError)
Return handy text string message to explain the error which occurred.
Definition: hip_error.cpp:54
hipError_t hipDeviceGetSharedMemConfig(hipSharedMemConfig *pConfig)
Returns bank width of shared memory for current device.
Definition: hip_device.cpp:123
Definition: hip_runtime_api.h:150
hipError_t hipDeviceGetStreamPriorityRange(int *leastPriority, int *greatestPriority)
Returns numerical values that correspond to the least and greatest stream priority.
Definition: hip_stream.cpp:122
prefer equal size L1 cache and shared memory
Definition: hip_runtime_api.h:249
hipError_t hipHostGetDevicePointer(void **devPtr, void *hstPtr, unsigned int flags)
Get Device pointer from Host Pointer allocated through hipHostMalloc.
hipError_t hipFreeArray(hipArray *array)
Frees an array on the device.
Definition: hip_memory.cpp:2018
hipError_t hipStreamCreateWithPriority(hipStream_t *stream, unsigned int flags, int priority)
Create an asynchronous stream with the specified priority.
Definition: hip_stream.cpp:113
hipError_t hipMemsetAsync(void *dst, int value, size_t sizeBytes, hipStream_t stream __dparm(0))
Fills the first sizeBytes bytes of the memory area pointed to by dev with the constant byte value val...
hipError_t hipEventSynchronize(hipEvent_t event)
Wait for an event to complete.
Definition: hip_event.cpp:143
Definition: driver_types.h:181
hipError_t hipLaunchCooperativeKernel(const void *f, dim3 gridDim, dim3 blockDimX, void **kernelParams, unsigned int sharedMemBytes, hipStream_t stream)
launches kernel f with launch parameters and shared memory on stream with arguments passed to kernelp...
Definition: hip_module.cpp:392
hipError_t hipMemcpyHtoD(hipDeviceptr_t dst, void *src, size_t sizeBytes)
Copy data from Host to Device.
Definition: hip_memory.cpp:1021
hipError_t hipModuleUnload(hipModule_t module)
Frees the module.
Definition: hip_module.cpp:988
Definition: hip_module.cpp:107
hipError_t hipSetDeviceFlags(unsigned flags)
The current device behavior is changed according the flags passed.
hipError_t hipEventQuery(hipEvent_t event)
Query event status.
Definition: hip_event.cpp:222
hipError_t hipDeviceDisablePeerAccess(int peerDeviceId)
Disable direct access from current device&#39;s virtual address space to memory allocations physically lo...
Definition: hip_peer.cpp:186
hipError_t hipCtxGetSharedMemConfig(hipSharedMemConfig *pConfig)
Get Shared memory bank configuration.
Definition: hip_context.cpp:241
hipError_t hipMemcpy2DFromArray(void *dst, size_t dpitch, hipArray_const_t src, size_t wOffset, size_t hOffset, size_t width, size_t height, hipMemcpyKind kind)
Copies data between host and device.
Definition: hip_memory.cpp:1793
hipError_t hipOccupancyMaxActiveBlocksPerMultiprocessor(uint32_t *numBlocks, hipFunction_t f, uint32_t blockSize, size_t dynSharedMemPerBlk)
Returns occupancy for a device function.
Definition: hip_module.cpp:1427
Definition: hip_hcc_internal.h:135
hipError_t hipCtxCreate(hipCtx_t *ctx, unsigned int flags, hipDevice_t device)
Create a context and set it as current/ default context.
Definition: hip_context.cpp:52
#define hipArrayDefault
Default HIP array allocation flag.
Definition: hip_runtime_api.h:209
hipError_t hipMallocArray(hipArray **array, const hipChannelFormatDesc *desc, size_t width, size_t height __dparm(0), unsigned int flags __dparm(hipArrayDefault))
Allocate an array on the device.
hipError_t hipCtxSetSharedMemConfig(hipSharedMemConfig config)
Set Shared memory bank configuration.
Definition: hip_context.cpp:233
hipError_t hipCtxSetCurrent(hipCtx_t ctx)
Set the passed context as current/default.
Definition: hip_context.cpp:178
hipError_t __hipPopCallConfiguration(dim3 *gridDim, dim3 *blockDim, size_t *sharedMem, hipStream_t *stream)
Pop configuration of a kernel launch.
hipError_t hipIpcGetMemHandle(hipIpcMemHandle_t *handle, void *devPtr)
Gets an interprocess memory handle for an existing device memory allocation.
Definition: hip_memory.cpp:2067
Definition: hip_runtime_api.h:121
hipError_t hipMemset2DAsync(void *dst, size_t pitch, int value, size_t width, size_t height, hipStream_t stream __dparm(0))
Fills asynchronously the memory area pointed to by dst with the constant value.
Definition: driver_types.h:115
hipError_t hipHostMalloc(void **ptr, size_t size, unsigned int flags)
Allocate device accessible page locked host memory.
Definition: hip_memory.cpp:402
Definition: hip_hcc_internal.h:898
Definition: texture_types.h:74
hipError_t hipDeviceGetLimit(size_t *pValue, enum hipLimit_t limit)
Get Resource limits of current device.
Definition: hip_device.cpp:94
hipError_t hipModuleLoadData(hipModule_t *module, const void *image)
builds module from code object which resides in host memory. Image is pointer to that location...
Definition: hip_module.cpp:1187
Definition: driver_types.h:77
hipDeviceAttribute_t
Definition: hip_runtime_api.h:274
hipError_t hipEventDestroy(hipEvent_t event)
Destroy the specified event.
Definition: hip_event.cpp:131
hipError_t hipStreamCreateWithFlags(hipStream_t *stream, unsigned int flags)
Create an asynchronous stream.
Definition: hip_stream.cpp:97
hipError_t hipConfigureCall(dim3 gridDim, dim3 blockDim, size_t sharedMem __dparm(0), hipStream_t stream __dparm(0))
Configure a kernel launch.
hipError_t hipChooseDevice(int *device, const hipDeviceProp_t *prop)
Device which matches hipDeviceProp_t is returned.
Definition: hip_device.cpp:501
hipError_t hipCtxSetCacheConfig(hipFuncCache_t cacheConfig)
Set L1/Shared cache partition.
Definition: hip_context.cpp:225
hipError_t hipModuleLaunchKernel(hipFunction_t f, unsigned int gridDimX, unsigned int gridDimY, unsigned int gridDimZ, unsigned int blockDimX, unsigned int blockDimY, unsigned int blockDimZ, unsigned int sharedMemBytes, hipStream_t stream, void **kernelParams, void **extra)
launches kernel f with launch parameters and shared memory on stream with arguments passed to kernelp...
Definition: hip_runtime_api.h:269
uint32_t y
y
Definition: hip_runtime_api.h:271
void(* hipStreamCallback_t)(hipStream_t stream, hipError_t status, void *userData)
Definition: hip_runtime_api.h:843
hipError_t hipModuleLoad(hipModule_t *module, const char *fname)
Loads code object from file into a hipModule_t.
Definition: hip_module.cpp:1192
hipError_t hipDevicePrimaryCtxReset(hipDevice_t dev)
Resets the primary context on the GPU.
Definition: hip_context.cpp:308
hipError_t hipEventCreateWithFlags(hipEvent_t *event, unsigned flags)
Create an event with the specified flags.
Definition: hip_event.cpp:91
#define __host__
Definition: host_defines.h:41
hipError_t hipHostAlloc(void **ptr, size_t size, unsigned int flags)
Allocate device accessible page locked host memory [Deprecated].
Definition: hip_memory.cpp:428
hipError_t hipMallocHost(void **ptr, size_t size)
Allocate pinned host memory [Deprecated].
Definition: hip_memory.cpp:422
hipError_t hipEventElapsedTime(float *ms, hipEvent_t start, hipEvent_t stop)
Return the elapsed time between two events.
Definition: hip_event.cpp:174
hipError_t hipDeviceSetCacheConfig(hipFuncCache_t cacheConfig)
Set L1/Shared cache partition.
Definition: hip_device.cpp:74
hipError_t hipDeviceCanAccessPeer(int *canAccessPeer, int deviceId, int peerDeviceId)
Determine if a device can access a peer&#39;s memory.
Definition: hip_peer.cpp:179
hipError_t hipGetDeviceCount(int *count)
Return number of compute-capable devices.
Definition: hip_device.cpp:69
Definition: driver_types.h:68
hipError_t hipMemset(void *dst, int value, size_t sizeBytes)
Fills the first sizeBytes bytes of the memory area pointed to by dest with the constant byte value va...
Definition: hip_memory.cpp:1858
Definition: driver_types.h:253
hipError_t hipFuncGetAttribute(int *value, hipFunction_attribute attrib, hipFunction_t hfunc)
Find out a specific attribute for a given function.
Definition: hip_module.cpp:1106
hipError_t hipOccupancyMaxPotentialBlockSize(uint32_t *gridSize, uint32_t *blockSize, hipFunction_t f, size_t dynSharedMemPerBlk, uint32_t blockSizeLimit)
determine the grid and block sizes to achieves maximum occupancy for a kernel
Definition: hip_module.cpp:1364
hipError_t hipStreamDestroy(hipStream_t stream)
Destroys the specified stream.
Definition: hip_stream.cpp:194
hipError_t hipHostGetFlags(unsigned int *flagsPtr, void *hostPtr)
Return flags associated with host pointer.
Definition: hip_memory.cpp:772
hipError_t hipStreamSynchronize(hipStream_t stream)
Wait for all commands in stream to complete.
Definition: hip_stream.cpp:183
hipError_t hipMemAllocPitch(hipDeviceptr_t *dptr, size_t *pitch, size_t widthInBytes, size_t height, unsigned int elementSizeBytes)
Definition: hip_memory.cpp:504
hipError_t hipIpcOpenMemHandle(void **devPtr, hipIpcMemHandle_t handle, unsigned int flags)
Opens an interprocess memory handle exported from another process and returns a device pointer usable...
Definition: hip_memory.cpp:2103
hipError_t hipCtxGetCacheConfig(hipFuncCache_t *cacheConfig)
Set Cache configuration for a specific function.
Definition: hip_context.cpp:217
hipError_t hipMemcpyDtoD(hipDeviceptr_t dst, hipDeviceptr_t src, size_t sizeBytes)
Copy data from Device to Device.
Definition: hip_memory.cpp:1068
hipError_t hipMemset3DAsync(hipPitchedPtr pitchedDevPtr, int value, hipExtent extent, hipStream_t stream __dparm(0))
Fills asynchronously the memory area pointed to by pitchedDevPtr with the constant value...
Definition: hip_runtime_api.h:258
dim3 gridDim
Grid dimentions.
Definition: hip_runtime_api.h:280
no preference for shared memory or L1 (default)
Definition: hip_runtime_api.h:246
hipError_t hipMallocManaged(void **devPtr, size_t size, unsigned int flags __dparm(0))
Allocates memory that will be automatically managed by the Unified Memory system. ...
hipError_t hipCtxSynchronize(void)
Blocks until the default context has completed all preceding requested tasks.
Definition: hip_context.cpp:249
hipError_t hipMemsetD32Async(hipDeviceptr_t dst, int value, size_t count, hipStream_t stream __dparm(0))
Fills the memory area pointed to by dev with the constant integer value for specified number of times...
hipError_t hipCtxGetCurrent(hipCtx_t *ctx)
Get the handle of the current/ default context.
Definition: hip_context.cpp:167
hipError_t hipMalloc3DArray(hipArray **array, const struct hipChannelFormatDesc *desc, struct hipExtent extent, unsigned int flags)
Allocate an array on the device.
Definition: hip_memory.cpp:731
hipError_t hipMemcpyDtoHAsync(void *dst, hipDeviceptr_t src, size_t sizeBytes, hipStream_t stream)
Copy data from Device to Host asynchronously.
Definition: hip_memory.cpp:1135
void * func
Device function symbol.
Definition: hip_runtime_api.h:279
hipError_t hipDeviceSynchronize(void)
Waits on all active streams on current device.
Definition: hip_device.cpp:142
hipError_t hipCtxPushCurrent(hipCtx_t ctx)
Push the context to be set as current/ default context.
Definition: hip_context.cpp:154
hipError_t hipMemcpyDtoH(void *dst, hipDeviceptr_t src, size_t sizeBytes)
Copy data from Device to Host.
Definition: hip_memory.cpp:1045
Defines the different newt vector types for HIP runtime.
hipError_t hipMemcpyAsync(void *dst, const void *src, size_t sizeBytes, hipMemcpyKind kind, hipStream_t stream __dparm(0))
Copies sizeBytes bytes from the memory area pointed to by src to the memory area pointed to by offset...
hipError_t hipDeviceGetName(char *name, int len, hipDevice_t device)
Returns an identifer string for the device.
Definition: hip_device.cpp:429
hipError_t hipGetDeviceProperties(hipDeviceProp_t *prop, int deviceId)
Returns device properties.
Definition: hip_device.cpp:364
hipError_t hipHostRegister(void *hostPtr, size_t sizeBytes, unsigned int flags)
Register host memory so it can be accessed from the current device.
Definition: hip_memory.cpp:797
Definition: driver_types.h:61
hipError_t hipMalloc(void **ptr, size_t size)
Allocate memory on the default accelerator.
Definition: hip_memory.cpp:337
const char * hipGetErrorName(hipError_t hip_error)
Return name of the specified error code in text form.
Definition: hip_error.cpp:48
hipError_t hipMemset2D(void *dst, size_t pitch, int value, size_t width, size_t height)
Fills the memory area pointed to by dst with the constant value.
Definition: hip_memory.cpp:1863
Definition: driver_types.h:233
dim3 blockDim
Block dimentions.
Definition: hip_runtime_api.h:281
hipFuncCache_t
Definition: hip_runtime_api.h:245
hipError_t hipGetLastError(void)
Return last error returned by any HIP runtime API call and resets the stored error code to #hipSucces...
Definition: hip_error.cpp:32
hipError_t hipStreamWaitEvent(hipStream_t stream, hipEvent_t event, unsigned int flags)
Make the specified compute stream wait for an event.
Definition: hip_stream.cpp:130
hipError_t hipStreamGetFlags(hipStream_t stream, unsigned int *flags)
Return flags associated with this stream.
Definition: hip_stream.cpp:222
Defines surface types for HIP runtime.
hipStream_t stream
Stream identifier.
Definition: hip_runtime_api.h:284
hipError_t hipMemGetInfo(size_t *free, size_t *total)
Query memory info. Return snapshot of free memory, and total allocatable memory on the device...
Definition: hip_memory.cpp:1912
hipError_t __hipPushCallConfiguration(dim3 gridDim, dim3 blockDim, size_t sharedMem __dparm(0), hipStream_t stream __dparm(0))
Push configuration of a kernel launch.
hipError_t hipCtxGetDevice(hipDevice_t *device)
Get the handle of the device associated with current/default context.
Definition: hip_context.cpp:191
hipError_t hipDevicePrimaryCtxRelease(hipDevice_t dev)
Release the primary context on the GPU.
Definition: hip_context.cpp:285
hipError_t hipFree(void *ptr)
Free memory allocated by the hcc hip memory allocation API. This API performs an implicit hipDeviceSy...
Definition: hip_memory.cpp:1953
uint32_t z
z
Definition: hip_runtime_api.h:272
hipError_t hipCtxGetApiVersion(hipCtx_t ctx, int *apiVersion)
Returns the approximate HIP api version.
Definition: hip_context.cpp:207
hipError_t hipDeviceReset(void)
The state of current device is discarded and updated to a fresh state.
Definition: hip_device.cpp:147
hipError_t hipInit(unsigned int flags)
Explicitly initializes the HIP runtime.
Definition: hip_context.cpp:39
hipError_t hipLaunchCooperativeKernelMultiDevice(hipLaunchParams *launchParamsList, int numDevices, unsigned int flags)
Launches kernels on multiple devices where thread blocks can cooperate and synchronize as they execut...
Definition: hip_module.cpp:482
hipError_t hipMemcpy3D(const struct hipMemcpy3DParms *p)
Copies data between host and device.
Definition: hip_memory.cpp:1355
hipError_t hipRuntimeGetVersion(int *runtimeVersion)
Returns the approximate HIP Runtime version.
Definition: hip_context.cpp:97
hipError_t hipMemcpyHtoA(hipArray *dstArray, size_t dstOffset, const void *srcHost, size_t count)
Copies data between host and device.
Definition: hip_memory.cpp:1226
hipError_t hipSetupArgument(const void *arg, size_t size, size_t offset)
Set a kernel argument.
Definition: hip_clang.cpp:192
hipError_t hipMemcpyDtoDAsync(hipDeviceptr_t dst, hipDeviceptr_t src, size_t sizeBytes, hipStream_t stream)
Copy data from Device to Device asynchronously.
Definition: hip_memory.cpp:1127
Definition: hip_runtime_api.h:83
hipError_t hipSetDevice(int deviceId)
Set default device to be used for subsequent hip API calls from this thread.
Definition: hip_device.cpp:131
hipError_t hipDeviceGet(hipDevice_t *device, int ordinal)
Returns a handle to a compute device.
Definition: hip_context.cpp:70
hipError_t hipDeviceTotalMem(size_t *bytes, hipDevice_t device)
Returns the total amount of memory on the device.
Definition: hip_device.cpp:463
hipError_t hipMemAllocHost(void **ptr, size_t size)
Allocate pinned host memory [Deprecated].
Definition: hip_memory.cpp:425
hipError_t hipFuncSetCacheConfig(const void *func, hipFuncCache_t config)
Set Cache configuration for a specific function.
Definition: hip_device.cpp:107
The compiler selects a device-specific value for the banking.
Definition: hip_runtime_api.h:257
Definition: hip_runtime.h:202
hipError_t hipMemcpyPeerAsync(void *dst, int dstDeviceId, const void *src, int srcDevice, size_t sizeBytes, hipStream_t stream __dparm(0))
Copies memory from one device to memory on another device.
hipError_t hipCtxGetFlags(unsigned int *flags)
Return flags used for creating default context.
Definition: hip_context.cpp:254
hipError_t hipExtGetLinkTypeAndHopCount(int device1, int device2, uint32_t *linktype, uint32_t *hopcount)
Returns the link type and hop count between two devices.
Definition: hip_device.cpp:588
hipError_t hipCtxDestroy(hipCtx_t ctx)
Destroy a HIP context.
Definition: hip_context.cpp:109
hipError_t hipRegisterApiCallback(uint32_t id, void *fun, void *arg)
Definition: hip_intercept.cpp:33
hipSharedMemConfig
Definition: hip_runtime_api.h:256
Definition: driver_types.h:38
Definition: hip_hcc_internal.h:720
hipError_t hipOccupancyMaxActiveBlocksPerMultiprocessorWithFlags(uint32_t *numBlocks, hipFunction_t f, uint32_t blockSize, size_t dynSharedMemPerBlk, unsigned int flags)
Returns occupancy for a device function.
Definition: hip_module.cpp:1436
hipError_t hipDeviceGetAttribute(int *pi, hipDeviceAttribute_t attr, int deviceId)
Query for a specific device attribute.
Definition: hip_device.cpp:337
hipError_t hipMemcpyHtoDAsync(hipDeviceptr_t dst, void *src, size_t sizeBytes, hipStream_t stream)
Copy data from Host to Device asynchronously.
Definition: hip_memory.cpp:1120
hipError_t hipHostUnregister(void *hostPtr)
Un-register host pointer.
Definition: hip_memory.cpp:872
Definition: hip_hcc_internal.h:544
hipError_t hipMemsetD8Async(hipDeviceptr_t dest, unsigned char value, size_t count, hipStream_t stream __dparm(0))
Fills the first sizeBytes bytes of the memory area pointed to by dest with the constant byte value va...
hipError_t hipMemcpyPeer(void *dst, int dstDeviceId, const void *src, int srcDeviceId, size_t sizeBytes)
Copies memory from one device to memory on another device.
Definition: hip_peer.cpp:200
hipError_t hipStreamCreate(hipStream_t *stream)
Create an asynchronous stream.
Definition: hip_stream.cpp:106
hipError_t hipMemcpy3DAsync(const struct hipMemcpy3DParms *p, hipStream_t stream __dparm(0))
Copies data between host and device asynchronously.
hipError_t hipMemcpy(void *dst, const void *src, size_t sizeBytes, hipMemcpyKind kind)
Copy data from src to dst.
Definition: hip_memory.cpp:994
hipError_t hipEventCreate(hipEvent_t *event)
Definition: hip_event.cpp:97
Definition: driver_types.h:90
Definition: hip_runtime_api.h:106
hipError_t hipDevicePrimaryCtxGetState(hipDevice_t dev, unsigned int *flags, int *active)
Get the state of the primary context.
Definition: hip_context.cpp:263
hipError_t hipCtxEnablePeerAccess(hipCtx_t peerCtx, unsigned int flags)
Enables direct access to memory allocations in a peer context.
Definition: hip_peer.cpp:214
Definition: driver_types.h:209
hipError_t hipDeviceSetSharedMemConfig(hipSharedMemConfig config)
The bank width of shared memory on current device is set.
Definition: hip_device.cpp:115
hipError_t hipGetDevice(int *deviceId)
Return the default device id for the calling host thread.
Definition: hip_device.cpp:32
hipError_t hipEventRecord(hipEvent_t event, hipStream_t stream)
Record an event in the specified stream.
Definition: hip_event.cpp:104
hipError_t hipModuleGetGlobal(void **, size_t *, hipModule_t, const char *)
returns device memory pointer and size of the kernel present in the module with symbol name ...
Definition: hip_module.cpp:841
Definition: hip_hcc_internal.h:391
hipError_t hipDeviceGetPCIBusId(char *pciBusId, int len, int device)
Returns a PCI Bus Id string for the device, overloaded to take int device ID.
Definition: hip_device.cpp:443
prefer larger shared memory and smaller L1 cache
Definition: hip_runtime_api.h:247
hipError_t hipMemcpy2DToArray(hipArray *dst, size_t wOffset, size_t hOffset, const void *src, size_t spitch, size_t width, size_t height, hipMemcpyKind kind)
Copies data between host and device.
Definition: hip_memory.cpp:1142
void ** args
Arguments.
Definition: hip_runtime_api.h:282
hipError_t hipStreamQuery(hipStream_t stream)
Return #hipSuccess if all of the operations in the specified stream have completed, or #hipErrorNotReady if not.
Definition: hip_stream.cpp:160
hipError_t hipFuncGetAttributes(struct hipFuncAttributes *attr, const void *func)
Find out attributes for a given function.
Definition: hip_module.cpp:1088
Definition: hip_runtime_api.h:260
hipError_t hipIpcCloseMemHandle(void *devPtr)
Close memory mapped with hipIpcOpenMemHandle.
Definition: hip_memory.cpp:2148
hipError_t hipPointerGetAttributes(hipPointerAttribute_t *attributes, const void *ptr)
Return attributes for the specified pointer.
Definition: hip_memory.cpp:259
hipError_t hipMemcpyParam2DAsync(const hip_Memcpy2D *pCopy, hipStream_t stream __dparm(0))
Copies memory for 2D arrays.
size_t sharedMem
Shared memory.
Definition: hip_runtime_api.h:283
hipError_t hipMemsetD8(hipDeviceptr_t dest, unsigned char value, size_t count)
Fills the first sizeBytes bytes of the memory area pointed to by dest with the constant byte value va...
Definition: hip_memory.cpp:1875
hipError_t hipProfilerStop()
Stop recording of profiling information. When using this API, start the profiler with profiling disab...
Definition: hip_hcc.cpp:2462
hipError_t hipMemsetD32(hipDeviceptr_t dest, int value, size_t count)
Fills the memory area pointed to by dest with the constant integer value for specified number of time...
Definition: hip_memory.cpp:1895
hipError_t hipProfilerStart()
Start recording of profiling information When using this API, start the profiler with profiling disab...
Definition: hip_hcc.cpp:2452
hipError_t hipLaunchByPtr(const void *func)
Launch a kernel.
Definition: hip_clang.cpp:210
Definition: texture_types.h:94