Commit Graph

1092 Commits

Author SHA1 Message Date
Siu Chi Chan b96a6053a5 Initialize all undef symbols with a magic poison (#1962)
[ROCm/clr commit: d822daa3a5]
2020-03-26 17:06:09 +05:30
Sarbojit2019 4f8c29f7dc Fix for segfault seen if invalid kind is passed to hipMemcpy (#1937)
Fixes SWDEV-224941

[ROCm/clr commit: 12448996e3]
2020-03-26 17:04:43 +05:30
Joseph Greathouse 8ce72c7f06 Fix cooperative launch APIs to set hipGetLastError (#1935)
* Fix cooperative launch APIs to set hipGetLastError

Previously, the cooperative launch APIs did not properly log their
errors in the global hipGetLastError variable before returning back
to the user. As such, the APIs would leave hipSuccess in the
last error, which would break some use cases.

This fixes that problem by making a trampoline function that does
the HIP_INIT_API and ihipLogStatus.

* Add missing flag to the log of multi-GPU launch

[ROCm/clr commit: 341ef7fdca]
2020-03-25 14:39:24 -07:00
Jeff Daily 1a434dccd3 fix hipStreamAddCallback, block future work on stream (#1934)
[ROCm/clr commit: 1444f850ac]
2020-03-19 16:16:04 +05:30
Aryan Salmanpour 1c8dc380bc [HIP] use markers to sync cooperative and normal queues (#1948)
[ROCm/clr commit: 66735bff13]
2020-03-18 11:20:43 +05:30
jglaser 76759ae09f Implement accurate max block size in hipFuncGetAttributes() (#1676)
This PR takes ensures that the maxThreadsPerBlock returned by hipFuncGetAttributes is both a multiple of the warp size and that the register usage of the maximum block does not exceed the number of available registers.

Fixes #1662

[ROCm/clr commit: ea28d64297]
2020-03-18 11:20:06 +05:30
zhaozhangjian 02ab8feabd fix a bug when initializing a vector of hipFunction_t (#1949)
[ROCm/clr commit: a2281268ba]
2020-03-17 14:05:07 +05:30
Joseph Greathouse 37e78fe08d Fix detection of support for cooperative groups (#1932)
Query ROCr to see if we have the proper lower-level support for
cooperative groups -- GWS support through the firmware, driver,
thunk, and ROCr. ROCr does these checks for us, and presents a
query that allows us to see if GWS entries are available for use.
If so, then we have all the lower-level technologies needed, and
we should enable cooperative groups support for HIP.

[ROCm/clr commit: 35a68596f9]
2020-03-17 14:01:44 +05:30
Joseph Greathouse e1123ce997 Fix maxSharedMemoryPerMultiProcessor attribute (#1927)
The maxSharedMemoryPerMultiProcessor attribute is meant to describe
the number of bytes of shared memory (LDS space in AMD terminology)
in each SM (CU in AMD terminology). For instance, on AMD GPUs this
is often 64KB per CU, and some Nvidia GPUs it's 96KB per SM.

This shared memory is a different address space from the normal
global memory. However, the current HIP-HCC properties fill this
in with a size that matches the totalGlboalMem property. This gives
a drastically too-high calculation for the amount of LDS space that
each CU has -- tens of GBs vs. 10s of KBs.

This patch fixes this by pulling the maxSharedMemoryPerMultiProcessor
property from the HSA pool that describes how much workgroup-local
space is available on each CU. The HSA runtime eventually pulls
this from the topology information about LDSSizeInKB, defined as
"Size of Local Data Store in Kilobytes per SIMD".

Previously, this HSA query was used to fill in the value of the
sharedMemPerBlock property. On today's AMD GPUs, we know that
the amount of LDS avaialble to the workgroup is identical to the
amount of LDS space in the CU. However, in the future this may
differ. As such, this patch changes around the order and fills
in the "PerMultiProcessor" property from the HSA query (since
what's what the query is defined to return), and then separately
fills in the "PerBlock" property as we know it.

[ROCm/clr commit: 44b16df84f]
2020-03-17 14:00:51 +05:30
Joseph Greathouse 04ead59f0b Fix errors in occupancy calculation function (#1926)
Fix two errors in hipOccupancyMaxActiveBlocksPerMultiprocessor.
1) Fix a possible segfault if the user passed in a null pointer for
   the numBlocks value.
2) Handle the situation when the user is asking for a block size
   that is larger than what the target device can hold within a
   single block.

[ROCm/clr commit: 6ae1b1a321]
2020-03-17 14:00:38 +05:30
Evgeny Mankov 5e8ec423f2 Merge pull request #1916 from asalmanp/refactor_cooperative_APIs
[HIP] Refactor cooperative APIs

[ROCm/clr commit: bf385d8641]
2020-03-12 19:12:50 +03:00
Evgeny Mankov c50f579660 Merge pull request #1908 from asalmanp/prop_mulit_coop
[HIP] add hip specific properties for cooperative kernel multi device

[ROCm/clr commit: 21ccb0be01]
2020-03-12 19:12:11 +03:00
srinivamd 195abb8a18 return hipSuccess when count is zero (#1900)
[ROCm/clr commit: 32960ab8f9]
2020-03-11 14:32:54 +05:30
Aryan Salmanpour cb8cf51d3f [HIP] return an error if blockDim exceeds maxThreadsPerBlock
[ROCm/clr commit: 70ef268add]
2020-03-10 15:26:53 -04:00
Aryan Salmanpour d011efb792 [HIP] fix formatting/code clean up and fix a bug
[ROCm/clr commit: 7009901fe0]
2020-03-09 16:03:59 -04:00
Aryan Salmanpour 2ca751f70c [HIP] Refactor cooperative APIs
[ROCm/clr commit: 97b24eba45]
2020-03-06 18:30:12 -05:00
Aryan Salmanpour a582f9797e [HIP] add hip specific properties for cooperative kernel multi device
[ROCm/clr commit: 7bfb990ef7]
2020-03-03 13:25:36 -05:00
Siu Chi Chan e1b10796da improve code object loading error message (#1889)
[ROCm/clr commit: eebba4799c]
2020-02-28 16:47:40 +05:30
saleelk 21712e6fb8 Fix HIPRTC headers to export C style symbols (#1879)
[ROCm/clr commit: 40a28e767e]
2020-02-28 16:47:29 +05:30
Rahul Garg 7395bf9ba9 Remove deprecated HIP markers (#1876)
[ROCm/clr commit: 6be7537cf9]
2020-02-28 16:47:15 +05:30
Rahul Garg ff421fb2d2 Add hipDrvOccupancyMaxActiveBlocksPerMultiprocessor[WithFlags] (#1854)
Equivalent to cuOccupancyMaxActiveBlocksPerMultiprocessor[WithFlags].

[ROCm/clr commit: 1c794045e0]
2020-02-28 16:46:55 +05:30
Alex Voicu 6a37ef97c4 Address post-staging issues in #1809 (#1894)
Fixes SWDEV-223910 and SWDEV-223663

[ROCm/clr commit: cea5489f00]
2020-02-27 16:21:12 +05:30
Alex Voicu 3057a52be5 Tweak synchronous memcpy implementation (#1809)
The existing one can have issues on certain systems, therefore this limits use of direct memcpy via largeBAR to sizes where it is unequivocally better.

Also addresses SWDEV-220030 and SWDEV-222237.

[ROCm/clr commit: 730f23829e]
2020-02-18 20:50:27 +05:30
Rahul Garg 6f1d14c96d Fix hipMemcpy3D (#1798)
Fixes #1790 and #1791. hipMemcpy3D still requires further refactoring for different input and output combinations.

[ROCm/clr commit: ec84c16d75]
2020-02-17 19:35:35 +05:30
Maneesh Gupta 2b1a99ff12 Use deque instead of vector for code readers so that the iterators and references will be stable (#1851)
* Use deque instead of vector for code readers so that the iterators and references will be stable

* Fix compile error

* Assign the iterator

* Add multithreaded test

* Make threads a multiple of hardware concurrency

* Output on failure

* Add setDevice to try and initialize the context on cuda

* Create context for cuda

* Set context on each thread

* Reduce threads on cuda

* Skip test on cuda

* Try to initialize the primary context on cuda

* Push ctx to the stack as current

* Revert "Push ctx to the stack as current"

This reverts commit c1b707ff63.

* Revert "Try to initialize the primary context on cuda"

This reverts commit d9cbd5a143.

* updated test for nvidia path

* Add c++11 option for nvcc

Co-authored-by: satyanveshd <53337087+satyanveshd@users.noreply.github.com>


[ROCm/clr commit: e085417370]
2020-02-15 09:51:24 +05:30
Jeff Daily 40688fbfc2 missing break statement in hipDeviceGetAttribute (#1865)
The break is missing for hipDeviceAttributeMaxTexture3DDepth.

[ROCm/clr commit: fe47fce496]
2020-02-13 14:22:56 +05:30
Sarbojit2019 194b05efe2 [hip] Fix for bug introduced in #1770 when blockSize is non-power of 2 (#1864)
Fixes SWDEV-222161

[ROCm/clr commit: a03628335c]
2020-02-13 14:22:46 +05:30
Sarbojit2019 56398f5269 ihipEnablePeerAccess return error if peer is not accessible (#1858)
hipDeviceEnablePeerAccess returns success and adds peer into the list even if it is not accessible which creates problem in hipMalloc when it tries to share the ptr to peer device.
Proposed change is to check the access status before updating the peer list and update only when it can access the peer.

[ROCm/clr commit: e334d3d6ec]
2020-02-13 14:22:11 +05:30
ansurya 708af7e6ac Reduce GPU copying based on arch it runs on (#1751)
Implements SWDEV-213230.

[ROCm/clr commit: 888a7f2a90]
2020-02-13 14:21:51 +05:30
Aryan Salmanpour 44ce519211 resolve merge conflict
[ROCm/clr commit: dfa565d76f]
2020-02-10 10:30:55 -05:00
Maneesh Gupta a21b1f84cb Revert "Match Occupancy APIs syntax with CUDA (#1625)" (#1857)
Reverting this for now till we figure out how to avoid the build
breakage.

This reverts commit 2c6e880e05.

[ROCm/clr commit: d032637934]
2020-02-10 10:45:28 +05:30
Paul 1ee03c9db9 Assign the iterator
[ROCm/clr commit: 84d6eb985d]
2020-02-06 12:15:29 -06:00
Paul c9f66e4ae5 Fix compile error
[ROCm/clr commit: bb26e99c73]
2020-02-06 12:04:50 -06:00
Paul 0688b554ae Use deque instead of vector for code readers so that the iterators and references will be stable
[ROCm/clr commit: 1354a447e1]
2020-02-06 11:56:17 -06:00
vsytch e2b6794a07 Device texture functions should not normalize the sampled pixel (#1826)
* Device texture functions should not normalize the sampled pixel. This is already done by HW.
* Add support to use h/w capability for normalized float data convertion for driver API's

Co-authored-by: ansurya <50609411+ansurya@users.noreply.github.com>


[ROCm/clr commit: fa363ae721]
2020-02-05 20:56:17 +05:30
saleelk 60ed8d9a4b Implement __hipPushCallConfiguration/__hipPopCallConfiguration for hip_clang (#1845)
This is needed so that the right symbols are present if we want to use hip-clang with hip/hcc runtime

[ROCm/clr commit: 854d3103dd]
2020-02-04 19:37:57 +05:30
Siu Chi Chan 30f09a1435 Fix C-style hipLaunchKernel (#1835)
* Fix bug in LaunchKernel test
Instead of passing the address of the gpu buffer, pass the address
of the pointer that holds the address of the gpu buffer

* Fix hipLaunchKernel's kernarg buffer construction.
The hipLaunchKernel implementation should rely on ihipModuleLaunchKernel
to construct the kernarg buffer correctly based on kernel metadata.

* Fix a bug in get_functions where the Kernel_descriptor wasn't constructed with the correct kernarg layout information.

* Fix a bug in kernarg layout parsing dealing with kernel without any arg

* teach ihipModuleLaunchKernel to handle kernel without any arg

* Add a more interesting test

[ROCm/clr commit: 14e235378f]
2020-02-04 19:37:16 +05:30
Sarbojit2019 dd5c4d41a5 Added overflow check in kernel launch (#1770)
[ROCm/clr commit: 6e62ea5ee3]
2020-02-04 09:02:16 +05:30
Aryan Salmanpour 2733df36b5 [HIP][HIPIFY] Add some missing flags for cooperative launch and occupancy APIs
[ROCm/clr commit: 6db9b782be]
2020-01-30 15:05:53 -05:00
Evgeny Mankov 7f98f77350 Merge pull request #1700 from scchan/object_load_error_check
add error checking for code object loading

[ROCm/clr commit: f1c70ea6ba]
2020-01-30 21:31:03 +03:00
satyanveshd 2c6e880e05 Match Occupancy APIs syntax with CUDA (#1625)
* Match Occupancy APIs syntax with CUDA and fix tests using these APIs


[ROCm/clr commit: 262ad13dd5]
2020-01-29 13:05:53 -08:00
vsytch 4162b55dbe Add missing texturePitchAlignment member to the hipDeviceProp_t struct. (#1802)
* Add missing texturePitchAlignment member to the hipDeviceProp_t struct.

* Add missing hipDeviceAttributeTexturePitchAlignment enumerator to the hipDeviceAttribute_t enum.

* Initialize texturePitchAlignment to 256. This works for gfx9+, but is technically overaligned in most cases for pre-gfx9.

* Add the texturePitchAlignment property to the NVCC path.


[ROCm/clr commit: 6da0c82b78]
2020-01-27 16:37:00 -08:00
Siu Chi Chan adb93af8c3 Fix associate code object symbols with host allocation bug (#1799)
The current implementation skips this procedure for a given device
object when a global symbol is found in the cache.  This is incorrect:

 - There could be other undefined globals that have not been previously
encountered further down the list
 - If a symbol is found in the cache, it doesn't need to be pinned again
but it still need to be defined for the current executable

Added special case for the printf buffer symbol (already pinned by HCC)

The bug was exposed by running printf on different GPUs.

[ROCm/clr commit: 8fc7cad90f]
2020-01-24 16:22:49 +05:30
ansurya 7f788181ec Fix texture tests, always pass row pitch to HSA API for linear layout images (#1785)
=> New ROCr calculates pitch as per HSA specification and addrlib is used to check whether HW can support that configuration. Hence few texture tests are failing with HSA_EXT_STATUS_ERROR_IMAGE_PITCH_UNSUPPORTED.

=> Determine pitch for linear images and always pass rowpitch to HSA API's.

[ROCm/clr commit: 688b6e6af0]
2020-01-16 08:54:30 +05:30
Jatin Chaudhary 8550b344a2 Remove filesystem dependency in hipRTC (#1749)
Removing dependency on filesystem, so libstdc++fs is no longer required to link

[ROCm/clr commit: 0b211478dd]
2020-01-10 13:47:54 +05:30
Maneesh Gupta d814f1e292 Revert PRs that break ROCm builds (#1781)
Fixes SWDEV-218626 and SWDEV-218629

Changes:
- Revert "`static inline` in a header, just like excess sugar in a diet, causes bloat (#1692)"
   This reverts commit 47725baf8c.
- Revert "Fix rocFFT build failure (#1777)"
   This reverts commit f7bac3e057.

[ROCm/clr commit: c091635f5a]
2020-01-08 15:11:58 +05:30
Siu Chi Chan 94ddf110dd Detect when an explicit printf buffer flush is required (#1766)
* Detect when an explicit printf buffer flush is required
in a device/stream synchronization function.

* hip_module.cpp: add missing hc_am.hpp header


[ROCm/clr commit: 26b50e1e1b]
2020-01-07 09:06:38 -08:00
satyanveshd 72ce61218b hipMemcpy[To/From]Symbol(Async) fixes (#1774)
[ROCm/clr commit: 9b2f22f7aa]
2020-01-07 08:11:53 +05:30
Rahul Garg 83b9cc743c Fix nested designator warnings (#1768)
[ROCm/clr commit: 178d432b90]
2020-01-06 12:33:34 +05:30
Evgeny Mankov 8c58286a9b Merge pull request #1759 from emankov/master
[HIP] Unify hipError_t (Step 2)

[ROCm/clr commit: ed43699a3a]
2019-12-30 19:21:09 +03:00