-
Notifications
You must be signed in to change notification settings - Fork 85
Open
Labels
Description
The unit test for atomicDec is not testing the flip around based on the values.
alpaka/include/alpaka/atomic/Op.hpp
Line 131 in 0b96515
| ref = (((old == 0) || (old > value)) ? value : static_cast<T>(old - 1)); |
Some for atomicInc
alpaka/include/alpaka/atomic/Op.hpp
Line 115 in 0b96515
| ref = ((old >= value) ? 0 : static_cast<T>(old + 1)); |
We simply test if an value is incremented or decremented:
alpaka/test/unit/atomic/src/AtomicTest.cpp
Lines 143 to 185 in 0b96515
| ALPAKA_NO_HOST_ACC_WARNING | |
| template<typename TAcc, typename T> | |
| ALPAKA_FN_ACC auto testAtomicInc(TAcc const& acc, bool* success, T operandOrig) -> void | |
| { | |
| // \TODO: Check reset to 0 at 'value'. | |
| T const value = static_cast<T>(42); | |
| T const reference = static_cast<T>(operandOrig + 1); | |
| auto& operand = alpaka::declareSharedVar<T, __COUNTER__>(acc); | |
| { | |
| operand = operandOrig; | |
| T const ret = alpaka::atomicOp<alpaka::AtomicInc>(acc, &operand, value); | |
| ALPAKA_CHECK(*success, equals(operandOrig, ret)); | |
| ALPAKA_CHECK(*success, equals(operand, reference)); | |
| } | |
| { | |
| operand = operandOrig; | |
| T const ret = alpaka::atomicInc(acc, &operand, value); | |
| ALPAKA_CHECK(*success, equals(operandOrig, ret)); | |
| ALPAKA_CHECK(*success, equals(operand, reference)); | |
| } | |
| } | |
| ALPAKA_NO_HOST_ACC_WARNING | |
| template<typename TAcc, typename T> | |
| ALPAKA_FN_ACC auto testAtomicDec(TAcc const& acc, bool* success, T operandOrig) -> void | |
| { | |
| // \TODO: Check reset to 'value' at 0. | |
| T const value = static_cast<T>(42); | |
| T const reference = static_cast<T>(operandOrig - 1); | |
| auto& operand = alpaka::declareSharedVar<T, __COUNTER__>(acc); | |
| { | |
| operand = operandOrig; | |
| T const ret = alpaka::atomicOp<alpaka::AtomicDec>(acc, &operand, value); | |
| ALPAKA_CHECK(*success, equals(operandOrig, ret)); | |
| ALPAKA_CHECK(*success, equals(operand, reference)); | |
| } | |
| { | |
| operand = operandOrig; | |
| T const ret = alpaka::atomicDec(acc, &operand, value); | |
| ALPAKA_CHECK(*success, equals(operandOrig, ret)); | |
| ALPAKA_CHECK(*success, equals(operand, reference)); | |
| } | |
| } |