15#define GPUCA_GPUTYPE_VEGA
17#define BOOST_TEST_MODULE Test GPUCommonAlgorithm Sorting HIP
18#define BOOST_TEST_MAIN
19#define BOOST_TEST_DYN_LINK
23#include <hip/hip_runtime.h>
24#include <boost/test/unit_test.hpp>
31static constexpr float TOLERANCE = 10 * std::numeric_limits<float>::epsilon();
35 if (hipErrorCode != hipSuccess) {
36 std::cerr <<
"ErrorCode " << hipErrorCode <<
" " << hipGetErrorName(hipErrorCode) <<
": " << hipGetErrorString(hipErrorCode) << std::endl;
54 for (
size_t i = 0;
i <
size;
i++) {
76 for (
size_t i = 0;
i <
size;
i++) {
77 if (std::fabs(correct[
i]) < TOLERANCE) {
78 BOOST_CHECK_SMALL(testing[
i], TOLERANCE);
80 BOOST_CHECK_CLOSE(correct[
i], testing[
i], TOLERANCE);
90 if (hipBlockIdx_x == 0 && hipBlockIdx_y == 0 && hipBlockIdx_z == 0 && hipThreadIdx_x == 0 && hipThreadIdx_y == 0 && hipThreadIdx_z == 0) {
91 o2::gpu::CAAlgo::sort(
data,
data + dataLength);
98 if (hipBlockIdx_x == 0 && hipBlockIdx_y == 0 && hipBlockIdx_z == 0 && hipThreadIdx_x == 0 && hipThreadIdx_y == 0 && hipThreadIdx_z == 0) {
99 o2::gpu::CAAlgo::sort(
data,
data + dataLength, [](
float a,
float b) {
return a <
b; });
107 o2::gpu::CAAlgo::sortInBlock<float>(
data,
data + dataLength);
112 o2::gpu::CAAlgo::sortInBlock(
data,
data + dataLength, [](
float a,
float b) {
return a <
b; });
116BOOST_AUTO_TEST_SUITE(TestsortInThread)
134BOOST_AUTO_TEST_SUITE_END()
136BOOST_AUTO_TEST_SUITE(TestsortInBlock)
154BOOST_AUTO_TEST_SUITE_END()
GLboolean GLboolean GLboolean b
GLboolean GLboolean GLboolean GLboolean a
std::vector< float > sorted
BOOST_FIXTURE_TEST_CASE(GPUsortThreadHIP, TestEnvironment)
__global__ void sortInBlock(float *data, size_t dataLength)
__global__ void sortInThreadWithOperator(float *data, size_t dataLength)
hipError_t hipCheckError(hipError_t hipErrorCode)
void hipCheckErrorFatal(hipError_t hipErrorCode)
void testAlmostEqualArray(T *correct, T *testing, size_t size)
__global__ void sortInBlockWithOperator(float *data, size_t dataLength)
__global__ void sortInThread(float *data, size_t dataLength)
BOOST_CHECK_EQUAL(triggersD.size(), triggers.size())