HIP: Heterogenous-computing Interface for Portability: Memory Management

HIP: Heterogenous-computing Interface for Portability

Functions
Memory Management
HIP API

This section describes the memory management functions of HIP runtime API. The following CUDA APIs are not currently supported: More...

Collaboration diagram for Memory Management:

## Functions
hipError_t | hipPointerGetAttributes (hipPointerAttribute_t *attributes, const void *ptr)
| Return attributes for the specified pointer. More...
hipError_t | hipPointerGetAttribute (void *data, hipPointer_attribute attribute, hipDeviceptr_t ptr)
| Returns information about the specified pointer.[BETA]. More...
hipError_t | hipDrvPointerGetAttributes (unsigned int numAttributes, hipPointer_attribute *attributes, void **data, hipDeviceptr_t ptr)
| Returns information about the specified pointer.[BETA]. More...
hipError_t | hipImportExternalSemaphore (hipExternalSemaphore_t *extSem_out, const hipExternalSemaphoreHandleDesc *semHandleDesc)
| Imports an external semaphore. More...
hipError_t | hipSignalExternalSemaphoresAsync (const hipExternalSemaphore_t *extSemArray, const hipExternalSemaphoreSignalParams *paramsArray, unsigned int numExtSems, hipStream_t stream)
| Signals a set of external semaphore objects. More...
hipError_t | hipWaitExternalSemaphoresAsync (const hipExternalSemaphore_t *extSemArray, const hipExternalSemaphoreWaitParams *paramsArray, unsigned int numExtSems, hipStream_t stream)
| Waits on a set of external semaphore objects. More...
hipError_t | hipDestroyExternalSemaphore (hipExternalSemaphore_t extSem)
| Destroys an external semaphore object and releases any references to the underlying resource. Any outstanding signals or waits must have completed before the semaphore is destroyed. More...
hipError_t | hipImportExternalMemory (hipExternalMemory_t *extMem_out, const hipExternalMemoryHandleDesc *memHandleDesc)
| Imports an external memory object. More...
hipError_t | hipExternalMemoryGetMappedBuffer (void **devPtr, hipExternalMemory_t extMem, const hipExternalMemoryBufferDesc *bufferDesc)
| Maps a buffer onto an imported memory object. More...
hipError_t | hipDestroyExternalMemory (hipExternalMemory_t extMem)
| Destroys an external memory object. More...
hipError_t | hipMalloc (void **ptr, size_t size)
| Allocate memory on the default accelerator. More...
hipError_t | hipExtMallocWithFlags (void **ptr, size_t sizeBytes, unsigned int flags)
| Allocate memory on the default accelerator. More...
hipError_t | hipMallocHost (void **ptr, size_t size)
| Allocate pinned host memory [Deprecated]. More...
hipError_t | hipMemAllocHost (void **ptr, size_t size)
| Allocate pinned host memory [Deprecated]. More...
hipError_t | hipHostMalloc (void **ptr, size_t size, unsigned int flags)
| Allocate device accessible page locked host memory. More...
hipError_t | hipMallocManaged (void **dev_ptr, size_t size, unsigned int flags __dparm(hipMemAttachGlobal))
| Allocates memory that will be automatically managed by HIP. More...
hipError_t | hipMemPrefetchAsync (const void *dev_ptr, size_t count, int device, hipStream_t stream __dparm(0))
| Prefetches memory to the specified destination device using HIP. More...
hipError_t | hipMemAdvise (const void *dev_ptr, size_t count, hipMemoryAdvise advice, int device)
| Advise about the usage of a given memory range to HIP. More...
hipError_t | hipMemRangeGetAttribute (void *data, size_t data_size, hipMemRangeAttribute attribute, const void *dev_ptr, size_t count)
| Query an attribute of a given memory range in HIP. More...
hipError_t | hipMemRangeGetAttributes (void **data, size_t *data_sizes, hipMemRangeAttribute *attributes, size_t num_attributes, const void *dev_ptr, size_t count)
| Query attributes of a given memory range in HIP. More...
hipError_t | hipStreamAttachMemAsync (hipStream_t stream, void *dev_ptr, size_t length __dparm(0), unsigned int flags __dparm(hipMemAttachSingle))
| Attach memory to a stream asynchronously in HIP. More...
hipError_t | hipHostAlloc (void **ptr, size_t size, unsigned int flags)
| Allocate device accessible page locked host memory [Deprecated]. More...
hipError_t | hipHostGetDevicePointer (void **devPtr, void *hstPtr, unsigned int flags)
| Get Device pointer from Host Pointer allocated through hipHostMalloc. More...
hipError_t | hipHostGetFlags (unsigned int *flagsPtr, void *hostPtr)
| Return flags associated with host pointer. More...
hipError_t | hipHostRegister (void *hostPtr, size_t sizeBytes, unsigned int flags)
| Register host memory so it can be accessed from the current device. More...
hipError_t | hipHostUnregister (void *hostPtr)
| Un-register host pointer. More...
hipError_t | hipMallocPitch (void **ptr, size_t *pitch, size_t width, size_t height)
hipError_t | hipMemAllocPitch (hipDeviceptr_t *dptr, size_t *pitch, size_t widthInBytes, size_t height, unsigned int elementSizeBytes)
hipError_t | hipFree (void *ptr)
| Free memory allocated by the hcc hip memory allocation API. This API performs an implicit hipDeviceSynchronize() call. If pointer is NULL, the hip runtime is initialized and hipSuccess is returned. More...
hipError_t | hipFreeHost (void *ptr)
| Free memory allocated by the hcc hip host memory allocation API. [Deprecated]. More...
hipError_t | hipHostFree (void *ptr)
| Free memory allocated by the hcc hip host memory allocation API This API performs an implicit hipDeviceSynchronize() call. If pointer is NULL, the hip runtime is initialized and hipSuccess is returned. More...
hipError_t | hipMemcpy (void *dst, const void *src, size_t sizeBytes, hipMemcpyKind kind)
| Copy data from src to dst. More...
hipError_t | hipMemcpyWithStream (void *dst, const void *src, size_t sizeBytes, hipMemcpyKind kind, hipStream_t stream)
hipError_t | hipMemcpyHtoD (hipDeviceptr_t dst, void *src, size_t sizeBytes)
| Copy data from Host to Device. More...
hipError_t | hipMemcpyDtoH (void *dst, hipDeviceptr_t src, size_t sizeBytes)
| Copy data from Device to Host. More...
hipError_t | hipMemcpyDtoD (hipDeviceptr_t dst, hipDeviceptr_t src, size_t sizeBytes)
| Copy data from Device to Device. More...
hipError_t | hipMemcpyHtoDAsync (hipDeviceptr_t dst, void *src, size_t sizeBytes, hipStream_t stream)
| Copy data from Host to Device asynchronously. More...
hipError_t | hipMemcpyDtoHAsync (void *dst, hipDeviceptr_t src, size_t sizeBytes, hipStream_t stream)
| Copy data from Device to Host asynchronously. More...
hipError_t | hipMemcpyDtoDAsync (hipDeviceptr_t dst, hipDeviceptr_t src, size_t sizeBytes, hipStream_t stream)
| Copy data from Device to Device asynchronously. More...
hipError_t | hipModuleGetGlobal (hipDeviceptr_t *dptr, size_t *bytes, hipModule_t hmod, const char *name)
| Returns a global pointer from a module. Returns in *dptr and *bytes the pointer and size of the global of name name located in module hmod. If no variable of that name exists, it returns hipErrorNotFound. Both parameters dptr and bytes are optional. If one of them is NULL, it is ignored and hipSuccess is returned. More...
hipError_t | hipGetSymbolAddress (void **devPtr, const void *symbol)
hipError_t | hipGetSymbolSize (size_t *size, const void *symbol)
hipError_t | hipMemcpyToSymbol (const void *symbol, const void *src, size_t sizeBytes, size_t offset __dparm(0), hipMemcpyKind kind __dparm(hipMemcpyHostToDevice))
hipError_t | hipMemcpyToSymbolAsync (const void *symbol, const void *src, size_t sizeBytes, size_t offset, hipMemcpyKind kind, hipStream_t stream __dparm(0))
hipError_t | hipMemcpyFromSymbol (void *dst, const void *symbol, size_t sizeBytes, size_t offset __dparm(0), hipMemcpyKind kind __dparm(hipMemcpyDeviceToHost))
hipError_t | hipMemcpyFromSymbolAsync (void *dst, const void *symbol, size_t sizeBytes, size_t offset, hipMemcpyKind kind, hipStream_t stream __dparm(0))
hipError_t | hipMemcpyAsync (void *dst, const void *src, size_t sizeBytes, hipMemcpyKind kind, hipStream_t stream __dparm(0))
| Copy data from src to dst asynchronously. More...
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 value. More...
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 value. More...
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 value. More...
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 value. More...
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 value. More...
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 times. More...
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 value. More...
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. More...
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. More...
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. More...
hipError_t | hipMemset3D (hipPitchedPtr pitchedDevPtr, int value, hipExtent extent)
| Fills synchronously the memory area pointed to by pitchedDevPtr with the constant value. More...
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. More...
hipError_t | hipMemGetInfo (size_t *free, size_t *total)
| Query memory info. Return snapshot of free memory, and total allocatable memory on the device. More...
hipError_t | hipMemPtrGetInfo (void *ptr, size_t *size)
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. More...
hipError_t | hipArrayCreate (hipArray **pHandle, const HIP_ARRAY_DESCRIPTOR *pAllocateArray)
hipError_t | hipArrayDestroy (hipArray *array)
hipError_t | hipArray3DCreate (hipArray **array, const HIP_ARRAY3D_DESCRIPTOR *pAllocateArray)
hipError_t | hipMalloc3D (hipPitchedPtr *pitchedDevPtr, hipExtent extent)
hipError_t | hipFreeArray (hipArray *array)
| Frees an array on the device. More...
hipError_t | hipFreeMipmappedArray (hipMipmappedArray_t mipmappedArray)
| Frees a mipmapped array on the device. More...
hipError_t | hipMalloc3DArray (hipArray **array, const struct hipChannelFormatDesc *desc, struct hipExtent extent, unsigned int flags)
| Allocate an array on the device. More...
hipError_t | hipMallocMipmappedArray (hipMipmappedArray_t *mipmappedArray, const struct hipChannelFormatDesc *desc, struct hipExtent extent, unsigned int numLevels, unsigned int flags __dparm(0))
| Allocate a mipmapped array on the device. More...
hipError_t | hipGetMipmappedArrayLevel (hipArray_t *levelArray, hipMipmappedArray_const_t mipmappedArray, unsigned int level)
| Gets a mipmap level of a HIP mipmapped array. More...
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. More...
hipError_t | hipMemcpyParam2D (const hip_Memcpy2D *pCopy)
| Copies memory for 2D arrays. More...
hipError_t | hipMemcpyParam2DAsync (const hip_Memcpy2D *pCopy, hipStream_t stream __dparm(0))
| Copies memory for 2D arrays. More...
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. More...
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. More...
hipError_t | hipMemcpy2DToArrayAsync (hipArray *dst, size_t wOffset, size_t hOffset, 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. More...
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. More...
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. More...
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. More...
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. More...
hipError_t | hipMemcpyAtoH (void *dst, hipArray *srcArray, size_t srcOffset, size_t count)
| Copies data between host and device. More...
hipError_t | hipMemcpyHtoA (hipArray *dstArray, size_t dstOffset, const void *srcHost, size_t count)
| Copies data between host and device. More...
hipError_t | hipMemcpy3D (const struct hipMemcpy3DParms *p)
| Copies data between host and device. More...
hipError_t | hipMemcpy3DAsync (const struct hipMemcpy3DParms *p, hipStream_t stream __dparm(0))
| Copies data between host and device asynchronously. More...
hipError_t | hipDrvMemcpy3D (const HIP_MEMCPY3D *pCopy)
| Copies data between host and device. More...
hipError_t | hipDrvMemcpy3DAsync (const HIP_MEMCPY3D *pCopy, hipStream_t stream)
| Copies data between host and device asynchronously. More...

## Detailed Description

This section describes the memory management functions of HIP runtime API. The following CUDA APIs are not currently supported:

- cudaMalloc3D
- cudaMalloc3DArray
- TODO - more 2D, 3D, array APIs here.

This section describes the managed memory management functions of HIP runtime API.

## Function Documentation

## ◆ hipDestroyExternalMemory()

hipError_t hipDestroyExternalMemory | ( | hipExternalMemory_t | extMem | ) |

Destroys an external memory object.

Parameters

  [in] | extMem | External memory object to be destroyed

Returns
  hipSuccess, hipErrorInvalidDevice, hipErrorInvalidValue

See also

## ◆ hipDestroyExternalSemaphore()

hipError_t hipDestroyExternalSemaphore | ( | hipExternalSemaphore_t | extSem | ) |

Destroys an external semaphore object and releases any references to the underlying resource. Any outstanding signals or waits must have completed before the semaphore is destroyed.

Parameters

  [in] | extSem | handle to an external memory object

Returns
  hipSuccess, hipErrorInvalidDevice, hipErrorInvalidValue

See also

## ◆ hipDrvMemcpy3D()

hipError_t hipDrvMemcpy3D | ( | const HIP_MEMCPY3D * | pCopy | ) |

Copies data between host and device.

Parameters

  [in] | pCopy | 3D memory copy parameters

Returns
  hipSuccess, hipErrorInvalidValue, #hipErrorInvalidPitchValue, hipErrorInvalidDevicePointer, hipErrorInvalidMemcpyDirection

See also
  hipMemcpy, hipMemcpy2DToArray, hipMemcpy2D, hipMemcpyFromArray, hipMemcpyToSymbol, hipMemcpyAsync

## ◆ hipDrvMemcpy3DAsync()

hipError_t hipDrvMemcpy3DAsync | ( | const HIP_MEMCPY3D * | pCopy,
|  | hipStream_t | stream
| ) |  |

Copies data between host and device asynchronously.

Parameters

  [in] | pCopy | 3D memory copy parameters
  [in] | stream | Stream to use

Returns
  hipSuccess, hipErrorInvalidValue, #hipErrorInvalidPitchValue, hipErrorInvalidDevicePointer, hipErrorInvalidMemcpyDirection

See also
  hipMemcpy, hipMemcpy2DToArray, hipMemcpy2D, hipMemcpyFromArray, hipMemcpyToSymbol, hipMemcpyAsync

## ◆ hipDrvPointerGetAttributes()

hipError_t hipDrvPointerGetAttributes | ( | unsigned int | numAttributes,
|  | hipPointer_attribute * | attributes,
|  | void ** | data,
|  | hipDeviceptr_t | ptr
| ) |  |

Returns information about the specified pointer.[BETA].

Parameters

  [in] | numAttributes | number of attributes to query for
  [in] | attributes | attributes to query for
  [in,out] | data | a two-dimensional containing pointers to memory locations where the result of each attribute query will be written to
  [in] | ptr | pointer to get attributes for

Returns
  hipSuccess, hipErrorInvalidDevice, hipErrorInvalidValue

@beta This API is marked as beta, meaning, while this is feature complete, it is still open to changes and may have outstanding issues.

See also
  hipPointerGetAttribute

## ◆ hipExternalMemoryGetMappedBuffer()

hipError_t hipExternalMemoryGetMappedBuffer | ( | void ** | devPtr,
|  | hipExternalMemory_t | extMem,
|  | const hipExternalMemoryBufferDesc * | bufferDesc
| ) |  |

Maps a buffer onto an imported memory object.

Parameters

  [out] | devPtr | Returned device pointer to buffer
  [in] | extMem | Handle to external memory object
  [in] | bufferDesc | Buffer descriptor

Returns
  hipSuccess, hipErrorInvalidDevice, hipErrorInvalidValue

See also

## ◆ hipExtMallocWithFlags()

hipError_t hipExtMallocWithFlags | ( | void ** | ptr,
|  | size_t | sizeBytes,
|  | unsigned int | flags
| ) |  |

Allocate memory on the default accelerator.

Parameters

  [out] | ptr | Pointer to the allocated memory
  [in] | size | Requested memory size
  [in] | flags | Type of memory allocation

If size is 0, no memory is allocated, *ptr returns nullptr, and hipSuccess is returned.

Returns
  hipSuccess, #hipErrorOutOfMemory, hipErrorInvalidValue (bad context, null *ptr)

See also
  hipMallocPitch, hipFree, hipMallocArray, hipFreeArray, hipMalloc3D, hipMalloc3DArray, hipHostFree, hipHostMalloc

## ◆ hipFree()

hipError_t hipFree | ( | void * | ptr | ) |

Free memory allocated by the hcc hip memory allocation API. This API performs an implicit hipDeviceSynchronize() call. If pointer is NULL, the hip runtime is initialized and hipSuccess is returned.

Parameters

  [in] | ptr | Pointer to memory to be freed

Returns
  hipSuccess
  hipErrorInvalidDevicePointer (if pointer is invalid, including host pointers allocated with hipHostMalloc)

See also
  hipMalloc, hipMallocPitch, hipMallocArray, hipFreeArray, hipHostFree, hipMalloc3D, hipMalloc3DArray, hipHostMalloc

## ◆ hipFreeArray()

hipError_t hipFreeArray | ( | hipArray * | array | ) |

Frees an array on the device.

Parameters

  [in] | array | Pointer to array to free

Returns
  hipSuccess, hipErrorInvalidValue, #hipErrorNotInitialized

See also
  hipMalloc, hipMallocPitch, hipFree, hipMallocArray, hipHostMalloc, hipHostFree

## ◆ hipFreeHost()

hipError_t hipFreeHost | ( | void * | ptr | ) |

Free memory allocated by the hcc hip host memory allocation API. [Deprecated].

Parameters

  [in] | ptr | Pointer to memory to be freed

Returns
  hipSuccess, hipErrorInvalidValue (if pointer is invalid, including device pointers allocated with hipMalloc)

## ◆ hipFreeMipmappedArray()

hipError_t hipFreeMipmappedArray | ( | hipMipmappedArray_t | mipmappedArray | ) |

Frees a mipmapped array on the device.

Parameters

  [in] | mipmappedArray | - Pointer to mipmapped array to free

Returns
  hipSuccess, hipErrorInvalidValue

## ◆ hipGetMipmappedArrayLevel()

hipError_t hipGetMipmappedArrayLevel | ( | hipArray_t * | levelArray,
|  | hipMipmappedArray_const_t | mipmappedArray,
|  | unsigned int | level
| ) |  |

Gets a mipmap level of a HIP mipmapped array.

Parameters

  [out] | levelArray | - Returned mipmap level HIP array
  [in] | mipmappedArray | - HIP mipmapped array
  [in] | level | - Mipmap level

Returns
  hipSuccess, hipErrorInvalidValue

## ◆ hipHostAlloc()

hipError_t hipHostAlloc | ( | void ** | ptr,
|  | size_t | size,
|  | unsigned int | flags
| ) |  |

Allocate device accessible page locked host memory [Deprecated].

Parameters

  [out] | ptr | Pointer to the allocated host pinned memory
  [in] | size | Requested memory size
  [in] | flags | Type of host memory allocation

If size is 0, no memory is allocated, *ptr returns nullptr, and hipSuccess is returned.

Returns
  hipSuccess, #hipErrorOutOfMemory

## ◆ hipHostFree()

hipError_t hipHostFree | ( | void * | ptr | ) |

Free memory allocated by the hcc hip host memory allocation API This API performs an implicit hipDeviceSynchronize() call. If pointer is NULL, the hip runtime is initialized and hipSuccess is returned.

Parameters

  [in] | ptr | Pointer to memory to be freed

Returns
  hipSuccess, hipErrorInvalidValue (if pointer is invalid, including device pointers allocated with hipMalloc)

See also
  hipMalloc, hipMallocPitch, hipFree, hipMallocArray, hipFreeArray, hipMalloc3D, hipMalloc3DArray, hipHostMalloc

## ◆ hipHostGetDevicePointer()

hipError_t hipHostGetDevicePointer | ( | void ** | devPtr,
|  | void * | hstPtr,
|  | unsigned int | flags
| ) |  |

Get Device pointer from Host Pointer allocated through hipHostMalloc.

Parameters

  [out] | dstPtr | Device Pointer mapped to passed host pointer
  [in] | hstPtr | Host Pointer allocated through hipHostMalloc
  [in] | flags | Flags to be passed for extension

Returns
  hipSuccess, hipErrorInvalidValue, #hipErrorOutOfMemory

See also
  hipSetDeviceFlags, hipHostMalloc

## ◆ hipHostGetFlags()

hipError_t hipHostGetFlags | ( | unsigned int * | flagsPtr,
|  | void * | hostPtr
| ) |  |

Return flags associated with host pointer.

Parameters

  [out] | flagsPtr | Memory location to store flags
  [in] | hostPtr | Host Pointer allocated through hipHostMalloc

Returns
  hipSuccess, hipErrorInvalidValue

See also
  hipHostMalloc

## ◆ hipHostMalloc()

hipError_t hipHostMalloc | ( | void ** | ptr,
|  | size_t | size,
|  | unsigned int | flags
| ) |  |

Allocate device accessible page locked host memory.

Parameters

  [out] | ptr | Pointer to the allocated host pinned memory
  [in] | size | Requested memory size
  [in] | flags | Type of host memory allocation

If size is 0, no memory is allocated, *ptr returns nullptr, and hipSuccess is returned.

Returns
  hipSuccess, #hipErrorOutOfMemory

See also
  hipSetDeviceFlags, hipHostFree

## ◆ hipHostRegister()

hipError_t hipHostRegister | ( | void * | hostPtr,
|  | size_t | sizeBytes,
|  | unsigned int | flags
| ) |  |

Register host memory so it can be accessed from the current device.

Parameters

  [out] | hostPtr | Pointer to host memory to be registered.
  [in] | sizeBytes | size of the host memory
  [in] | flags. | See below.

Flags:

- hipHostRegisterDefault Memory is Mapped and Portable
- hipHostRegisterPortable Memory is considered registered by all contexts. HIP only supports one context so this is always assumed true.
- hipHostRegisterMapped Map the allocation into the address space for the current device. The device pointer can be obtained with hipHostGetDevicePointer.

After registering the memory, use hipHostGetDevicePointer to obtain the mapped device pointer. On many systems, the mapped device pointer will have a different value than the mapped host pointer. Applications must use the device pointer in device code, and the host pointer in device code.

On some systems, registered memory is pinned. On some systems, registered memory may not be actually be pinned but uses OS or hardware facilities to all GPU access to the host memory.

Developers are strongly encouraged to register memory blocks which are aligned to the host cache-line size. (typically 64-bytes but can be obtains from the CPUID instruction).

If registering non-aligned pointers, the application must take care when register pointers from the same cache line on different devices. HIP's coarse-grained synchronization model does not guarantee correct results if different devices write to different parts of the same cache block - typically one of the writes will "win" and overwrite data from the other registered memory region.

Returns
  hipSuccess, #hipErrorOutOfMemory

See also
  hipHostUnregister, hipHostGetFlags, hipHostGetDevicePointer

## ◆ hipHostUnregister()

hipError_t hipHostUnregister | ( | void * | hostPtr | ) |

Un-register host pointer.

Parameters

  [in] | hostPtr | Host pointer previously registered with hipHostRegister

Returns
  Error code

See also
  hipHostRegister

## ◆ hipImportExternalMemory()

hipError_t hipImportExternalMemory | ( | hipExternalMemory_t * | extMem_out,
|  | const hipExternalMemoryHandleDesc * | memHandleDesc
| ) |  |

Imports an external memory object.

Parameters

  [out] | extMem_out | Returned handle to an external memory object
  [in] | memHandleDesc | Memory import handle descriptor

Returns
  hipSuccess, hipErrorInvalidDevice, hipErrorInvalidValue

See also

## ◆ hipImportExternalSemaphore()

hipError_t hipImportExternalSemaphore | ( | hipExternalSemaphore_t * | extSem_out,
|  | const hipExternalSemaphoreHandleDesc * | semHandleDesc
| ) |  |

Imports an external semaphore.

Parameters

  [out] | extSem_out | External semaphores to be waited on
  [in] | semHandleDesc | Semaphore import handle descriptor

Returns
  hipSuccess, hipErrorInvalidDevice, hipErrorInvalidValue

See also

## ◆ hipMalloc()

hipError_t hipMalloc | ( | void ** | ptr,
|  | size_t | size
| ) |  |

Allocate memory on the default accelerator.

Parameters

  [out] | ptr | Pointer to the allocated memory
  [in] | size | Requested memory size

If size is 0, no memory is allocated, *ptr returns nullptr, and hipSuccess is returned.

Returns
  hipSuccess, #hipErrorOutOfMemory, hipErrorInvalidValue (bad context, null *ptr)

See also
  hipMallocPitch, hipFree, hipMallocArray, hipFreeArray, hipMalloc3D, hipMalloc3DArray, hipHostFree, hipHostMalloc

## ◆ hipMalloc3DArray()

hipError_t hipMalloc3DArray | ( | hipArray ** | array,
|  | const struct hipChannelFormatDesc * | desc,
|  | struct hipExtent | extent,
|  | unsigned int | flags
| ) |  |

Allocate an array on the device.

Parameters

  [out] | array | Pointer to allocated array in device memory
  [in] | desc | Requested channel format
  [in] | extent | Requested array allocation width, height and depth
  [in] | flags | Requested properties of allocated array

Returns
  hipSuccess, #hipErrorOutOfMemory

See also
  hipMalloc, hipMallocPitch, hipFree, hipFreeArray, hipHostMalloc, hipHostFree

## ◆ hipMallocArray()

hipError_t hipMallocArray | ( | hipArray ** | array,
|  | const hipChannelFormatDesc * | desc,
|  | size_t | width,
|  | size_t height | __dparm0,
|  | unsigned int flags | __dparmhipArrayDefault
| ) |  |

Allocate an array on the device.

Parameters

  [out] | array | Pointer to allocated array in device memory
  [in] | desc | Requested channel format
  [in] | width | Requested array allocation width
  [in] | height | Requested array allocation height
  [in] | flags | Requested properties of allocated array

Returns
  hipSuccess, #hipErrorOutOfMemory

See also
  hipMalloc, hipMallocPitch, hipFree, hipFreeArray, hipHostMalloc, hipHostFree

## ◆ hipMallocHost()

hipError_t hipMallocHost | ( | void ** | ptr,
|  | size_t | size
| ) |  |

Allocate pinned host memory [Deprecated].

Parameters

  [out] | ptr | Pointer to the allocated host pinned memory
  [in] | size | Requested memory size

If size is 0, no memory is allocated, *ptr returns nullptr, and hipSuccess is returned.

Returns
  hipSuccess, #hipErrorOutOfMemory

## ◆ hipMallocManaged()

hipError_t hipMallocManaged | ( | void ** | dev_ptr,
|  | size_t | size,
|  | unsigned int flags | __dparmhipMemAttachGlobal
| ) |  |

Allocates memory that will be automatically managed by HIP.

Parameters

  [out] | dev_ptr | - pointer to allocated device memory
  [in] | size | - requested allocation size in bytes
  [in] | flags | - must be either hipMemAttachGlobal or hipMemAttachHost (defaults to hipMemAttachGlobal)

Returns
  hipSuccess, hipErrorMemoryAllocation, hipErrorNotSupported, hipErrorInvalidValue

## ◆ hipMallocMipmappedArray()

hipError_t hipMallocMipmappedArray | ( | hipMipmappedArray_t * | mipmappedArray,
|  | const struct hipChannelFormatDesc * | desc,
|  | struct hipExtent | extent,
|  | unsigned int | numLevels,
|  | unsigned int flags | __dparm0
| ) |  |

Allocate a mipmapped array on the device.

Parameters

  [out] | mipmappedArray | - Pointer to allocated mipmapped array in device memory
  [in] | desc | - Requested channel format
  [in] | extent | - Requested allocation size (width field in elements)
  [in] | numLevels | - Number of mipmap levels to allocate
  [in] | flags | - Flags for extensions

Returns
  hipSuccess, hipErrorInvalidValue, hipErrorMemoryAllocation

## ◆ hipMallocPitch()

hipError_t hipMallocPitch | ( | void ** | ptr,
|  | size_t * | pitch,
|  | size_t | width,
|  | size_t | height
| ) |  |

Allocates at least width (in bytes) * height bytes of linear memory Padding may occur to ensure alighnment requirements are met for the given row The change in width size due to padding will be returned in *pitch. Currently the alignment is set to 128 bytes

Parameters

  [out] | ptr | Pointer to the allocated device memory
  [out] | pitch | Pitch for allocation (in bytes)
  [in] | width | Requested pitched allocation width (in bytes)
  [in] | height | Requested pitched allocation height

If size is 0, no memory is allocated, *ptr returns nullptr, and hipSuccess is returned.

Returns
  Error code

See also
  hipMalloc, hipFree, hipMallocArray, hipFreeArray, hipHostFree, hipMalloc3D, hipMalloc3DArray, hipHostMalloc

## ◆ hipMemAdvise()

hipError_t hipMemAdvise | ( | const void * | dev_ptr,
|  | size_t | count,
|  | hipMemoryAdvise | advice,
|  | int | device
| ) |  |

Advise about the usage of a given memory range to HIP.

Parameters

  [in] | dev_ptr | pointer to memory to set the advice for
  [in] | count | size in bytes of the memory range
  [in] | advice | advice to be applied for the specified memory range
  [in] | device | device to apply the advice for

Returns
  hipSuccess, hipErrorInvalidValue

## ◆ hipMemAllocHost()

hipError_t hipMemAllocHost | ( | void ** | ptr,
|  | size_t | size
| ) |  |

Allocate pinned host memory [Deprecated].

Parameters

  [out] | ptr | Pointer to the allocated host pinned memory
  [in] | size | Requested memory size

If size is 0, no memory is allocated, *ptr returns nullptr, and hipSuccess is returned.

Returns
  hipSuccess, #hipErrorOutOfMemory

## ◆ hipMemAllocPitch()

hipError_t hipMemAllocPitch | ( | hipDeviceptr_t * | dptr,
|  | size_t * | pitch,
|  | size_t | widthInBytes,
|  | size_t | height,
|  | unsigned int | elementSizeBytes
| ) |  |

Allocates at least width (in bytes) * height bytes of linear memory Padding may occur to ensure alighnment requirements are met for the given row The change in width size due to padding will be returned in *pitch. Currently the alignment is set to 128 bytes

Parameters

  [out] | dptr | Pointer to the allocated device memory
  [out] | pitch | Pitch for allocation (in bytes)
  [in] | width | Requested pitched allocation width (in bytes)
  [in] | height | Requested pitched allocation height

If size is 0, no memory is allocated, ptr returns nullptr, and hipSuccess is returned. The intended usage of pitch is as a separate parameter of the allocation, used to compute addresses within the 2D array. Given the row and column of an array element of type T, the address is computed as: T pElement = (T*)((char*)BaseAddress + Row * Pitch) + Column;

Returns
  Error code

See also
  hipMalloc, hipFree, hipMallocArray, hipFreeArray, hipHostFree, hipMalloc3D, hipMalloc3DArray, hipHostMalloc

## ◆ hipMemcpy()

hipError_t hipMemcpy | ( | void * | dst,
|  | const void * | src,
|  | size_t | sizeBytes,
|  | hipMemcpyKind | kind
| ) |  |

Copy data from src to dst.

It supports memory from host to device, device to host, device to device and host to host The src and dst must not overlap.

For hipMemcpy, the copy is always performed by the current device (set by hipSetDevice). For multi-gpu or peer-to-peer configurations, it is recommended to set the current device to the device where the src data is physically located. For optimal peer-to-peer copies, the copy device must be able to access the src and dst pointers (by calling hipDeviceEnablePeerAccess with copy agent as the current device and src/dest as the peerDevice argument. if this is not done, the hipMemcpy will still work, but will perform the copy using a staging buffer on the host. Calling hipMemcpy with dst and src pointers that do not match the hipMemcpyKind results in undefined behavior.

Parameters

  [out] | dst | Data being copy to
  [in] | src | Data being copy from
  [in] | sizeBytes | Data size in bytes
  [in] | copyType | Memory copy type

Returns
  hipSuccess, hipErrorInvalidValue, #hipErrorMemoryFree, #hipErrorUnknowni

See also
  hipArrayCreate, hipArrayDestroy, hipArrayGetDescriptor, hipMemAlloc, hipMemAllocHost, hipMemAllocPitch, hipMemcpy2D, hipMemcpy2DAsync, hipMemcpy2DUnaligned, hipMemcpyAtoA, hipMemcpyAtoD, hipMemcpyAtoH, hipMemcpyAtoHAsync, hipMemcpyDtoA, hipMemcpyDtoD, hipMemcpyDtoDAsync, hipMemcpyDtoH, hipMemcpyDtoHAsync, hipMemcpyHtoA, hipMemcpyHtoAAsync, hipMemcpyHtoDAsync, hipMemFree, hipMemFreeHost, hipMemGetAddressRange, hipMemGetInfo, hipMemHostAlloc, hipMemHostGetDevicePointer

## ◆ hipMemcpy2D()

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.

Parameters

  [in] | dst | Destination memory address
  [in] | dpitch | Pitch of destination memory
  [in] | src | Source memory address
  [in] | spitch | Pitch of source memory
  [in] | width | Width of matrix transfer (columns in bytes)
  [in] | height | Height of matrix transfer (rows)
  [in] | kind | Type of transfer

Returns
  hipSuccess, hipErrorInvalidValue, #hipErrorInvalidPitchValue, hipErrorInvalidDevicePointer, hipErrorInvalidMemcpyDirection

See also
  hipMemcpy, hipMemcpyToArray, hipMemcpy2DToArray, hipMemcpyFromArray, hipMemcpyToSymbol, hipMemcpyAsync

## ◆ hipMemcpy2DAsync()

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 | __dparm0
| ) |  |

Copies data between host and device.

Parameters

  [in] | dst | Destination memory address
  [in] | dpitch | Pitch of destination memory
  [in] | src | Source memory address
  [in] | spitch | Pitch of source memory
  [in] | width | Width of matrix transfer (columns in bytes)
  [in] | height | Height of matrix transfer (rows)
  [in] | kind | Type of transfer
  [in] | stream | Stream to use

Returns
  hipSuccess, hipErrorInvalidValue, #hipErrorInvalidPitchValue, hipErrorInvalidDevicePointer, hipErrorInvalidMemcpyDirection

See also
  hipMemcpy, hipMemcpyToArray, hipMemcpy2DToArray, hipMemcpyFromArray, hipMemcpyToSymbol, hipMemcpyAsync

## ◆ hipMemcpy2DFromArray()

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.

Parameters

  [in] | dst | Destination memory address
  [in] | dpitch | Pitch of destination memory
  [in] | src | Source memory address
  [in] | wOffset | Source starting X offset
  [in] | hOffset | Source starting Y offset
  [in] | width | Width of matrix transfer (columns in bytes)
  [in] | height | Height of matrix transfer (rows)
  [in] | kind | Type of transfer

Returns
  hipSuccess, hipErrorInvalidValue, #hipErrorInvalidPitchValue, hipErrorInvalidDevicePointer, hipErrorInvalidMemcpyDirection

See also
  hipMemcpy, hipMemcpy2DToArray, hipMemcpy2D, hipMemcpyFromArray, hipMemcpyToSymbol, hipMemcpyAsync

## ◆ hipMemcpy2DFromArrayAsync()

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 | __dparm0
| ) |  |

Copies data between host and device asynchronously.

Parameters

  [in] | dst | Destination memory address
  [in] | dpitch | Pitch of destination memory
  [in] | src | Source memory address
  [in] | wOffset | Source starting X offset
  [in] | hOffset | Source starting Y offset
  [in] | width | Width of matrix transfer (columns in bytes)
  [in] | height | Height of matrix transfer (rows)
  [in] | kind | Type of transfer
  [in] | stream | Accelerator view which the copy is being enqueued

Returns
  hipSuccess, hipErrorInvalidValue, #hipErrorInvalidPitchValue, hipErrorInvalidDevicePointer, hipErrorInvalidMemcpyDirection

See also
  hipMemcpy, hipMemcpy2DToArray, hipMemcpy2D, hipMemcpyFromArray, hipMemcpyToSymbol, hipMemcpyAsync

## ◆ hipMemcpy2DToArray()

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.

Parameters

  [in] | dst | Destination memory address
  [in] | wOffset | Destination starting X offset
  [in] | hOffset | Destination starting Y offset
  [in] | src | Source memory address
  [in] | spitch | Pitch of source memory
  [in] | width | Width of matrix transfer (columns in bytes)
  [in] | height | Height of matrix transfer (rows)
  [in] | kind | Type of transfer

Returns
  hipSuccess, hipErrorInvalidValue, #hipErrorInvalidPitchValue, hipErrorInvalidDevicePointer, hipErrorInvalidMemcpyDirection

See also
  hipMemcpy, hipMemcpyToArray, hipMemcpy2D, hipMemcpyFromArray, hipMemcpyToSymbol, hipMemcpyAsync

## ◆ hipMemcpy2DToArrayAsync()

hipError_t hipMemcpy2DToArrayAsync | ( | hipArray * | dst,
|  | size_t | wOffset,
|  | size_t | hOffset,
|  | const void * | src,
|  | size_t | spitch,
|  | size_t | width,
|  | size_t | height,
|  | hipMemcpyKind | kind,
|  | hipStream_t stream | __dparm0
| ) |  |

Copies data between host and device.

Parameters

  [in] | dst | Destination memory address
  [in] | wOffset | Destination starting X offset
  [in] | hOffset | Destination starting Y offset
  [in] | src | Source memory address
  [in] | spitch | Pitch of source memory
  [in] | width | Width of matrix transfer (columns in bytes)
  [in] | height | Height of matrix transfer (rows)
  [in] | kind | Type of transfer
  [in] | stream | Accelerator view which the copy is being enqueued

Returns
  hipSuccess, hipErrorInvalidValue, #hipErrorInvalidPitchValue, hipErrorInvalidDevicePointer, hipErrorInvalidMemcpyDirection

See also
  hipMemcpy, hipMemcpyToArray, hipMemcpy2D, hipMemcpyFromArray, hipMemcpyToSymbol, hipMemcpyAsync

## ◆ hipMemcpy3D()

hipError_t hipMemcpy3D | ( | const struct hipMemcpy3DParms * | p | ) |

Copies data between host and device.

Parameters

  [in] | p | 3D memory copy parameters

Returns
  hipSuccess, hipErrorInvalidValue, #hipErrorInvalidPitchValue, hipErrorInvalidDevicePointer, hipErrorInvalidMemcpyDirection

See also
  hipMemcpy, hipMemcpy2DToArray, hipMemcpy2D, hipMemcpyFromArray, hipMemcpyToSymbol, hipMemcpyAsync

## ◆ hipMemcpy3DAsync()

hipError_t hipMemcpy3DAsync | ( | const struct hipMemcpy3DParms * | p,
|  | hipStream_t stream | __dparm0
| ) |  |

Copies data between host and device asynchronously.

Parameters

  [in] | p | 3D memory copy parameters
  [in] | stream | Stream to use

Returns
  hipSuccess, hipErrorInvalidValue, #hipErrorInvalidPitchValue, hipErrorInvalidDevicePointer, hipErrorInvalidMemcpyDirection

See also
  hipMemcpy, hipMemcpy2DToArray, hipMemcpy2D, hipMemcpyFromArray, hipMemcpyToSymbol, hipMemcpyAsync

## ◆ hipMemcpyAsync()

hipError_t hipMemcpyAsync | ( | void * | dst,
|  | const void * | src,
|  | size_t | sizeBytes,
|  | hipMemcpyKind | kind,
|  | hipStream_t stream | __dparm0
| ) |  |

Copy data from src to dst asynchronously.

Warning
  If host or dest are not pinned, the memory copy will be performed synchronously. For best performance, use hipHostMalloc to allocate host memory that is transferred asynchronously.
  on HCC hipMemcpyAsync does not support overlapped H2D and D2H copies. For hipMemcpy, the copy is always performed by the device associated with the specified stream.

For multi-gpu or peer-to-peer configurations, it is recommended to use a stream which is a attached to the device where the src data is physically located. For optimal peer-to-peer copies, the copy device must be able to access the src and dst pointers (by calling hipDeviceEnablePeerAccess with copy agent as the current device and src/dest as the peerDevice argument. if this is not done, the hipMemcpy will still work, but will perform the copy using a staging buffer on the host.

Parameters

  [out] | dst | Data being copy to
  [in] | src | Data being copy from
  [in] | sizeBytes | Data size in bytes
  [in] | accelerator_view | Accelerator view which the copy is being enqueued

Returns
  hipSuccess, hipErrorInvalidValue, #hipErrorMemoryFree, #hipErrorUnknown

See also
  hipMemcpy, hipMemcpy2D, hipMemcpyToArray, hipMemcpy2DToArray, hipMemcpyFromArray, hipMemcpy2DFromArray, hipMemcpyArrayToArray, hipMemcpy2DArrayToArray, hipMemcpyToSymbol, hipMemcpyFromSymbol, hipMemcpy2DAsync, hipMemcpyToArrayAsync, hipMemcpy2DToArrayAsync, hipMemcpyFromArrayAsync, hipMemcpy2DFromArrayAsync, hipMemcpyToSymbolAsync, hipMemcpyFromSymbolAsync

## ◆ hipMemcpyAtoH()

hipError_t hipMemcpyAtoH | ( | void * | dst,
|  | hipArray * | srcArray,
|  | size_t | srcOffset,
|  | size_t | count
| ) |  |

Copies data between host and device.

Parameters

  [in] | dst | Destination memory address
  [in] | srcArray | Source array
  [in] | srcoffset | Offset in bytes of source array
  [in] | count | Size of memory copy in bytes

Returns
  hipSuccess, hipErrorInvalidValue, #hipErrorInvalidPitchValue, hipErrorInvalidDevicePointer, hipErrorInvalidMemcpyDirection

See also
  hipMemcpy, hipMemcpy2DToArray, hipMemcpy2D, hipMemcpyFromArray, hipMemcpyToSymbol, hipMemcpyAsync

## ◆ hipMemcpyDtoD()

hipError_t hipMemcpyDtoD | ( | hipDeviceptr_t | dst,
|  | hipDeviceptr_t | src,
|  | size_t | sizeBytes
| ) |  |

Copy data from Device to Device.

Parameters

  [out] | dst | Data being copy to
  [in] | src | Data being copy from
  [in] | sizeBytes | Data size in bytes

Returns
  hipSuccess, #hipErrorDeInitialized, #hipErrorNotInitialized, hipErrorInvalidContext, hipErrorInvalidValue

See also
  hipArrayCreate, hipArrayDestroy, hipArrayGetDescriptor, hipMemAlloc, hipMemAllocHost, hipMemAllocPitch, hipMemcpy2D, hipMemcpy2DAsync, hipMemcpy2DUnaligned, hipMemcpyAtoA, hipMemcpyAtoD, hipMemcpyAtoH, hipMemcpyAtoHAsync, hipMemcpyDtoA, hipMemcpyDtoD, hipMemcpyDtoDAsync, hipMemcpyDtoH, hipMemcpyDtoHAsync, hipMemcpyHtoA, hipMemcpyHtoAAsync, hipMemcpyHtoDAsync, hipMemFree, hipMemFreeHost, hipMemGetAddressRange, hipMemGetInfo, hipMemHostAlloc, hipMemHostGetDevicePointer

## ◆ hipMemcpyDtoDAsync()

hipError_t hipMemcpyDtoDAsync | ( | hipDeviceptr_t | dst,
|  | hipDeviceptr_t | src,
|  | size_t | sizeBytes,
|  | hipStream_t | stream
| ) |  |

Copy data from Device to Device asynchronously.

Parameters

  [out] | dst | Data being copy to
  [in] | src | Data being copy from
  [in] | sizeBytes | Data size in bytes

Returns
  hipSuccess, #hipErrorDeInitialized, #hipErrorNotInitialized, hipErrorInvalidContext, hipErrorInvalidValue

See also
  hipArrayCreate, hipArrayDestroy, hipArrayGetDescriptor, hipMemAlloc, hipMemAllocHost, hipMemAllocPitch, hipMemcpy2D, hipMemcpy2DAsync, hipMemcpy2DUnaligned, hipMemcpyAtoA, hipMemcpyAtoD, hipMemcpyAtoH, hipMemcpyAtoHAsync, hipMemcpyDtoA, hipMemcpyDtoD, hipMemcpyDtoDAsync, hipMemcpyDtoH, hipMemcpyDtoHAsync, hipMemcpyHtoA, hipMemcpyHtoAAsync, hipMemcpyHtoDAsync, hipMemFree, hipMemFreeHost, hipMemGetAddressRange, hipMemGetInfo, hipMemHostAlloc, hipMemHostGetDevicePointer

## ◆ hipMemcpyDtoH()

hipError_t hipMemcpyDtoH | ( | void * | dst,
|  | hipDeviceptr_t | src,
|  | size_t | sizeBytes
| ) |  |

Copy data from Device to Host.

Parameters

  [out] | dst | Data being copy to
  [in] | src | Data being copy from
  [in] | sizeBytes | Data size in bytes

Returns
  hipSuccess, #hipErrorDeInitialized, #hipErrorNotInitialized, hipErrorInvalidContext, hipErrorInvalidValue

See also
  hipArrayCreate, hipArrayDestroy, hipArrayGetDescriptor, hipMemAlloc, hipMemAllocHost, hipMemAllocPitch, hipMemcpy2D, hipMemcpy2DAsync, hipMemcpy2DUnaligned, hipMemcpyAtoA, hipMemcpyAtoD, hipMemcpyAtoH, hipMemcpyAtoHAsync, hipMemcpyDtoA, hipMemcpyDtoD, hipMemcpyDtoDAsync, hipMemcpyDtoH, hipMemcpyDtoHAsync, hipMemcpyHtoA, hipMemcpyHtoAAsync, hipMemcpyHtoDAsync, hipMemFree, hipMemFreeHost, hipMemGetAddressRange, hipMemGetInfo, hipMemHostAlloc, hipMemHostGetDevicePointer

## ◆ hipMemcpyDtoHAsync()

hipError_t hipMemcpyDtoHAsync | ( | void * | dst,
|  | hipDeviceptr_t | src,
|  | size_t | sizeBytes,
|  | hipStream_t | stream
| ) |  |

Copy data from Device to Host asynchronously.

Parameters

  [out] | dst | Data being copy to
  [in] | src | Data being copy from
  [in] | sizeBytes | Data size in bytes

Returns
  hipSuccess, #hipErrorDeInitialized, #hipErrorNotInitialized, hipErrorInvalidContext, hipErrorInvalidValue

See also
  hipArrayCreate, hipArrayDestroy, hipArrayGetDescriptor, hipMemAlloc, hipMemAllocHost, hipMemAllocPitch, hipMemcpy2D, hipMemcpy2DAsync, hipMemcpy2DUnaligned, hipMemcpyAtoA, hipMemcpyAtoD, hipMemcpyAtoH, hipMemcpyAtoHAsync, hipMemcpyDtoA, hipMemcpyDtoD, hipMemcpyDtoDAsync, hipMemcpyDtoH, hipMemcpyDtoHAsync, hipMemcpyHtoA, hipMemcpyHtoAAsync, hipMemcpyHtoDAsync, hipMemFree, hipMemFreeHost, hipMemGetAddressRange, hipMemGetInfo, hipMemHostAlloc, hipMemHostGetDevicePointer

## ◆ hipMemcpyFromArray()

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.

Parameters

  [in] | dst | Destination memory address
  [in] | srcArray | Source memory address
  [in] | woffset | Source starting X offset
  [in] | hOffset | Source starting Y offset
  [in] | count | Size in bytes to copy
  [in] | kind | Type of transfer

Returns
  hipSuccess, hipErrorInvalidValue, #hipErrorInvalidPitchValue, hipErrorInvalidDevicePointer, hipErrorInvalidMemcpyDirection

See also
  hipMemcpy, hipMemcpy2DToArray, hipMemcpy2D, hipMemcpyFromArray, hipMemcpyToSymbol, hipMemcpyAsync

## ◆ hipMemcpyHtoA()

hipError_t hipMemcpyHtoA | ( | hipArray * | dstArray,
|  | size_t | dstOffset,
|  | const void * | srcHost,
|  | size_t | count
| ) |  |

Copies data between host and device.

Parameters

  [in] | dstArray | Destination memory address
  [in] | dstOffset | Offset in bytes of destination array
  [in] | srcHost | Source host pointer
  [in] | count | Size of memory copy in bytes

Returns
  hipSuccess, hipErrorInvalidValue, #hipErrorInvalidPitchValue, hipErrorInvalidDevicePointer, hipErrorInvalidMemcpyDirection

See also
  hipMemcpy, hipMemcpy2DToArray, hipMemcpy2D, hipMemcpyFromArray, hipMemcpyToSymbol, hipMemcpyAsync

## ◆ hipMemcpyHtoD()

hipError_t hipMemcpyHtoD | ( | hipDeviceptr_t | dst,
|  | void * | src,
|  | size_t | sizeBytes
| ) |  |

Copy data from Host to Device.

Parameters

  [out] | dst | Data being copy to
  [in] | src | Data being copy from
  [in] | sizeBytes | Data size in bytes

Returns
  hipSuccess, #hipErrorDeInitialized, #hipErrorNotInitialized, hipErrorInvalidContext, hipErrorInvalidValue

See also
  hipArrayCreate, hipArrayDestroy, hipArrayGetDescriptor, hipMemAlloc, hipMemAllocHost, hipMemAllocPitch, hipMemcpy2D, hipMemcpy2DAsync, hipMemcpy2DUnaligned, hipMemcpyAtoA, hipMemcpyAtoD, hipMemcpyAtoH, hipMemcpyAtoHAsync, hipMemcpyDtoA, hipMemcpyDtoD, hipMemcpyDtoDAsync, hipMemcpyDtoH, hipMemcpyDtoHAsync, hipMemcpyHtoA, hipMemcpyHtoAAsync, hipMemcpyHtoDAsync, hipMemFree, hipMemFreeHost, hipMemGetAddressRange, hipMemGetInfo, hipMemHostAlloc, hipMemHostGetDevicePointer

## ◆ hipMemcpyHtoDAsync()

hipError_t hipMemcpyHtoDAsync | ( | hipDeviceptr_t | dst,
|  | void * | src,
|  | size_t | sizeBytes,
|  | hipStream_t | stream
| ) |  |

Copy data from Host to Device asynchronously.

Parameters

  [out] | dst | Data being copy to
  [in] | src | Data being copy from
  [in] | sizeBytes | Data size in bytes

Returns
  hipSuccess, #hipErrorDeInitialized, #hipErrorNotInitialized, hipErrorInvalidContext, hipErrorInvalidValue

See also
  hipArrayCreate, hipArrayDestroy, hipArrayGetDescriptor, hipMemAlloc, hipMemAllocHost, hipMemAllocPitch, hipMemcpy2D, hipMemcpy2DAsync, hipMemcpy2DUnaligned, hipMemcpyAtoA, hipMemcpyAtoD, hipMemcpyAtoH, hipMemcpyAtoHAsync, hipMemcpyDtoA, hipMemcpyDtoD, hipMemcpyDtoDAsync, hipMemcpyDtoH, hipMemcpyDtoHAsync, hipMemcpyHtoA, hipMemcpyHtoAAsync, hipMemcpyHtoDAsync, hipMemFree, hipMemFreeHost, hipMemGetAddressRange, hipMemGetInfo, hipMemHostAlloc, hipMemHostGetDevicePointer

## ◆ hipMemcpyParam2D()

hipError_t hipMemcpyParam2D | ( | const hip_Memcpy2D * | pCopy | ) |

Copies memory for 2D arrays.

Parameters

  [in] | pCopy | Parameters for the memory copy

Returns
  hipSuccess, hipErrorInvalidValue, #hipErrorInvalidPitchValue, hipErrorInvalidDevicePointer, hipErrorInvalidMemcpyDirection

See also
  hipMemcpy, hipMemcpy2D, hipMemcpyToArray, hipMemcpy2DToArray, hipMemcpyFromArray, hipMemcpyToSymbol, hipMemcpyAsync

## ◆ hipMemcpyParam2DAsync()

hipError_t hipMemcpyParam2DAsync | ( | const hip_Memcpy2D * | pCopy,
|  | hipStream_t stream | __dparm0
| ) |  |

Copies memory for 2D arrays.

Parameters

  [in] | pCopy | Parameters for the memory copy
  [in] | stream | Stream to use

Returns
  hipSuccess, hipErrorInvalidValue, #hipErrorInvalidPitchValue, hipErrorInvalidDevicePointer, hipErrorInvalidMemcpyDirection

See also
  hipMemcpy, hipMemcpy2D, hipMemcpyToArray, hipMemcpy2DToArray, hipMemcpyFromArray, hipMemcpyToSymbol, hipMemcpyAsync

## ◆ hipMemcpyToArray()

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.

Parameters

  [in] | dst | Destination memory address
  [in] | wOffset | Destination starting X offset
  [in] | hOffset | Destination starting Y offset
  [in] | src | Source memory address
  [in] | count | size in bytes to copy
  [in] | kind | Type of transfer

Returns
  hipSuccess, hipErrorInvalidValue, #hipErrorInvalidPitchValue, hipErrorInvalidDevicePointer, hipErrorInvalidMemcpyDirection

See also
  hipMemcpy, hipMemcpy2DToArray, hipMemcpy2D, hipMemcpyFromArray, hipMemcpyToSymbol, hipMemcpyAsync

## ◆ hipMemGetInfo()

hipError_t hipMemGetInfo | ( | size_t * | free,
|  | size_t * | total
| ) |  |

Query memory info. Return snapshot of free memory, and total allocatable memory on the device.

Returns in *free a snapshot of the current free memory.

Returns
  hipSuccess, hipErrorInvalidDevice, hipErrorInvalidValue

Warning
  On HCC, the free memory only accounts for memory allocated by this process and may be optimistic.

## ◆ hipMemPrefetchAsync()

hipError_t hipMemPrefetchAsync | ( | const void * | dev_ptr,
|  | size_t | count,
|  | int | device,
|  | hipStream_t stream | __dparm0
| ) |  |

Prefetches memory to the specified destination device using HIP.

Parameters

  [in] | dev_ptr | pointer to be prefetched
  [in] | count | size in bytes for prefetching
  [in] | device | destination device to prefetch to
  [in] | stream | stream to enqueue prefetch operation

Returns
  hipSuccess, hipErrorInvalidValue

## ◆ hipMemRangeGetAttribute()

hipError_t hipMemRangeGetAttribute | ( | void * | data,
|  | size_t | data_size,
|  | hipMemRangeAttribute | attribute,
|  | const void * | dev_ptr,
|  | size_t | count
| ) |  |

Query an attribute of a given memory range in HIP.

Parameters

  [in,out] | data | a pointer to a memory location where the result of each attribute query will be written to
  [in] | data_size | the size of data
  [in] | attribute | the attribute to query
  [in] | dev_ptr | start of the range to query
  [in] | count | size of the range to query

Returns
  hipSuccess, hipErrorInvalidValue

## ◆ hipMemRangeGetAttributes()

hipError_t hipMemRangeGetAttributes | ( | void ** | data,
|  | size_t * | data_sizes,
|  | hipMemRangeAttribute * | attributes,
|  | size_t | num_attributes,
|  | const void * | dev_ptr,
|  | size_t | count
| ) |  |

Query attributes of a given memory range in HIP.

Parameters

  [in,out] | data | a two-dimensional array containing pointers to memory locations where the result of each attribute query will be written to
  [in] | data_sizes | an array, containing the sizes of each result
  [in] | attributes | the attribute to query
  [in] | num_attributes | an array of attributes to query (numAttributes and the number of attributes in this array should match)
  [in] | dev_ptr | start of the range to query
  [in] | count | size of the range to query

Returns
  hipSuccess, hipErrorInvalidValue

## ◆ hipMemset()

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 value.

Parameters

  [out] | dst | Data being filled
  [in] | constant | value to be set
  [in] | sizeBytes | Data size in bytes

Returns
  hipSuccess, hipErrorInvalidValue, #hipErrorNotInitialized

## ◆ hipMemset2D()

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.

Parameters

  [out] | dst | Pointer to device memory
  [in] | pitch | - data size in bytes
  [in] | value | - constant value to be set
  [in] | width |
  [in] | height |

Returns
  hipSuccess, hipErrorInvalidValue, #hipErrorMemoryFree

## ◆ hipMemset2DAsync()

hipError_t hipMemset2DAsync | ( | void * | dst,
|  | size_t | pitch,
|  | int | value,
|  | size_t | width,
|  | size_t | height,
|  | hipStream_t stream | __dparm0
| ) |  |

Fills asynchronously the memory area pointed to by dst with the constant value.

Parameters

  [in] | dst | Pointer to device memory
  [in] | pitch | - data size in bytes
  [in] | value | - constant value to be set
  [in] | width |
  [in] | height |
  [in] | stream |

Returns
  hipSuccess, hipErrorInvalidValue, #hipErrorMemoryFree

## ◆ hipMemset3D()

hipError_t hipMemset3D | ( | hipPitchedPtr | pitchedDevPtr,
|  | int | value,
|  | hipExtent | extent
| ) |  |

Fills synchronously the memory area pointed to by pitchedDevPtr with the constant value.

Parameters

  [in] | pitchedDevPtr |
  [in] | value | - constant value to be set
  [in] | extent |

Returns
  hipSuccess, hipErrorInvalidValue, #hipErrorMemoryFree

## ◆ hipMemset3DAsync()

hipError_t hipMemset3DAsync | ( | hipPitchedPtr | pitchedDevPtr,
|  | int | value,
|  | hipExtent | extent,
|  | hipStream_t stream | __dparm0
| ) |  |

Fills asynchronously the memory area pointed to by pitchedDevPtr with the constant value.

Parameters

  [in] | pitchedDevPtr |
  [in] | value | - constant value to be set
  [in] | extent |
  [in] | stream |

Returns
  hipSuccess, hipErrorInvalidValue, #hipErrorMemoryFree

## ◆ hipMemsetAsync()

hipError_t hipMemsetAsync | ( | void * | dst,
|  | int | value,
|  | size_t | sizeBytes,
|  | hipStream_t stream | __dparm0
| ) |  |

Fills the first sizeBytes bytes of the memory area pointed to by dev with the constant byte value value.

hipMemsetAsync() is asynchronous with respect to the host, so the call may return before the memset is complete. The operation can optionally be associated to a stream by passing a non-zero stream argument. If stream is non-zero, the operation may overlap with operations in other streams.

Parameters

  [out] | dst | Pointer to device memory
  [in] | value | - Value to set for each byte of specified memory
  [in] | sizeBytes | - Size in bytes to set
  [in] | stream | - Stream identifier

Returns
  hipSuccess, hipErrorInvalidValue, #hipErrorMemoryFree

## ◆ hipMemsetD16()

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 value.

Parameters

  [out] | dst | Data ptr to be filled
  [in] | constant | value to be set
  [in] | number | of values to be set

Returns
  hipSuccess, hipErrorInvalidValue, #hipErrorNotInitialized

## ◆ hipMemsetD16Async()

hipError_t hipMemsetD16Async | ( | hipDeviceptr_t | dest,
|  | unsigned short | value,
|  | size_t | count,
|  | hipStream_t stream | __dparm0
| ) |  |

Fills the first sizeBytes bytes of the memory area pointed to by dest with the constant short value value.

hipMemsetD16Async() is asynchronous with respect to the host, so the call may return before the memset is complete. The operation can optionally be associated to a stream by passing a non-zero stream argument. If stream is non-zero, the operation may overlap with operations in other streams.

Parameters

  [out] | dst | Data ptr to be filled
  [in] | constant | value to be set
  [in] | number | of values to be set
  [in] | stream | - Stream identifier

Returns
  hipSuccess, hipErrorInvalidValue, #hipErrorNotInitialized

## ◆ hipMemsetD32()

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 times.

Parameters

  [out] | dst | Data being filled
  [in] | constant | value to be set
  [in] | number | of values to be set

Returns
  hipSuccess, hipErrorInvalidValue, #hipErrorNotInitialized

## ◆ hipMemsetD32Async()

hipError_t hipMemsetD32Async | ( | hipDeviceptr_t | dst,
|  | int | value,
|  | size_t | count,
|  | hipStream_t stream | __dparm0
| ) |  |

Fills the memory area pointed to by dev with the constant integer value for specified number of times.

hipMemsetD32Async() is asynchronous with respect to the host, so the call may return before the memset is complete. The operation can optionally be associated to a stream by passing a non-zero stream argument. If stream is non-zero, the operation may overlap with operations in other streams.

Parameters

  [out] | dst | Pointer to device memory
  [in] | value | - Value to set for each byte of specified memory
  [in] | count | - number of values to be set
  [in] | stream | - Stream identifier

Returns
  hipSuccess, hipErrorInvalidValue, #hipErrorMemoryFree

## ◆ hipMemsetD8()

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 value.

Parameters

  [out] | dst | Data ptr to be filled
  [in] | constant | value to be set
  [in] | number | of values to be set

Returns
  hipSuccess, hipErrorInvalidValue, #hipErrorNotInitialized

## ◆ hipMemsetD8Async()

hipError_t hipMemsetD8Async | ( | hipDeviceptr_t | dest,
|  | unsigned char | value,
|  | size_t | count,
|  | hipStream_t stream | __dparm0
| ) |  |

Fills the first sizeBytes bytes of the memory area pointed to by dest with the constant byte value value.

hipMemsetD8Async() is asynchronous with respect to the host, so the call may return before the memset is complete. The operation can optionally be associated to a stream by passing a non-zero stream argument. If stream is non-zero, the operation may overlap with operations in other streams.

Parameters

  [out] | dst | Data ptr to be filled
  [in] | constant | value to be set
  [in] | number | of values to be set
  [in] | stream | - Stream identifier

Returns
  hipSuccess, hipErrorInvalidValue, #hipErrorNotInitialized

## ◆ hipModuleGetGlobal()

hipError_t hipModuleGetGlobal | ( | hipDeviceptr_t * | dptr,
|  | size_t * | bytes,
|  | hipModule_t | hmod,
|  | const char * | name
| ) |  |

Returns a global pointer from a module. Returns in *dptr and *bytes the pointer and size of the global of name name located in module hmod. If no variable of that name exists, it returns hipErrorNotFound. Both parameters dptr and bytes are optional. If one of them is NULL, it is ignored and hipSuccess is returned.

Parameters

  [out] | dptr | Returned global device pointer
  [out] | bytes | Returned global size in bytes
  [in] | hmod | Module to retrieve global from
  [in] | name | Name of global to retrieve

Returns
  hipSuccess, hipErrorInvalidValue, #hipErrorNotFound, hipErrorInvalidContext

## ◆ hipPointerGetAttribute()

hipError_t hipPointerGetAttribute | ( | void * | data,
|  | hipPointer_attribute | attribute,
|  | hipDeviceptr_t | ptr
| ) |  |

Returns information about the specified pointer.[BETA].

Parameters

  [in,out] | data | returned pointer attribute value
  [in] | atribute | attribute to query for
  [in] | ptr | pointer to get attributes for

Returns
  hipSuccess, hipErrorInvalidDevice, hipErrorInvalidValue

@beta This API is marked as beta, meaning, while this is feature complete, it is still open to changes and may have outstanding issues.

See also
  hipPointerGetAttributes

## ◆ hipPointerGetAttributes()

hipError_t hipPointerGetAttributes | ( | hipPointerAttribute_t * | attributes,
|  | const void * | ptr
| ) |  |

Return attributes for the specified pointer.

Parameters

  [out] | attributes | attributes for the specified pointer
  [in] | ptr | pointer to get attributes for

Returns
  hipSuccess, hipErrorInvalidDevice, hipErrorInvalidValue

See also
  hipPointerGetAttribute

## ◆ hipSignalExternalSemaphoresAsync()

hipError_t hipSignalExternalSemaphoresAsync | ( | const hipExternalSemaphore_t * | extSemArray,
|  | const hipExternalSemaphoreSignalParams * | paramsArray,
|  | unsigned int | numExtSems,
|  | hipStream_t | stream
| ) |  |

Signals a set of external semaphore objects.

Parameters

  [in] | extSem_out | External semaphores to be waited on
  [in] | paramsArray | Array of semaphore parameters
  [in] | numExtSems | Number of semaphores to wait on
  [in] | stream | Stream to enqueue the wait operations in

Returns
  hipSuccess, hipErrorInvalidDevice, hipErrorInvalidValue

See also

## ◆ hipStreamAttachMemAsync()

hipError_t hipStreamAttachMemAsync | ( | hipStream_t | stream,
|  | void * | dev_ptr,
|  | size_t length | __dparm0,
|  | unsigned int flags | __dparmhipMemAttachSingle
| ) |  |

Attach memory to a stream asynchronously in HIP.

Parameters

  [in] | stream | - stream in which to enqueue the attach operation
  [in] | dev_ptr | - pointer to memory (must be a pointer to managed memory or to a valid host-accessible region of system-allocated memory)
  [in] | length | - length of memory (defaults to zero)
  [in] | flags | - must be one of hipMemAttachGlobal, hipMemAttachHost or hipMemAttachSingle (defaults to hipMemAttachSingle)

Returns
  hipSuccess, hipErrorInvalidValue

## ◆ hipWaitExternalSemaphoresAsync()

hipError_t hipWaitExternalSemaphoresAsync | ( | const hipExternalSemaphore_t * | extSemArray,
|  | const hipExternalSemaphoreWaitParams * | paramsArray,
|  | unsigned int | numExtSems,
|  | hipStream_t | stream
| ) |  |

Waits on a set of external semaphore objects.

Parameters

  [in] | extSem_out | External semaphores to be waited on
  [in] | paramsArray | Array of semaphore parameters
  [in] | numExtSems | Number of semaphores to wait on
  [in] | stream | Stream to enqueue the wait operations in

Returns
  hipSuccess, hipErrorInvalidDevice, hipErrorInvalidValue

See also