2022-02-25 08:59:07 -07:00
|
|
|
/*************************************************************************
|
|
|
|
|
* Copyright (c) 2022 Advanced Micro Devices, Inc. All rights reserved.
|
|
|
|
|
*
|
|
|
|
|
* See LICENSE.txt for license information
|
|
|
|
|
************************************************************************/
|
|
|
|
|
#pragma once
|
2022-12-01 10:28:42 -07:00
|
|
|
#include <cstring>
|
2022-02-25 08:59:07 -07:00
|
|
|
|
|
|
|
|
namespace RcclUnitTesting
|
|
|
|
|
{
|
2024-07-04 09:34:38 -06:00
|
|
|
typedef enum : int
|
2022-02-25 08:59:07 -07:00
|
|
|
{
|
|
|
|
|
TEST_SUCCESS = 0,
|
2024-01-17 11:33:01 -05:00
|
|
|
TEST_FAIL = 1,
|
|
|
|
|
TEST_TIMEOUT = 2
|
2022-02-25 08:59:07 -07:00
|
|
|
} ErrCode;
|
|
|
|
|
|
|
|
|
|
#define ERROR(...) printf("\033[0;31m" "[ ERROR ] " "\033[0m" __VA_ARGS__)
|
|
|
|
|
#define INFO(...) printf("[ INFO ] " __VA_ARGS__)
|
2024-07-04 09:34:38 -06:00
|
|
|
#define WARN(...) printf("[ WARNING ] " __VA_ARGS__)
|
|
|
|
|
#define RETURN_RESULT(result) return (result)
|
2022-02-25 08:59:07 -07:00
|
|
|
|
2024-07-04 09:34:38 -06:00
|
|
|
#define CHECK_CALL_BASE(func, RESULT, RESULT_ARGS...) \
|
|
|
|
|
do { \
|
2022-02-25 08:59:07 -07:00
|
|
|
ErrCode status = func; \
|
|
|
|
|
if (status != TEST_SUCCESS) \
|
|
|
|
|
{ \
|
|
|
|
|
ERROR("Error in call %s\n", #func); \
|
2024-07-04 09:34:38 -06:00
|
|
|
RESULT(status, ##RESULT_ARGS); \
|
2022-02-25 08:59:07 -07:00
|
|
|
} \
|
2024-07-04 09:34:38 -06:00
|
|
|
} while (false)
|
|
|
|
|
#define CHECK_CALL(func) CHECK_CALL_BASE(func, RETURN_RESULT)
|
2022-02-25 08:59:07 -07:00
|
|
|
|
2024-07-04 09:34:38 -06:00
|
|
|
#define CHECK_HIP_BASE(func, RESULT, RESULT_ARGS...) \
|
|
|
|
|
do { \
|
2022-02-25 08:59:07 -07:00
|
|
|
hipError_t error = (func); \
|
|
|
|
|
if (error != hipSuccess) \
|
|
|
|
|
{ \
|
2022-12-01 10:28:42 -07:00
|
|
|
fprintf(stderr, "\033[0;31m" "[ ERROR ] HIP error: %s File:%s Line:%d\n" "\033[m", \
|
|
|
|
|
hipGetErrorString(error), strrchr("/" __FILE__, '/') + 1, __LINE__); \
|
2024-07-04 09:34:38 -06:00
|
|
|
RESULT(TEST_FAIL, ##RESULT_ARGS); \
|
2022-02-25 08:59:07 -07:00
|
|
|
} \
|
2024-07-04 09:34:38 -06:00
|
|
|
} while (false)
|
|
|
|
|
#define CHECK_HIP(func) CHECK_HIP_BASE(func, RETURN_RESULT)
|
|
|
|
|
|
|
|
|
|
#ifdef ENABLE_OPENMP
|
|
|
|
|
#define OMP_CANCEL_FOR(result, errCode) errCode = (result); _Pragma("omp cancel for")
|
|
|
|
|
#define RANK_RESULT(errCode, result) OMP_CANCEL_FOR(result, errCode)
|
|
|
|
|
#define CHECK_CALL_RANK(errCode, func) CHECK_CALL_BASE(func, OMP_CANCEL_FOR, errCode)
|
|
|
|
|
#define CHECK_HIP_RANK(errCode, func) CHECK_HIP_BASE(func, OMP_CANCEL_FOR, errCode)
|
|
|
|
|
#else
|
|
|
|
|
#define RANK_RESULT(errCode, result) RETURN_RESULT(result)
|
|
|
|
|
#define CHECK_CALL_RANK(errCode, func) CHECK_CALL(func)
|
|
|
|
|
#define CHECK_HIP_RANK(errCode, func) CHECK_HIP(func)
|
|
|
|
|
#endif
|
2022-02-25 08:59:07 -07:00
|
|
|
}
|
2024-07-04 09:34:38 -06:00
|
|
|
|