|
|
|
@@ -1,13 +1,35 @@
|
|
|
|
|
/*
|
|
|
|
|
* @brief hipError_t
|
|
|
|
|
* @enum
|
|
|
|
|
* @ingroup Enumerations
|
|
|
|
|
*/
|
|
|
|
|
// Developer note - when updating these, update the hipErrorName and hipErrorString functions in
|
|
|
|
|
// NVCC and HCC paths Also update the hipCUDAErrorTohipError function in NVCC path.
|
|
|
|
|
Copyright (c) 2015 - 2022 Advanced Micro Devices, Inc. All rights reserved.
|
|
|
|
|
|
|
|
|
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
|
|
|
of this software and associated documentation files (the "Software"), to deal
|
|
|
|
|
in the Software without restriction, including without limitation the rights
|
|
|
|
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
|
|
|
copies of the Software, and to permit persons to whom the Software is
|
|
|
|
|
furnished to do so, subject to the following conditions:
|
|
|
|
|
|
|
|
|
|
The above copyright notice and this permission notice shall be included in
|
|
|
|
|
all copies or substantial portions of the Software.
|
|
|
|
|
|
|
|
|
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
|
|
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
|
|
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
|
|
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
|
|
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
|
|
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
|
|
|
THE SOFTWARE.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#ifndef HIP_H
|
|
|
|
|
#define HIP_H
|
|
|
|
|
|
|
|
|
|
// Ignoring error-code return values from hip APIs is discouraged. On C++17,
|
|
|
|
|
// we can make that yield a warning
|
|
|
|
|
#if __cplusplus >= 201703L
|
|
|
|
|
#define __HIP_NODISCARD [[nodiscard]]
|
|
|
|
|
#else
|
|
|
|
|
#define __HIP_NODISCARD
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* @brief hipError_t
|
|
|
|
@@ -17,9 +39,7 @@
|
|
|
|
|
// Developer note - when updating these, update the hipErrorName and hipErrorString functions in
|
|
|
|
|
// NVCC and HCC paths Also update the hipCUDAErrorTohipError function in NVCC path.
|
|
|
|
|
|
|
|
|
|
#include <cstddef>
|
|
|
|
|
|
|
|
|
|
typedef enum hipError_t {
|
|
|
|
|
typedef enum __HIP_NODISCARD hipError_t {
|
|
|
|
|
hipSuccess = 0, ///< Successful completion.
|
|
|
|
|
hipErrorInvalidValue = 1, ///< One or more of the parameters passed to the API call is NULL
|
|
|
|
|
///< or not in an acceptable range.
|
|
|
|
@@ -73,6 +93,7 @@ typedef enum hipError_t {
|
|
|
|
|
hipErrorInvalidHandle = 400,
|
|
|
|
|
// Deprecated
|
|
|
|
|
hipErrorInvalidResourceHandle = 400, ///< Resource handle (hipEvent_t or hipStream_t) invalid.
|
|
|
|
|
hipErrorIllegalState = 401, ///< Resource required is not in a valid state to perform operation.
|
|
|
|
|
hipErrorNotFound = 500,
|
|
|
|
|
hipErrorNotReady = 600, ///< Indicates that asynchronous operations enqueued earlier are not
|
|
|
|
|
///< ready. This is not actually an error, but is used to distinguish
|
|
|
|
@@ -86,6 +107,7 @@ typedef enum hipError_t {
|
|
|
|
|
hipErrorPeerAccessNotEnabled =
|
|
|
|
|
705, ///< Peer access was never enabled from the current device.
|
|
|
|
|
hipErrorSetOnActiveProcess = 708,
|
|
|
|
|
hipErrorContextIsDestroyed = 709,
|
|
|
|
|
hipErrorAssert = 710, ///< Produced when the kernel calls assert.
|
|
|
|
|
hipErrorHostMemoryAlreadyRegistered =
|
|
|
|
|
712, ///< Produced when trying to lock a page-locked memory.
|
|
|
|
@@ -98,6 +120,32 @@ typedef enum hipError_t {
|
|
|
|
|
///< that was launched via cooperative launch APIs exceeds the maximum number of
|
|
|
|
|
///< allowed blocks for the current device
|
|
|
|
|
hipErrorNotSupported = 801, ///< Produced when the hip API is not supported/implemented
|
|
|
|
|
hipErrorStreamCaptureUnsupported = 900, ///< The operation is not permitted when the stream
|
|
|
|
|
///< is capturing.
|
|
|
|
|
hipErrorStreamCaptureInvalidated = 901, ///< The current capture sequence on the stream
|
|
|
|
|
///< has been invalidated due to a previous error.
|
|
|
|
|
hipErrorStreamCaptureMerge = 902, ///< The operation would have resulted in a merge of
|
|
|
|
|
///< two independent capture sequences.
|
|
|
|
|
hipErrorStreamCaptureUnmatched = 903, ///< The capture was not initiated in this stream.
|
|
|
|
|
hipErrorStreamCaptureUnjoined = 904, ///< The capture sequence contains a fork that was not
|
|
|
|
|
///< joined to the primary stream.
|
|
|
|
|
hipErrorStreamCaptureIsolation = 905, ///< A dependency would have been created which crosses
|
|
|
|
|
///< the capture sequence boundary. Only implicit
|
|
|
|
|
///< in-stream ordering dependencies are allowed
|
|
|
|
|
///< to cross the boundary
|
|
|
|
|
hipErrorStreamCaptureImplicit = 906, ///< The operation would have resulted in a disallowed
|
|
|
|
|
///< implicit dependency on a current capture sequence
|
|
|
|
|
///< from hipStreamLegacy.
|
|
|
|
|
hipErrorCapturedEvent = 907, ///< The operation is not permitted on an event which was last
|
|
|
|
|
///< recorded in a capturing stream.
|
|
|
|
|
hipErrorStreamCaptureWrongThread = 908, ///< A stream capture sequence not initiated with
|
|
|
|
|
///< the hipStreamCaptureModeRelaxed argument to
|
|
|
|
|
///< hipStreamBeginCapture was passed to
|
|
|
|
|
///< hipStreamEndCapture in a different thread.
|
|
|
|
|
hipErrorGraphExecUpdateFailure = 910, ///< This error indicates that the graph update
|
|
|
|
|
///< not performed because it included changes which
|
|
|
|
|
///< violated constraintsspecific to instantiated graph
|
|
|
|
|
///< update.
|
|
|
|
|
hipErrorUnknown = 999, //< Unknown error.
|
|
|
|
|
// HSA Runtime Error Codes start here.
|
|
|
|
|
hipErrorRuntimeMemory = 1052, ///< HSA runtime memory call returned error. Typically not seen
|
|
|
|
@@ -107,35 +155,154 @@ typedef enum hipError_t {
|
|
|
|
|
hipErrorTbd ///< Marker that more error codes are needed.
|
|
|
|
|
} hipError_t;
|
|
|
|
|
|
|
|
|
|
#undef __HIP_NODISCARD
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* @brief hipDeviceAttribute_t
|
|
|
|
|
* @enum
|
|
|
|
|
* @ingroup Enumerations
|
|
|
|
|
*/
|
|
|
|
|
typedef enum hipDeviceAttribute_t {
|
|
|
|
|
hipDeviceAttributeCudaCompatibleBegin = 0,
|
|
|
|
|
|
|
|
|
|
hipDeviceAttributeEccEnabled = hipDeviceAttributeCudaCompatibleBegin, ///< Whether ECC support is enabled.
|
|
|
|
|
hipDeviceAttributeAccessPolicyMaxWindowSize, ///< Cuda only. The maximum size of the window policy in bytes.
|
|
|
|
|
hipDeviceAttributeAsyncEngineCount, ///< Cuda only. Asynchronous engines number.
|
|
|
|
|
hipDeviceAttributeCanMapHostMemory, ///< Whether host memory can be mapped into device address space
|
|
|
|
|
hipDeviceAttributeCanUseHostPointerForRegisteredMem,///< Cuda only. Device can access host registered memory
|
|
|
|
|
///< at the same virtual address as the CPU
|
|
|
|
|
hipDeviceAttributeClockRate, ///< Peak clock frequency in kilohertz.
|
|
|
|
|
hipDeviceAttributeComputeMode, ///< Compute mode that device is currently in.
|
|
|
|
|
hipDeviceAttributeComputePreemptionSupported, ///< Cuda only. Device supports Compute Preemption.
|
|
|
|
|
hipDeviceAttributeConcurrentKernels, ///< Device can possibly execute multiple kernels concurrently.
|
|
|
|
|
hipDeviceAttributeConcurrentManagedAccess, ///< Device can coherently access managed memory concurrently with the CPU
|
|
|
|
|
hipDeviceAttributeCooperativeLaunch, ///< Support cooperative launch
|
|
|
|
|
hipDeviceAttributeCooperativeMultiDeviceLaunch, ///< Support cooperative launch on multiple devices
|
|
|
|
|
hipDeviceAttributeDeviceOverlap, ///< Cuda only. Device can concurrently copy memory and execute a kernel.
|
|
|
|
|
///< Deprecated. Use instead asyncEngineCount.
|
|
|
|
|
hipDeviceAttributeDirectManagedMemAccessFromHost, ///< Host can directly access managed memory on
|
|
|
|
|
///< the device without migration
|
|
|
|
|
hipDeviceAttributeGlobalL1CacheSupported, ///< Cuda only. Device supports caching globals in L1
|
|
|
|
|
hipDeviceAttributeHostNativeAtomicSupported, ///< Cuda only. Link between the device and the host supports native atomic operations
|
|
|
|
|
hipDeviceAttributeIntegrated, ///< Device is integrated GPU
|
|
|
|
|
hipDeviceAttributeIsMultiGpuBoard, ///< Multiple GPU devices.
|
|
|
|
|
hipDeviceAttributeKernelExecTimeout, ///< Run time limit for kernels executed on the device
|
|
|
|
|
hipDeviceAttributeL2CacheSize, ///< Size of L2 cache in bytes. 0 if the device doesn't have L2 cache.
|
|
|
|
|
hipDeviceAttributeLocalL1CacheSupported, ///< caching locals in L1 is supported
|
|
|
|
|
hipDeviceAttributeLuid, ///< Cuda only. 8-byte locally unique identifier in 8 bytes. Undefined on TCC and non-Windows platforms
|
|
|
|
|
hipDeviceAttributeLuidDeviceNodeMask, ///< Cuda only. Luid device node mask. Undefined on TCC and non-Windows platforms
|
|
|
|
|
hipDeviceAttributeComputeCapabilityMajor, ///< Major compute capability version number.
|
|
|
|
|
hipDeviceAttributeManagedMemory, ///< Device supports allocating managed memory on this system
|
|
|
|
|
hipDeviceAttributeMaxBlocksPerMultiProcessor, ///< Cuda only. Max block size per multiprocessor
|
|
|
|
|
hipDeviceAttributeMaxBlockDimX, ///< Max block size in width.
|
|
|
|
|
hipDeviceAttributeMaxBlockDimY, ///< Max block size in height.
|
|
|
|
|
hipDeviceAttributeMaxBlockDimZ, ///< Max block size in depth.
|
|
|
|
|
hipDeviceAttributeMaxGridDimX, ///< Max grid size in width.
|
|
|
|
|
hipDeviceAttributeMaxGridDimY, ///< Max grid size in height.
|
|
|
|
|
hipDeviceAttributeMaxGridDimZ, ///< Max grid size in depth.
|
|
|
|
|
hipDeviceAttributeMaxSurface1D, ///< Maximum size of 1D surface.
|
|
|
|
|
hipDeviceAttributeMaxSurface1DLayered, ///< Cuda only. Maximum dimensions of 1D layered surface.
|
|
|
|
|
hipDeviceAttributeMaxSurface2D, ///< Maximum dimension (width, height) of 2D surface.
|
|
|
|
|
hipDeviceAttributeMaxSurface2DLayered, ///< Cuda only. Maximum dimensions of 2D layered surface.
|
|
|
|
|
hipDeviceAttributeMaxSurface3D, ///< Maximum dimension (width, height, depth) of 3D surface.
|
|
|
|
|
hipDeviceAttributeMaxSurfaceCubemap, ///< Cuda only. Maximum dimensions of Cubemap surface.
|
|
|
|
|
hipDeviceAttributeMaxSurfaceCubemapLayered, ///< Cuda only. Maximum dimension of Cubemap layered surface.
|
|
|
|
|
hipDeviceAttributeMaxTexture1DWidth, ///< Maximum size of 1D texture.
|
|
|
|
|
hipDeviceAttributeMaxTexture1DLayered, ///< Cuda only. Maximum dimensions of 1D layered texture.
|
|
|
|
|
hipDeviceAttributeMaxTexture1DLinear, ///< Maximum number of elements allocatable in a 1D linear texture.
|
|
|
|
|
///< Use cudaDeviceGetTexture1DLinearMaxWidth() instead on Cuda.
|
|
|
|
|
hipDeviceAttributeMaxTexture1DMipmap, ///< Cuda only. Maximum size of 1D mipmapped texture.
|
|
|
|
|
hipDeviceAttributeMaxTexture2DWidth, ///< Maximum dimension width of 2D texture.
|
|
|
|
|
hipDeviceAttributeMaxTexture2DHeight, ///< Maximum dimension hight of 2D texture.
|
|
|
|
|
hipDeviceAttributeMaxTexture2DGather, ///< Cuda only. Maximum dimensions of 2D texture if gather operations performed.
|
|
|
|
|
hipDeviceAttributeMaxTexture2DLayered, ///< Cuda only. Maximum dimensions of 2D layered texture.
|
|
|
|
|
hipDeviceAttributeMaxTexture2DLinear, ///< Cuda only. Maximum dimensions (width, height, pitch) of 2D textures bound to pitched memory.
|
|
|
|
|
hipDeviceAttributeMaxTexture2DMipmap, ///< Cuda only. Maximum dimensions of 2D mipmapped texture.
|
|
|
|
|
hipDeviceAttributeMaxTexture3DWidth, ///< Maximum dimension width of 3D texture.
|
|
|
|
|
hipDeviceAttributeMaxTexture3DHeight, ///< Maximum dimension height of 3D texture.
|
|
|
|
|
hipDeviceAttributeMaxTexture3DDepth, ///< Maximum dimension depth of 3D texture.
|
|
|
|
|
hipDeviceAttributeMaxTexture3DAlt, ///< Cuda only. Maximum dimensions of alternate 3D texture.
|
|
|
|
|
hipDeviceAttributeMaxTextureCubemap, ///< Cuda only. Maximum dimensions of Cubemap texture
|
|
|
|
|
hipDeviceAttributeMaxTextureCubemapLayered, ///< Cuda only. Maximum dimensions of Cubemap layered texture.
|
|
|
|
|
hipDeviceAttributeMaxThreadsDim, ///< Maximum dimension of a block
|
|
|
|
|
hipDeviceAttributeMaxThreadsPerBlock, ///< Maximum number of threads per block.
|
|
|
|
|
hipDeviceAttributeMaxThreadsPerMultiProcessor, ///< Maximum resident threads per multiprocessor.
|
|
|
|
|
hipDeviceAttributeMaxPitch, ///< Maximum pitch in bytes allowed by memory copies
|
|
|
|
|
hipDeviceAttributeMemoryBusWidth, ///< Global memory bus width in bits.
|
|
|
|
|
hipDeviceAttributeMemoryClockRate, ///< Peak memory clock frequency in kilohertz.
|
|
|
|
|
hipDeviceAttributeComputeCapabilityMinor, ///< Minor compute capability version number.
|
|
|
|
|
hipDeviceAttributeMultiGpuBoardGroupID, ///< Cuda only. Unique ID of device group on the same multi-GPU board
|
|
|
|
|
hipDeviceAttributeMultiprocessorCount, ///< Number of multiprocessors on the device.
|
|
|
|
|
hipDeviceAttributeName, ///< Device name.
|
|
|
|
|
hipDeviceAttributePageableMemoryAccess, ///< Device supports coherently accessing pageable memory
|
|
|
|
|
///< without calling hipHostRegister on it
|
|
|
|
|
hipDeviceAttributePageableMemoryAccessUsesHostPageTables, ///< Device accesses pageable memory via the host's page tables
|
|
|
|
|
hipDeviceAttributePciBusId, ///< PCI Bus ID.
|
|
|
|
|
hipDeviceAttributePciDeviceId, ///< PCI Device ID.
|
|
|
|
|
hipDeviceAttributePciDomainID, ///< PCI Domain ID.
|
|
|
|
|
hipDeviceAttributePersistingL2CacheMaxSize, ///< Cuda11 only. Maximum l2 persisting lines capacity in bytes
|
|
|
|
|
hipDeviceAttributeMaxRegistersPerBlock, ///< 32-bit registers available to a thread block. This number is shared
|
|
|
|
|
///< by all thread blocks simultaneously resident on a multiprocessor.
|
|
|
|
|
hipDeviceAttributeMaxRegistersPerMultiprocessor, ///< 32-bit registers available per block.
|
|
|
|
|
hipDeviceAttributeReservedSharedMemPerBlock, ///< Cuda11 only. Shared memory reserved by CUDA driver per block.
|
|
|
|
|
hipDeviceAttributeMaxSharedMemoryPerBlock, ///< Maximum shared memory available per block in bytes.
|
|
|
|
|
hipDeviceAttributeSharedMemPerBlockOptin, ///< Cuda only. Maximum shared memory per block usable by special opt in.
|
|
|
|
|
hipDeviceAttributeSharedMemPerMultiprocessor, ///< Cuda only. Shared memory available per multiprocessor.
|
|
|
|
|
hipDeviceAttributeSingleToDoublePrecisionPerfRatio, ///< Cuda only. Performance ratio of single precision to double precision.
|
|
|
|
|
hipDeviceAttributeStreamPrioritiesSupported, ///< Cuda only. Whether to support stream priorities.
|
|
|
|
|
hipDeviceAttributeSurfaceAlignment, ///< Cuda only. Alignment requirement for surfaces
|
|
|
|
|
hipDeviceAttributeTccDriver, ///< Cuda only. Whether device is a Tesla device using TCC driver
|
|
|
|
|
hipDeviceAttributeTextureAlignment, ///< Alignment requirement for textures
|
|
|
|
|
hipDeviceAttributeTexturePitchAlignment, ///< Pitch alignment requirement for 2D texture references bound to pitched memory;
|
|
|
|
|
hipDeviceAttributeTotalConstantMemory, ///< Constant memory size in bytes.
|
|
|
|
|
hipDeviceAttributeTotalGlobalMem, ///< Global memory available on devicice.
|
|
|
|
|
hipDeviceAttributeUnifiedAddressing, ///< Cuda only. An unified address space shared with the host.
|
|
|
|
|
hipDeviceAttributeUuid, ///< Cuda only. Unique ID in 16 byte.
|
|
|
|
|
hipDeviceAttributeWarpSize, ///< Warp size in threads.
|
|
|
|
|
hipDeviceAttributeMemoryPoolsSupported, ///< Device supports HIP Stream Ordered Memory Allocator
|
|
|
|
|
|
|
|
|
|
hipDeviceAttributeCudaCompatibleEnd = 9999,
|
|
|
|
|
hipDeviceAttributeAmdSpecificBegin = 10000,
|
|
|
|
|
|
|
|
|
|
hipDeviceAttributeClockInstructionRate = hipDeviceAttributeAmdSpecificBegin, ///< Frequency in khz of the timer used by the device-side "clock*"
|
|
|
|
|
hipDeviceAttributeArch, ///< Device architecture
|
|
|
|
|
hipDeviceAttributeMaxSharedMemoryPerMultiprocessor, ///< Maximum Shared Memory PerMultiprocessor.
|
|
|
|
|
hipDeviceAttributeGcnArch, ///< Device gcn architecture
|
|
|
|
|
hipDeviceAttributeGcnArchName, ///< Device gcnArch name in 256 bytes
|
|
|
|
|
hipDeviceAttributeHdpMemFlushCntl, ///< Address of the HDP_MEM_COHERENCY_FLUSH_CNTL register
|
|
|
|
|
hipDeviceAttributeHdpRegFlushCntl, ///< Address of the HDP_REG_COHERENCY_FLUSH_CNTL register
|
|
|
|
|
hipDeviceAttributeCooperativeMultiDeviceUnmatchedFunc, ///< Supports cooperative launch on multiple
|
|
|
|
|
///< devices with unmatched functions
|
|
|
|
|
hipDeviceAttributeCooperativeMultiDeviceUnmatchedGridDim, ///< Supports cooperative launch on multiple
|
|
|
|
|
///< devices with unmatched grid dimensions
|
|
|
|
|
hipDeviceAttributeCooperativeMultiDeviceUnmatchedBlockDim, ///< Supports cooperative launch on multiple
|
|
|
|
|
///< devices with unmatched block dimensions
|
|
|
|
|
hipDeviceAttributeCooperativeMultiDeviceUnmatchedSharedMem, ///< Supports cooperative launch on multiple
|
|
|
|
|
///< devices with unmatched shared memories
|
|
|
|
|
hipDeviceAttributeIsLargeBar, ///< Whether it is LargeBar
|
|
|
|
|
hipDeviceAttributeAsicRevision, ///< Revision of the GPU in this device
|
|
|
|
|
hipDeviceAttributeCanUseStreamWaitValue, ///< '1' if Device supports hipStreamWaitValue32() and
|
|
|
|
|
///< hipStreamWaitValue64(), '0' otherwise.
|
|
|
|
|
hipDeviceAttributeImageSupport, ///< '1' if Device supports image, '0' otherwise.
|
|
|
|
|
hipDeviceAttributePhysicalMultiProcessorCount, ///< All available physical compute
|
|
|
|
|
///< units for the device
|
|
|
|
|
hipDeviceAttributeFineGrainSupport, ///< '1' if Device supports fine grain, '0' otherwise
|
|
|
|
|
|
|
|
|
|
hipDeviceAttributeAmdSpecificEnd = 19999,
|
|
|
|
|
hipDeviceAttributeVendorSpecificBegin = 20000,
|
|
|
|
|
// Extended attributes for vendors
|
|
|
|
|
} hipDeviceAttribute_t;
|
|
|
|
|
|
|
|
|
|
#define HIP_LAUNCH_PARAM_BUFFER_POINTER ((void*)0x01)
|
|
|
|
|
#define HIP_LAUNCH_PARAM_BUFFER_SIZE ((void*)0x02)
|
|
|
|
|
#define HIP_LAUNCH_PARAM_END ((void*)0x03)
|
|
|
|
|
// API-visible structures
|
|
|
|
|
typedef struct ihipCtx_t* hipCtx_t;
|
|
|
|
|
|
|
|
|
|
// Note many APIs also use integer deviceIds as an alternative to the device pointer:
|
|
|
|
|
typedef int hipDevice_t;
|
|
|
|
|
|
|
|
|
|
typedef enum hipDeviceP2PAttr {
|
|
|
|
|
hipDevP2PAttrPerformanceRank = 0,
|
|
|
|
|
hipDevP2PAttrAccessSupported,
|
|
|
|
|
hipDevP2PAttrNativeAtomicSupported,
|
|
|
|
|
hipDevP2PAttrHipArrayAccessSupported
|
|
|
|
|
} hipDeviceP2PAttr;
|
|
|
|
|
|
|
|
|
|
typedef struct ihipStream_t* hipStream_t;
|
|
|
|
|
|
|
|
|
|
#define hipIpcMemLazyEnablePeerAccess 0
|
|
|
|
|
|
|
|
|
|
#define HIP_IPC_HANDLE_SIZE 64
|
|
|
|
|
|
|
|
|
|
typedef struct hipIpcMemHandle_st {
|
|
|
|
|
char reserved[HIP_IPC_HANDLE_SIZE];
|
|
|
|
|
} hipIpcMemHandle_t;
|
|
|
|
|
|
|
|
|
|
typedef struct hipIpcEventHandle_st {
|
|
|
|
|
char reserved[HIP_IPC_HANDLE_SIZE];
|
|
|
|
|
} hipIpcEventHandle_t;
|
|
|
|
|
|
|
|
|
|
typedef struct ihipModule_t* hipModule_t;
|
|
|
|
|
|
|
|
|
|
typedef struct ihipModuleSymbol_t* hipFunction_t;
|
|
|
|
|
|
|
|
|
|
typedef struct hipFuncAttributes {
|
|
|
|
@@ -150,91 +317,8 @@ typedef struct hipFuncAttributes {
|
|
|
|
|
int ptxVersion;
|
|
|
|
|
size_t sharedSizeBytes;
|
|
|
|
|
} hipFuncAttributes;
|
|
|
|
|
|
|
|
|
|
typedef struct ihipEvent_t* hipEvent_t;
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* @brief hipDeviceAttribute_t
|
|
|
|
|
* @enum
|
|
|
|
|
* @ingroup Enumerations
|
|
|
|
|
*/
|
|
|
|
|
typedef enum hipDeviceAttribute_t {
|
|
|
|
|
hipDeviceAttributeMaxThreadsPerBlock, ///< Maximum number of threads per block.
|
|
|
|
|
hipDeviceAttributeMaxBlockDimX, ///< Maximum x-dimension of a block.
|
|
|
|
|
hipDeviceAttributeMaxBlockDimY, ///< Maximum y-dimension of a block.
|
|
|
|
|
hipDeviceAttributeMaxBlockDimZ, ///< Maximum z-dimension of a block.
|
|
|
|
|
hipDeviceAttributeMaxGridDimX, ///< Maximum x-dimension of a grid.
|
|
|
|
|
hipDeviceAttributeMaxGridDimY, ///< Maximum y-dimension of a grid.
|
|
|
|
|
hipDeviceAttributeMaxGridDimZ, ///< Maximum z-dimension of a grid.
|
|
|
|
|
hipDeviceAttributeMaxSharedMemoryPerBlock, ///< Maximum shared memory available per block in
|
|
|
|
|
///< bytes.
|
|
|
|
|
hipDeviceAttributeTotalConstantMemory, ///< Constant memory size in bytes.
|
|
|
|
|
hipDeviceAttributeWarpSize, ///< Warp size in threads.
|
|
|
|
|
hipDeviceAttributeMaxRegistersPerBlock, ///< Maximum number of 32-bit registers available to a
|
|
|
|
|
///< thread block. This number is shared by all thread
|
|
|
|
|
///< blocks simultaneously resident on a
|
|
|
|
|
///< multiprocessor.
|
|
|
|
|
hipDeviceAttributeClockRate, ///< Peak clock frequency in kilohertz.
|
|
|
|
|
hipDeviceAttributeMemoryClockRate, ///< Peak memory clock frequency in kilohertz.
|
|
|
|
|
hipDeviceAttributeMemoryBusWidth, ///< Global memory bus width in bits.
|
|
|
|
|
hipDeviceAttributeMultiprocessorCount, ///< Number of multiprocessors on the device.
|
|
|
|
|
hipDeviceAttributeComputeMode, ///< Compute mode that device is currently in.
|
|
|
|
|
hipDeviceAttributeL2CacheSize, ///< Size of L2 cache in bytes. 0 if the device doesn't have L2
|
|
|
|
|
///< cache.
|
|
|
|
|
hipDeviceAttributeMaxThreadsPerMultiProcessor, ///< Maximum resident threads per
|
|
|
|
|
///< multiprocessor.
|
|
|
|
|
hipDeviceAttributeComputeCapabilityMajor, ///< Major compute capability version number.
|
|
|
|
|
hipDeviceAttributeComputeCapabilityMinor, ///< Minor compute capability version number.
|
|
|
|
|
hipDeviceAttributeConcurrentKernels, ///< Device can possibly execute multiple kernels
|
|
|
|
|
///< concurrently.
|
|
|
|
|
hipDeviceAttributePciBusId, ///< PCI Bus ID.
|
|
|
|
|
hipDeviceAttributePciDeviceId, ///< PCI Device ID.
|
|
|
|
|
hipDeviceAttributeMaxSharedMemoryPerMultiprocessor, ///< Maximum Shared Memory Per
|
|
|
|
|
///< Multiprocessor.
|
|
|
|
|
hipDeviceAttributeIsMultiGpuBoard, ///< Multiple GPU devices.
|
|
|
|
|
hipDeviceAttributeIntegrated, ///< iGPU
|
|
|
|
|
hipDeviceAttributeCooperativeLaunch, ///< Support cooperative launch
|
|
|
|
|
hipDeviceAttributeCooperativeMultiDeviceLaunch, ///< Support cooperative launch on multiple devices
|
|
|
|
|
hipDeviceAttributeMaxTexture1DWidth, ///< Maximum number of elements in 1D images
|
|
|
|
|
hipDeviceAttributeMaxTexture2DWidth, ///< Maximum dimension width of 2D images in image elements
|
|
|
|
|
hipDeviceAttributeMaxTexture2DHeight, ///< Maximum dimension height of 2D images in image elements
|
|
|
|
|
hipDeviceAttributeMaxTexture3DWidth, ///< Maximum dimension width of 3D images in image elements
|
|
|
|
|
hipDeviceAttributeMaxTexture3DHeight, ///< Maximum dimensions height of 3D images in image elements
|
|
|
|
|
hipDeviceAttributeMaxTexture3DDepth, ///< Maximum dimensions depth of 3D images in image elements
|
|
|
|
|
|
|
|
|
|
hipDeviceAttributeHdpMemFlushCntl, ///< Address of the HDP_MEM_COHERENCY_FLUSH_CNTL register
|
|
|
|
|
hipDeviceAttributeHdpRegFlushCntl, ///< Address of the HDP_REG_COHERENCY_FLUSH_CNTL register
|
|
|
|
|
|
|
|
|
|
hipDeviceAttributeMaxPitch, ///< Maximum pitch in bytes allowed by memory copies
|
|
|
|
|
hipDeviceAttributeTextureAlignment, ///<Alignment requirement for textures
|
|
|
|
|
hipDeviceAttributeTexturePitchAlignment, ///<Pitch alignment requirement for 2D texture references bound to pitched memory;
|
|
|
|
|
hipDeviceAttributeKernelExecTimeout, ///<Run time limit for kernels executed on the device
|
|
|
|
|
hipDeviceAttributeCanMapHostMemory, ///<Device can map host memory into device address space
|
|
|
|
|
hipDeviceAttributeEccEnabled, ///<Device has ECC support enabled
|
|
|
|
|
|
|
|
|
|
hipDeviceAttributeCooperativeMultiDeviceUnmatchedFunc, ///< Supports cooperative launch on multiple
|
|
|
|
|
///devices with unmatched functions
|
|
|
|
|
hipDeviceAttributeCooperativeMultiDeviceUnmatchedGridDim, ///< Supports cooperative launch on multiple
|
|
|
|
|
///devices with unmatched grid dimensions
|
|
|
|
|
hipDeviceAttributeCooperativeMultiDeviceUnmatchedBlockDim, ///< Supports cooperative launch on multiple
|
|
|
|
|
///devices with unmatched block dimensions
|
|
|
|
|
hipDeviceAttributeCooperativeMultiDeviceUnmatchedSharedMem, ///< Supports cooperative launch on multiple
|
|
|
|
|
///devices with unmatched shared memories
|
|
|
|
|
hipDeviceAttributeAsicRevision, ///< Revision of the GPU in this device
|
|
|
|
|
hipDeviceAttributeManagedMemory, ///< Device supports allocating managed memory on this system
|
|
|
|
|
hipDeviceAttributeDirectManagedMemAccessFromHost, ///< Host can directly access managed memory on
|
|
|
|
|
/// the device without migration
|
|
|
|
|
hipDeviceAttributeConcurrentManagedAccess, ///< Device can coherently access managed memory
|
|
|
|
|
/// concurrently with the CPU
|
|
|
|
|
hipDeviceAttributePageableMemoryAccess, ///< Device supports coherently accessing pageable memory
|
|
|
|
|
/// without calling hipHostRegister on it
|
|
|
|
|
hipDeviceAttributePageableMemoryAccessUsesHostPageTables, ///< Device accesses pageable memory via
|
|
|
|
|
/// the host's page tables
|
|
|
|
|
hipDeviceAttributeCanUseStreamWaitValue ///< '1' if Device supports hipStreamWaitValue32() and
|
|
|
|
|
///< hipStreamWaitValue64() , '0' otherwise.
|
|
|
|
|
|
|
|
|
|
} hipDeviceAttribute_t;
|
|
|
|
|
|
|
|
|
|
typedef void* hipDeviceptr_t;
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
@@ -262,7 +346,6 @@ typedef enum hipJitOption {
|
|
|
|
|
hipJitOptionFastCompile,
|
|
|
|
|
hipJitOptionNumOptions
|
|
|
|
|
} hipJitOption;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @warning On AMD devices and some Nvidia devices, these hints and controls are ignored.
|
|
|
|
|
*/
|
|
|
|
@@ -271,7 +354,6 @@ typedef enum hipFuncAttribute {
|
|
|
|
|
hipFuncAttributePreferredSharedMemoryCarveout = 9,
|
|
|
|
|
hipFuncAttributeMax
|
|
|
|
|
} hipFuncAttribute;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @warning On AMD devices and some Nvidia devices, these hints and controls are ignored.
|
|
|
|
|
*/
|
|
|
|
@@ -282,7 +364,4 @@ typedef enum hipFuncCache_t {
|
|
|
|
|
hipFuncCachePreferEqual, ///< prefer equal size L1 cache and shared memory
|
|
|
|
|
} hipFuncCache_t;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define HIP_LAUNCH_PARAM_BUFFER_POINTER ((void*)0x01)
|
|
|
|
|
#define HIP_LAUNCH_PARAM_BUFFER_SIZE ((void*)0x02)
|
|
|
|
|
#define HIP_LAUNCH_PARAM_END ((void*)0x03)
|
|
|
|
|
#endif
|
|
|
|
|