SWDEV-299127 - Merge 'develop' into 'amd-staging'

Change-Id: I003a1542b8ef30927544bc2f32919c60f53882d4
This commit is contained in:
Jenkins
2023-02-10 00:10:43 +00:00
2 changed files with 26 additions and 11 deletions
+2 -1
View File
@@ -862,8 +862,9 @@ Output Constraints are specified by an `"="` prefix as shown above ("=v"). This
## C++ Support
The following C++ features are not supported:
- Run-time-type information (RTTI)
- Virtual functions
- Try/catch
- Virtual functions
Virtual functions are not supported if objects containing virtual function tables are passed between GPU's of different offload arch's, e.g. between gfx906 and gfx1030. Otherwise virtual functions are supported.
## Kernel Compilation
hipcc now supports compiling C++/HIP kernels to binary code objects.
+24 -10
View File
@@ -585,9 +585,15 @@ enum hipLimit_t {
/** Event can support IPC. hipEventDisableTiming also must be set.*/
#define hipEventInterprocess 0x4
/** Disable any system scope releases for events. May improve performance.
* The flag is a no-op on CUDA platforms.*/
#define hipEventDisableReleaseToSystem 0x20000000
/** Disable performing a system scope sequentially consistent memory fence when the event
* transitions from recording to recorded. This can be used for events that are only being
* used to measure timing, and do not require the event inspection operations
* (see ::hipEventSynchronize, ::hipEventQuery, and ::hipEventElapsedTime) to synchronize-with
* the work on which the recorded event (see ::hipEventRecord) is waiting.
* On some AMD GPU devices this can improve the accuracy of timing measurements by avoiding the
* cost of cache writeback and invalidation, and the performance impact of those actions on the
* execution of following work. */
#define hipEventDisableSystemFence 0x20000000
/** Use a device-scope release when recording this event. This flag is useful to obtain more
* precise timings of commands between events. The flag is a no-op on CUDA platforms.*/
@@ -2420,7 +2426,7 @@ hipError_t hipStreamWriteValue64(hipStream_t stream, void* ptr, uint64_t value,
would not record profiling data and provide best performance if used for synchronization.
* #hipEventInterprocess : The event can be used as an interprocess event. hipEventDisableTiming
flag also must be set when hipEventInterprocess flag is set.
* #hipEventDisableReleaseToSystem : Disable releasing any cached memory to system scope. This may
* #hipEventDisableSystemFence : Disable acquire and release system scope fence. This may
improve performance but device memory may not be visible to the host and other devices
if this flag is set.
*
@@ -3817,7 +3823,7 @@ hipError_t hipMemsetD32(hipDeviceptr_t dest, int value, size_t count);
* @brief 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
* 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.
@@ -3890,14 +3896,22 @@ hipError_t hipMemset3D(hipPitchedPtr pitchedDevPtr, int value, hipExtent extent
hipError_t hipMemset3DAsync(hipPitchedPtr pitchedDevPtr, int value, hipExtent extent ,hipStream_t stream __dparm(0));
/**
* @brief 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.
* On ROCM, this function gets the actual free memory left on the current device, so supports
* the cases while running multi-workload (such as multiple processes, multiple threads, and
* multiple GPUs).
*
* @warning On Windows, the free memory only accounts for memory allocated by this process and may
* be optimistic.
*
* @param[out] free returns free memory on the current device in bytes
* @param[out] total returns total allocatable memory on the current device in bytes
*
* @return #hipSuccess, #hipErrorInvalidDevice, #hipErrorInvalidValue
*
**/
hipError_t hipMemGetInfo(size_t* free, size_t* total);
hipError_t hipMemPtrGetInfo(void* ptr, size_t* size);
/**
* @brief Allocate an array on the device.