From 665a200247e4a13d91b49383315b97005aaa44df Mon Sep 17 00:00:00 2001 From: Evgeny Mankov Date: Mon, 21 Oct 2019 15:51:25 +0300 Subject: [PATCH] [HIPIFY][tests] Set max clang's CudaArch for corresponding CUDA version [Reason] To support maximum CUDA features in offline tests + Add CUDA_VERSION >= 800 restriction for atomics.cu [TODO] Find a way to use or exclude atomicAdd for doubles if LLVM < 7, because LLVM 6.0.1 and older do not use --cuda-gpu-arch in clang's Driver code at all (option is only declared) [ROCm/clr commit: 9fc7afa7385895f1461ac67b463fad15a545d516] --- projects/clr/hipamd/tests/hipify-clang/lit.cfg | 11 +++++++++++ .../tests/hipify-clang/unit_tests/device/atomics.cu | 2 ++ 2 files changed, 13 insertions(+) diff --git a/projects/clr/hipamd/tests/hipify-clang/lit.cfg b/projects/clr/hipamd/tests/hipify-clang/lit.cfg index c9c5b83bd3..79be2b3d39 100644 --- a/projects/clr/hipamd/tests/hipify-clang/lit.cfg +++ b/projects/clr/hipamd/tests/hipify-clang/lit.cfg @@ -108,6 +108,17 @@ else: if config.pointer_size == 8: clang_arguments += " -D__LP64__" +# Set max clang's CudaArch for corresponding CUDA version +# to support maximum CUDA features in offline tests +if config.cuda_version_major == 7: + clang_arguments += " --cuda-gpu-arch=sm_52" +if config.cuda_version_major == 8: + clang_arguments += " --cuda-gpu-arch=sm_62" +if config.cuda_version_major == 9: + clang_arguments += " --cuda-gpu-arch=sm_70" +if config.cuda_version_major == 10: + clang_arguments += " --cuda-gpu-arch=sm_75" + # cuDNN ROOT if config.cuda_dnn_root: clang_arguments += " -I'%s'/include" diff --git a/projects/clr/hipamd/tests/hipify-clang/unit_tests/device/atomics.cu b/projects/clr/hipamd/tests/hipify-clang/unit_tests/device/atomics.cu index 1afd1ab541..e24b9a2175 100644 --- a/projects/clr/hipamd/tests/hipify-clang/unit_tests/device/atomics.cu +++ b/projects/clr/hipamd/tests/hipify-clang/unit_tests/device/atomics.cu @@ -276,7 +276,9 @@ int main(int argc, char** argv) { runTest(); runTest(); runTest(); +#if CUDA_VERSION >= 8000 runTest(); +#endif // CHECK: hipDeviceReset(); cudaDeviceReset(); printf("%s completed, returned %s\n", sampleName, testResult ? "OK" : "ERROR!");