-
Notifications
You must be signed in to change notification settings - Fork 85
CI: refactor and extend atomic tests #1772
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: develop
Are you sure you want to change the base?
Conversation
a5cb324 to
5e233b9
Compare
d95dbb9 to
3e773d2
Compare
|
For an unknown reason, the OpenACC test shows access to invalid memory and HIP requires over 60 minutes to compile the atomic test. |
| using Op = alpaka::AtomicAdd; | ||
|
|
||
| template<typename... TArgs> | ||
| static ALPAKA_FN_ACC auto atomic(TArgs&&... args) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@jkelling found out that this variadic template usage is the root of the nvhpc error (invalid memory access)
|
The fix for atomics is already merged with #1773. |
8f0e3eb to
3408a7c
Compare
Atomic decrement implemented ```C++ ((old >= value) ? 0 : static_cast<T>(old - 1)) ``` instead of ```C++ (old == static_cast<T>(0) || old > value) ? value : static_cast<T>(old - static_cast<T>(1)) ```
|
Note the reason why this PR was never merged is that old HIP compilers running into stack issues and the compile time was increasing to an unacceptable time. |
- add define `ALPAKA_ARCH_AMD` as replacement for `ALPAKA_COMP_HIP` - set for backwards compatibility `ALPAKA_COMP_HIP` to `ALPAKA_ARCH_AMD` - `ALPAKA_ARCH_AMD` behaves like `ALPAKA_ARCH_PTX` and provides the AMD architecture as version number - move pre-prozessor version number generators to own file - add more/better tests for the version macros
fix alpaka-group#1769 - test all hierarchies which can be used for atomics - extent test cases to test for equal, smaller, larger and zero as left side operand - test calling the atomic interface `atomic*()` and `atomicOp<*>()`
Clang for HIP as problems if we have all atomic tests within one kernel and throws the compiler error: `error: stack size limit exceeded (155632) in _ZN6alpaka16uniform_cuda_hip6de`, therefore we split the tests into multiple kernel to workaround the issue.
3408a7c to
c34d7ec
Compare
|
I rebased the PR against the latest dev, including the fix in #2582 |
c34d7ec to
f52f96d
Compare
Moving over the never merged atomic test from alpaka mainline alpaka-group/alpaka#1772
Moving over the never merged atomic test from alpaka mainline alpaka-group/alpaka#1772
Moving over the never merged atomic test from alpaka mainline alpaka-group/alpaka#1772
Moving over the never merged atomic test from alpaka mainline alpaka-group/alpaka#1772
Moving over the never merged atomic test from alpaka mainline alpaka-group/alpaka#1772
Moving over the never merged atomic test from alpaka mainline alpaka-group/alpaka#1772
8158db5 to
194411c
Compare
|
I refactored the test gain and hope that HIP is not running into the wall time anymore. |
Moving over the never merged atomic test from alpaka mainline alpaka-group/alpaka#1772
18a7522 to
da14a7f
Compare
Change the test structore that each atomic operation is tested within its own kernel to workaround compiler issues with HIP. HIP 6.0 - 6.2 running in the CI into walltime limits because the compile time explodes due to the test.
da14a7f to
db6fbe8
Compare
* fix `atomicDec()` and test all atomic operations Moving over the never merged atomic test from alpaka mainline alpaka-group/alpaka#1772 * apply review comments
atomicDec()for CPU #2582 (first commit contains the fix for atomicDec)clang CUDA is exposing
atomic*_block()function signatures even if these can not be used by the selected architecture.This leads to compile issues if clang is used as CUDA compiler.
Our tests cases have not checked all combinations of atomics, therefore the second commit refactors the atomic tests and fixes #1769:
atomic*()andatomicOp<*>()