Support hipLaunchCooperativeKernelMultiDevice()
- Add validation logic for MGPU launches to pass a cuda test
Change-Id: Iccca7fde43493fc3bc6685512d39202271ae3e92
[ROCm/clr commit: 8be723e199]
Support hipLaunchCooperativeKernelMultiDevice()
- Add hipCooperativeLaunchMultiDeviceNoPreSync and
hipCooperativeLaunchMultiDeviceNoPostSync support to pass a cuda test
Change-Id: If518f11ef2636a2235e5df9e77f879d8ced68102
[ROCm/clr commit: 74e98ea447]
These fixes address regressions caused by http://gerrit-git.amd.com/c/compute/ec/hip/+/337601
Currently we're converting a 1D offset into a 3D offset, which doesn't make much sense once you consider the fact that this offset is relative to a different origin than our current 3D offset.
I traced through our blit kernels in VDI - the copy buffer rect path is able to handle immediate offsets in the 3D buffer via the amd::BufferRect::start_ parameter.
Instead of adjusting the offset, simply adjust the start of the region.
Change-Id: Ic8797a2c8ac0ad106f246f61ff06ca1ca03d3058
[ROCm/clr commit: a3613cc6da]
If the code object is embedded in an already mapped file, and the
lifetime of the mapped file exceeds the lifetime of the executable,
we do not need to make a copy of the binary.
This allows the ROCR to present the code object URI as
file:///path/to/file#offset=X&size=Y.
[ROCm/clr commit: 67830996a9]
libc++ defines fma as template function for auto promotion of mixed-type
arguments. libc++ does not handle _Float16 as _Float16 is not a supported
type by C++ standard. As such, it is unlikely we can commit our fix for
_Float16 to libc++ trunk.
Therefore we handle _Float16 with a template specialization of
__numeric_type in HIP headers.
Change-Id: If01960a657ebf1a7a67463cdcf66fab7458dff3c
[ROCm/clr commit: 6f439f0232]
Tests that check POSIX specifiers with a single thread:
- hipPrintfSpecifiers.cpp : all conversion specifiers
- hipPrintfFlags.cpp : common flags that modify conversions
- hipPrintfAltForms.cpp : alternate forms ('#')
- hipPrintfStar.cpp : additional arguments ('*')
- hipPrintfWidthPrecision.cpp : floating point details
Tests that check functionality on top of hostcall
- hipPrintfBasic.cpp : divergent calls, series of calls, return value, etc
- hipPrintfManyWaves.cpp : many waves printing together
- hipPrintfManyDevices.cpp : many waves on many devices
Change-Id: I35e069f4c542f896999239996dc89eda0faad7b8
[ROCm/clr commit: 01d4117789]
1. Enable pitch workaround
2. When we use copy image, we don't need to create the custom pitch image
3. wrtBackImageBuffer_ stores device memory object, not amd image object.
Tests:
conformance kernel read / write test pass with this code change.
Change-Id: I7dca3127adde6ac83e78dd270a2256ebed55c60d
[ROCm/clr commit: 43b9863e17]
- Make sure only one GPU barrier is issued per dispatch
when memory tracking is disabled
Change-Id: I974569ab42a8835304a2930eef87b561a3750327
[ROCm/clr commit: 481cecec78]
This adds the missing compilation flags to hip::device so it can compile with hip-clang compiler.
Change-Id: Ie2b30ea606bfca385a0e84ae03ee0a8d828ad16a
[ROCm/clr commit: 631f82ab82]
Even though the runtime and driver texture object API is one to one, the structs used by these APIs are not. See hipResourceDesc vs HIP_RESOURCE_DESC differences.
These differences are not trivial and most likely won't be able to handled by hipify, so we need new API entry points.
Change-Id: Id4bcb1ad0ae15378dbdb5a2ed07e5ea30f320082
[ROCm/clr commit: a09fadecf2]
Don't error when querying the number of devices if there are no devices present in the system.
We should just return 0 for the number of devices in this case and let the application handle this situation.
Change-Id: I20614ade5e649f3ce9ddd970d4b38bfe296f6cdb
[ROCm/clr commit: 2a223ecec6]