SWDEV-501963 - Add missing codes for gfx950

Change-Id: I6b3c6bf54c61cffd44cd6f17b75998f751b75724


[ROCm/hip-tests commit: 1a7df073ba]
This commit is contained in:
taosang2
2024-12-02 17:16:52 -05:00
committed by Rakesh Roy
parent aeae2fcbb1
commit f2ab8e53cc
16 changed files with 71 additions and 68 deletions
@@ -6,9 +6,9 @@
#include "hip_test_context.hh"
std::vector<std::unordered_set<std::string>> GCNArchFeatMap = {
{"gfx90a", "gfx940", "gfx941", "gfx942"}, // CT_FEATURE_FINEGRAIN_HWSUPPORT
{"gfx90a", "gfx940", "gfx941", "gfx942"}, // CT_FEATURE_HMM
{"gfx90a", "gfx940", "gfx941", "gfx942"}, // CT_FEATURE_TEXTURES_NOT_SUPPORTED
{"gfx90a", "gfx940", "gfx941", "gfx942", "gfx950"}, // CT_FEATURE_FINEGRAIN_HWSUPPORT
{"gfx90a", "gfx940", "gfx941", "gfx942", "gfx950"}, // CT_FEATURE_HMM
{"gfx90a", "gfx940", "gfx941", "gfx942", "gfx950"}, // CT_FEATURE_TEXTURES_NOT_SUPPORTED
};
#if HT_AMD
@@ -22,7 +22,7 @@
AtomicAdd on FineGrainMemory
1. The following test scenario verifies
atomicAdd on fineGrain memory with -mno-unsafe-atomics flag
This testcase works only on gfx90a, gfx940, gfx941, gfx942.
This testcase works only on gfx90a, gfx940, gfx941, gfx942, gfx950.
*/
#include <hip_test_checkers.hh>
@@ -88,7 +88,7 @@ TEMPLATE_TEST_CASE("Unit_AtomicAdd_Coherentwithnounsafeflag", "",
HIP_CHECK(hipHostFree(result));
}
} else {
SUCCEED("Memory model feature is only supported for gfx90a, gfx940, gfx941, gfx942, Hence"
"skipping the testcase for this GPU " << device);
SUCCEED("Memory model feature is only supported for gfx90a, gfx940, gfx941, gfx942, gfx950,"
"Hence skipping the testcase for this GPU " << device);
}
}
@@ -22,7 +22,7 @@
AtomicAdd on FineGrainMemory
1. The following test scenario verifies
atomicAdd on fineGrain memory without any unsafeatomics flag
This testcase works only on gfx90a, gfx940, gfx941, gfx942.
This testcase works only on gfx90a, gfx940, gfx941, gfx942, gfx950.
*/
#include<hip_test_checkers.hh>
@@ -85,7 +85,7 @@ TEMPLATE_TEST_CASE("Unit_AtomicAdd_Coherentwithoutflag", "",
HIP_CHECK(hipHostFree(result));
}
} else {
SUCCEED("Memory model feature is only supported for gfx90a, gfx940, gfx941, gfx942, Hence"
"skipping the testcase for this GPU " << device);
SUCCEED("Memory model feature is only supported for gfx90a, gfx940, gfx941, gfx942, gfx950,"
"Hence skipping the testcase for this GPU " << device);
}
}
@@ -22,7 +22,7 @@
AtomicAdd on FineGrainMemory
1. The following test scenario verifies
atomicAdd on fineGrain memory with -munsafe-fp-atomics flag
This testcase works only on gfx90a, gfx940, gfx941, gfx942.
This testcase works only on gfx90a, gfx940, gfx941, gfx942, gfx950.
*/
#include<hip_test_checkers.hh>
@@ -99,7 +99,7 @@ TEMPLATE_TEST_CASE("Unit_AtomicAdd_CoherentwithUnsafeflag", "",
HIP_CHECK(hipHostFree(result));
}
} else {
SUCCEED("Memory model feature is only supported for gfx90a, gfx940, gfx941, gfx942, Hence"
"skipping the testcase for this GPU " << device);
SUCCEED("Memory model feature is only supported for gfx90a, gfx940, gfx941, gfx942, gfx950,"
"Hence skipping the testcase for this GPU " << device);
}
}
@@ -22,7 +22,7 @@
AtomicAdd on CoarseGrainMemory
1. The following test scenario verifies
atomicAdd on CoarseGrain memory with -mno-unsafe-atomics flag
This testcase works only on gfx90a, gfx940, gfx941, gfx942.
This testcase works only on gfx90a, gfx940, gfx941, gfx942, gfx950.
*/
#include<hip_test_checkers.hh>
@@ -86,7 +86,7 @@ TEMPLATE_TEST_CASE("Unit_AtomicAdd_NonCoherentwithnounsafeflag", "",
HIP_CHECK(hipHostFree(result));
}
} else {
SUCCEED("Memory model feature is only supported for gfx90a, gfx940, gfx941, gfx942, Hence"
"skipping the testcase for this GPU " << device);
SUCCEED("Memory model feature is only supported for gfx90a, gfx940, gfx941, gfx942, gfx950,"
"Hence skipping the testcase for this GPU " << device);
}
}
@@ -22,7 +22,7 @@
AtomicAdd on CoarseGrainMemory
1. The following test scenario verifies
atomicAdd on CoarseGrain memory without any unsafeatomics flag
This testcase works only on gfx90a, gfx940, gfx941, gfx942.
This testcase works only on gfx90a, gfx940, gfx941, gfx942, gfx950.
*/
#include<hip_test_checkers.hh>
@@ -87,7 +87,7 @@ TEMPLATE_TEST_CASE("Unit_AtomicAdd_NonCoherentwithoutflag", "",
HIP_CHECK(hipHostFree(result));
}
} else {
SUCCEED("Memory model feature is only supported for gfx90a, gfx940, gfx941, gfx942, Hence"
"skipping the testcase for this GPU " << device);
SUCCEED("Memory model feature is only supported for gfx90a, gfx940, gfx941, gfx942, gfx950,"
"Hence skipping the testcase for this GPU " << device);
}
}
@@ -22,7 +22,7 @@
AtomicAdd on CoarseGrainMemory
1. The following test scenario verifies
atomicAdd on CoarseGrain memory with -munsafe-fp-atomics flag
This testcase works only on gfx90a, gfx940, gfx941, gfx942.
This testcase works only on gfx90a, gfx940, gfx941, gfx942, gfx950.
*/
#include<hip_test_checkers.hh>
@@ -93,7 +93,7 @@ TEMPLATE_TEST_CASE("Unit_AtomicAdd_NonCoherentwithUnsafeflag", "",
HIP_CHECK(hipHostFree(result));
}
} else {
SUCCEED("Memory model feature is only supported for gfx90a, gfx940, gfx941, gfx942, Hence"
"skipping the testcase for this GPU " << device);
SUCCEED("Memory model feature is only supported for gfx90a, gfx940, gfx941, gfx942, gfx950,"
"Hence skipping the testcase for this GPU " << device);
}
}
@@ -91,8 +91,8 @@ TEST_CASE("Unit_BuiltInAtomicAdd_CoherentGlobalMem") {
HIP_CHECK(hipFree(result));
}
} else {
SUCCEED("Memory model feature is only supported for gfx90a, gfx940, gfx941, gfx942 Hence"
"skipping the testcase for this GPU " << device);
SUCCEED("Memory model feature is only supported for gfx90a, gfx940, gfx941, gfx942, gfx950,"
"Hence skipping the testcase for this GPU " << device);
}
}
@@ -135,7 +135,7 @@ TEST_CASE("Unit_BuiltInAtomicAdd_NonCoherentGlobalMem") {
free(B_h);
}
} else {
SUCCEED("Memory model feature is only supported for gfx90a, gfx940, gfx941, gfx942"
SUCCEED("Memory model feature is only supported for gfx90a, gfx940, gfx941, gfx942, gfx950"
"Hence skipping the testcase for GPU-0");
}
}
@@ -219,8 +219,8 @@ TEST_CASE("Unit_BuiltInAtomicAdd_CoherentGlobalMemWithRtc") {
free(B_h);
}
} else {
SUCCEED("Memory model feature is only supported for gfx90a, gfx940, gfx941, gfx942, Hence"
"skipping the testcase for this GPU " << device);
SUCCEED("Memory model feature is only supported for gfx90a, gfx940, gfx941, gfx942, gfx950,"
"Hence skipping the testcase for this GPU " << device);
}
}
@@ -299,7 +299,7 @@ TEST_CASE("Unit_BuiltInAtomicAdd_NonCoherentGlobalMemWithRtc") {
free(B_h);
}
} else {
SUCCEED("Memory model feature is only supported for gfx90a, gfx940, gfx941, gfx942, Hence"
"skipping the testcase for this GPU " << device);
SUCCEED("Memory model feature is only supported for gfx90a, gfx940, gfx941, gfx942, gfx950,"
"Hence skipping the testcase for this GPU " << device);
}
}
@@ -26,6 +26,9 @@ THE SOFTWARE.
#include <type_traits>
#include <vector>
#include <bitset>
#if defined(__gfx940__) || defined(__gfx941__) || defined(__gfx942__)
#define __gfx94plus_local__
#endif
/*
* This catch test is meant for FP8 FNUZ conversion checking
@@ -59,7 +62,7 @@ std::string get_arch_type() {
template<typename T> __FP8_DEVICE__ void e4m3_fnuz_device(T *val)
{
#if (defined(__gfx940__) || defined(__gfx941__) || defined(__gfx942__)) && __HIP_DEVICE_COMPILE__
#if defined(__gfx94plus_local__) && __HIP_DEVICE_COMPILE__
__hip_fp8_e4m3_fnuz tmp(*val);
*val = tmp;
#else
@@ -69,7 +72,7 @@ template<typename T> __FP8_DEVICE__ void e4m3_fnuz_device(T *val)
template<typename T> __FP8_DEVICE__ void e5m2_fnuz_device(T *val)
{
#if (defined(__gfx940__) || defined(__gfx941__) || defined(__gfx942__)) && __HIP_DEVICE_COMPILE__
#if defined(__gfx94plus_local__) && __HIP_DEVICE_COMPILE__
__hip_fp8_e5m2_fnuz tmp(*val);
*val = tmp;
#else
@@ -148,7 +151,7 @@ TEMPLATE_TEST_CASE("Unit_fp8_fnuz_compare_host_device", "", float, double) {
__FP8_DEVICE__ void e4m3_fp8x2_fnuz_device(float2 *val)
{
#if (defined(__gfx940__) || defined(__gfx941__) || defined(__gfx942__)) && __HIP_DEVICE_COMPILE__
#if defined(__gfx94plus_local__) && __HIP_DEVICE_COMPILE__
__hip_fp8x2_e4m3_fnuz tmp(*val);
*val = tmp;
#else
@@ -158,7 +161,7 @@ __FP8_DEVICE__ void e4m3_fp8x2_fnuz_device(float2 *val)
__FP8_DEVICE__ void e5m2_fp8x2_fnuz_device(float2 *val)
{
#if (defined(__gfx940__) || defined(__gfx941__) || defined(__gfx942__)) && __HIP_DEVICE_COMPILE__
#if defined(__gfx94plus_local__) && __HIP_DEVICE_COMPILE__
__hip_fp8x2_e5m2_fnuz tmp(*val);
*val = tmp;
#else
@@ -298,7 +301,7 @@ TEST_CASE("Unit_fp8x2_fnuz_split_compare") {
__FP8_DEVICE__ void e4m3_fp8x4_fnuz_device(float4 *val)
{
#if (defined(__gfx940__) || defined(__gfx941__) || defined(__gfx942__)) && __HIP_DEVICE_COMPILE__
#if defined(__gfx94plus_local__) && __HIP_DEVICE_COMPILE__
__hip_fp8x4_e4m3_fnuz tmp(*val);
*val = tmp;
#else
@@ -308,7 +311,7 @@ __FP8_DEVICE__ void e4m3_fp8x4_fnuz_device(float4 *val)
__FP8_DEVICE__ void e5m2_fp8x4_fnuz_device(float4 *val)
{
#if (defined(__gfx940__) || defined(__gfx941__) || defined(__gfx942__)) && __HIP_DEVICE_COMPILE__
#if defined(__gfx94plus_local__) && __HIP_DEVICE_COMPILE__
__hip_fp8x4_e5m2_fnuz tmp(*val);
*val = tmp;
#else
@@ -399,7 +402,7 @@ __FP8_DEVICE__ bool e4m3_bool_fnuz_device(float val)
{
bool x = false;
float y = val;
#if (defined(__gfx940__) || defined(__gfx941__) || defined(__gfx942__)) && __HIP_DEVICE_COMPILE__
#if defined(__gfx94plus_local__) && __HIP_DEVICE_COMPILE__
__hip_fp8_e4m3_fnuz tmp(y);
x = tmp;
#else
@@ -412,7 +415,7 @@ __FP8_DEVICE__ bool e5m2_bool_fnuz_device(float val)
{
bool x = false;
float y = val;
#if (defined(__gfx940__) || defined(__gfx941__) || defined(__gfx942__)) && __HIP_DEVICE_COMPILE__
#if defined(__gfx94plus_local__) && __HIP_DEVICE_COMPILE__
__hip_fp8_e5m2_fnuz tmp(y);
x = tmp;
#else
@@ -499,7 +502,7 @@ __FP8_DEVICE__ __hip_fp8_storage_t e4m3_fnuz_fp8_device(float val)
{
__hip_fp8_storage_t x = 0;
float y = val;
#if (defined(__gfx940__) || defined(__gfx941__) || defined(__gfx942__)) && __HIP_DEVICE_COMPILE__
#if defined(__gfx94plus_local__) && __HIP_DEVICE_COMPILE__
__hip_fp8_e4m3_fnuz tmp(y);
x = tmp.__x;
#else
@@ -512,7 +515,7 @@ __FP8_DEVICE__ __hip_fp8_storage_t e5m2_fnuz_fp8_device(float val)
{
__hip_fp8_storage_t x = 0;
float y = val;
#if (defined(__gfx940__) || defined(__gfx941__) || defined(__gfx942__)) && __HIP_DEVICE_COMPILE__
#if defined(__gfx94plus_local__) && __HIP_DEVICE_COMPILE__
__hip_fp8_e5m2_fnuz tmp(y);
x = tmp.__x;
#else
@@ -627,7 +630,7 @@ TEST_CASE("Unit_all_fp8_fnuz_cvt") {
template<typename T> __FP8_DEVICE__ void e4m3_fnuz_fp8_cvt(T val, float *cvt1, float *cvt2)
{
T y = val;
#if (defined(__gfx940__) || defined(__gfx941__) || defined(__gfx942__)) && __HIP_DEVICE_COMPILE__
#if defined(__gfx94plus_local__) && __HIP_DEVICE_COMPILE__
__hip_fp8_e4m3_fnuz tmp(y);
*cvt1 = tmp;
@@ -646,7 +649,7 @@ template<typename T> __FP8_DEVICE__ void e4m3_fnuz_fp8_cvt(T val, float *cvt1, f
template<typename T> __FP8_DEVICE__ void e5m2_fnuz_fp8_cvt(T val, float *cvt1, float *cvt2)
{
T y = val;
#if (defined(__gfx940__) || defined(__gfx941__) || defined(__gfx942__)) && __HIP_DEVICE_COMPILE__
#if defined(__gfx94plus_local__) && __HIP_DEVICE_COMPILE__
__hip_fp8_e5m2_fnuz tmp(y);
*cvt1 = tmp;
@@ -22,7 +22,7 @@
AtomicAdd on FineGrainMemory
1. The following test scenario verifies
unsafeatomicAdd on fineGrain memory with -mno-unsafe-fp-atomics flag
This testcase works only on gfx90a, gfx940, gfx941, gfx942.
This testcase works only on gfx90a, gfx940, gfx941, gfx942, gfx950.
*/
#include<hip_test_common.hh>
@@ -100,7 +100,7 @@ TEMPLATE_TEST_CASE("Unit_unsafeAtomicAdd_CoherentwithnoUnsafeflag", "",
HIP_CHECK(hipHostFree(result));
}
} else {
SUCCEED("Memory model feature is only supported for gfx90a, gfx940, gfx941, gfx942, Hence"
"skipping the testcase for this GPU " << device);
SUCCEED("Memory model feature is only supported for gfx90a, gfx940, gfx941, gfx942, gfx950,"
"Hence skipping the testcase for this GPU " << device);
}
}
@@ -22,7 +22,7 @@
AtomicAdd on FineGrainMemory
1. The following test scenario verifies
unsafeatomicAdd on fineGrain memory without atomics flag
This testcase works only on gfx90a, gfx940, gfx941, gfx942.
This testcase works only on gfx90a, gfx940, gfx941, gfx942, gfx950.
*/
#include<hip_test_checkers.hh>
@@ -100,7 +100,7 @@ TEMPLATE_TEST_CASE("Unit_unsafeAtomicAdd_Coherentwithoutflag", "",
HIP_CHECK(hipHostFree(result));
}
} else {
SUCCEED("Memory model feature is only supported for gfx90a, gfx940, gfx941, gfx942, Hence"
"skipping the testcase for this GPU " << device);
SUCCEED("Memory model feature is only supported for gfx90a, gfx940, gfx941, gfx942, gfx950,"
"Hence skipping the testcase for this GPU " << device);
}
}
@@ -22,7 +22,7 @@
AtomicAdd on CoarseGrainMemory
1. The following test scenario verifies
unsafeAtomicAdd on CoarseGrain memory with -mno-unsafe-fp-atomics flag
This testcase works only on gfx90a, gfx940, gfx941, gfx942.
This testcase works only on gfx90a, gfx940, gfx941, gfx942, gfx950.
*/
#include<hip_test_checkers.hh>
@@ -93,7 +93,7 @@ TEMPLATE_TEST_CASE("Unit_unsafeAtomicAdd_NonCoherentnounsafeatomicsflag", "",
HIP_CHECK(hipHostFree(result));
}
} else {
SUCCEED("Memory model feature is only supported for gfx90a, gfx940, gfx941, gfx942, Hence"
"skipping the testcase for this GPU " << device);
SUCCEED("Memory model feature is only supported for gfx90a, gfx940, gfx941, gfx942, gfx950, "
"Hence skipping the testcase for this GPU " << device);
}
}
@@ -22,7 +22,7 @@
unsafeAtomicAdd on CoarseGrainMemory
1. The following test scenario verifies
unsafeAtomicAdd on CoarseGrain memory without any unsafeatomics flag
This testcase works only on gfx90a, gfx940, gfx941, gfx942.
This testcase works only on gfx90a, gfx940, gfx941, gfx942, gfx950.
*/
#include<hip_test_checkers.hh>
@@ -93,7 +93,7 @@ TEMPLATE_TEST_CASE("Unit_unsafeAtomicAdd_NonCoherentwithoutflag", "",
HIP_CHECK(hipHostFree(result));
}
} else {
SUCCEED("Memory model feature is only supported for gfx90a, gfx940, gfx941, gfx942, Hence"
"skipping the testcase for this GPU " << device);
SUCCEED("Memory model feature is only supported for gfx90a, gfx940, gfx941, gfx942, gfx950,"
"Hence skipping the testcase for this GPU " << device);
}
}
@@ -22,7 +22,7 @@
unsafeAtomicAdd on CoarseGrainMemory
1. The following test scenario verifies
unsafeAtomicAdd on CoarseGrain memory with unsafeatomics flag
This testcase works only on gfx90a, gfx940, gfx941, gfx942.
This testcase works only on gfx90a, gfx940, gfx941, gfx942, gfx950.
*/
#include<hip_test_checkers.hh>
@@ -93,7 +93,7 @@ TEMPLATE_TEST_CASE("Unit_unsafeAtomicAdd_NonCoherentwithunsafeatomicsflag", "",
HIP_CHECK(hipHostFree(result));
}
} else {
SUCCEED("Memory model feature is only supported for gfx90a, gfx940, gfx941, gfx942, Hence"
"skipping the testcase for this GPU " << device);
SUCCEED("Memory model feature is only supported for gfx90a, gfx940, gfx941, gfx942, gfx950,"
"Hence skipping the testcase for this GPU " << device);
}
}
@@ -141,8 +141,8 @@ TEMPLATE_TEST_CASE("Unit_unsafeAtomicAdd_CoherentRTCnounsafeatomicflag", "",
}
HIP_CHECK(hipModuleUnload(module));
} else {
SUCCEED("Memory model feature is only supported for gfx90a, gfx940, gfx941, gfx942, Hence"
"skipping the testcase for this GPU " << device);
SUCCEED("Memory model feature is only supported for gfx90a, gfx940, gfx941, gfx942, gfx950,"
"Hence skipping the testcase for this GPU " << device);
}
}
@@ -238,8 +238,8 @@ TEMPLATE_TEST_CASE("Unit_unsafeAtomicAdd_CoherentRTCunsafeatomicflag", "",
}
HIP_CHECK(hipModuleUnload(module));
} else {
SUCCEED("Memory model feature is only supported for gfx90a, gfx940, gfx941, gfx942, Hence"
"skipping the testcase for this GPU " << device);
SUCCEED("Memory model feature is only supported for gfx90a, gfx940, gfx941, gfx942, gfx950,"
"Hence skipping the testcase for this GPU " << device);
}
}
@@ -331,8 +331,8 @@ TEMPLATE_TEST_CASE("Unit_unsafeAtomicAdd_CoherentRTCwithoutflag", "",
}
HIP_CHECK(hipModuleUnload(module));
} else {
SUCCEED("Memory model feature is only supported for gfx90a, gfx940, gfx941, gfx942, Hence"
"skipping the testcase for this GPU " << device);
SUCCEED("Memory model feature is only supported for gfx90a, gfx940, gfx941, gfx942, gfx950,"
"Hence skipping the testcase for this GPU " << device);
}
}
@@ -417,8 +417,8 @@ TEMPLATE_TEST_CASE("Unit_unsafeAtomicAdd_NonCoherentRTCnounsafeatomicflag", "",
}
HIP_CHECK(hipModuleUnload(module));
} else {
SUCCEED("Memory model feature is only supported for gfx90a, gfx940, gfx941, gfx942, Hence"
"skipping the testcase for this GPU " << device);
SUCCEED("Memory model feature is only supported for gfx90a, gfx940, gfx941, gfx942, gfx950,"
"Hence skipping the testcase for this GPU " << device);
}
}
@@ -505,8 +505,8 @@ TEMPLATE_TEST_CASE("Unit_unsafeAtomicAdd_NonCoherentRTCunsafeatomicflag", "",
}
HIP_CHECK(hipModuleUnload(module));
} else {
SUCCEED("Memory model feature is only supported for gfx90a, gfx940, gfx941, gfx942, Hence"
"skipping the testcase for this GPU " << device);
SUCCEED("Memory model feature is only supported for gfx90a, gfx940, gfx941, gfx942, gfx950,"
"Hence skipping the testcase for this GPU " << device);
}
}
@@ -593,7 +593,7 @@ TEMPLATE_TEST_CASE("Unit_unsafeAtomicAdd_NonCoherentRTC", "",
}
HIP_CHECK(hipModuleUnload(module));
} else {
SUCCEED("Memory model feature is only supported for gfx90a, gfx940, gfx941, gfx942, Hence"
"skipping the testcase for this GPU " << device);
SUCCEED("Memory model feature is only supported for gfx90a, gfx940, gfx941, gfx942, gfx950,"
"Hence skipping the testcase for this GPU " << device);
}
}
@@ -207,7 +207,7 @@ if(HIP_PLATFORM MATCHES "amd")
endif()
set(NOT_FOR_gfx90a_AND_ABOVE_TEST hipMallocArray.cc hipArrayCreate.cc) # tests not for gfx90a+
set(gfx90a_AND_ABOVE_TARGETS gfx90a gfx940 gfx941 gfx942)
set(gfx90a_AND_ABOVE_TARGETS gfx90a gfx940 gfx941 gfx942 gfx950)
function(CheckRejectedArchs OFFLOAD_ARCH_STR_LOCAL)
set(ARCH_CHECK -1 PARENT_SCOPE)
set(NOT_GFX90a -1)