Files
derek.holloway 7502bf64a4
CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00

394 lines
18 KiB
INI

# -*- Python -*-
import os
import platform
import re
import subprocess
import struct
import lit.formats
import lit.util
# Configuration file for the 'lit' test runner.
site_cfg = lit_config.params.get('site_config', None)
lit_config.load_config(config, site_cfg)
config.excludes = ['cmdparser.hpp']
config.excludes.append('spatial_batch_norm_op.h')
config.excludes.append('common_cudnn.h')
config.excludes.append('inc.h')
config.excludes.append('inet.h')
config.excludes.append('types.h')
config.excludes.append('socket.h')
delimiter = "===============================================================";
print(delimiter)
print("CUDA " + config.cuda_version_full + " - will be used for testing")
print("LLVM " + config.llvm_version + " - will be used for testing")
print(platform.machine() + " - Platform architecture")
print(platform.system() + " " + platform.release() + " - Platform OS")
print(str(config.pointer_size * 8) + " - hipify-clang binary bitness")
print(str(struct.calcsize("P") * 8) + " - python " + str(platform.python_version()) + " binary bitness")
print(delimiter)
warns = None
if not config.cuda_dnn_root or config.cuda_dnn_root == "OFF":
config.excludes.append('cudnn_convolution_forward.cu')
config.excludes.append('cudnn_softmax.cu')
config.excludes.append('cudnn2miopen.cu')
config.excludes.append('cudnn2miopen_before_9000.cu')
print("WARN: cuDNN tests are excluded because CUDA_DNN_ROOT_DIR is not specified")
warns = True
else:
if config.cudnn_version_major >= 9:
config.excludes.append('cudnn2miopen_before_9000.cu')
if not config.cuda_cub_root or config.cuda_cub_root == "OFF":
config.excludes.append('cub_01.cu')
config.excludes.append('cub_02.cu')
config.excludes.append('cub_03.cu')
print("WARN: CUB tests are excluded because CUDA_CUB_ROOT_DIR is not specified")
warns = True
else:
if config.cuda_version_major == 12 and config.cuda_version_minor >= 6:
config.excludes.append('cub_01.cu')
config.excludes.append('cub_02.cu')
config.excludes.append('cub_03.cu')
if not config.cuda_tensor_root or config.cuda_tensor_root == "OFF":
config.excludes.append('cutensor2hiptensor.cu')
config.excludes.append('cutensor2hiptensor_before_20000.cu')
print("WARN: cuTensor tests are excluded because CUDA_TENSOR_ROOT_DIR is not specified")
warns = True
else:
if config.cutensor_version_major >= 2:
config.excludes.append('cutensor2hiptensor_before_20000.cu')
if not config.cuda_file_root or config.cuda_file_root == "OFF" or config.cuda_version_major < 11 or (config.cuda_version_major == 11 and config.cuda_version_minor < 4):
config.excludes.append('cufile2hipfile.cu')
config.excludes.append('cufile2hipfile_functions.cu')
print("WARN: cuFile tests are excluded because CUDA_FILE_ROOT_DIR is not specified or CUDA version < 11.4")
warns = True
if warns:
print(delimiter)
clang_arguments = "-v"
if config.cuda_version_major == 7 and config.cuda_version_minor == 0:
config.excludes.append('headers_test_09.cu')
config.excludes.append('cudnn_convolution_forward.cu')
config.excludes.append('cusparse2rocsparse_7050.cu')
config.excludes.append('headers_test_12_SOLVER_7050.cu')
config.excludes.append('headers_test_09_fp16_7050.cu')
if config.cuda_version_major < 8:
config.excludes.append('cuSPARSE_02.cu')
if config.cuda_version_major < 9:
config.excludes.append('cuSPARSE_04.cu')
config.excludes.append('cuSPARSE_05.cu')
config.excludes.append('cuSPARSE_06.cu')
config.excludes.append('cuSPARSE_07.cu')
config.excludes.append('benchmark_curand_kernel.cpp')
config.excludes.append('reinterpret_cast.cu')
config.excludes.append('half2_allocators.cu')
config.excludes.append('cub_01.cu')
config.excludes.append('cub_02.cu')
config.excludes.append('cub_03.cu')
config.excludes.append('runtime_functions_9000.cu')
if config.cuda_version_major < 9 or (config.cuda_version_major == 9 and config.cuda_version_minor < 2):
config.excludes.append('cusparse2rocsparse_9020.cu')
config.excludes.append('cusparse2rocsparse_9020_12000.cu')
if config.cuda_version_major < 10:
config.excludes.append('cuSPARSE_08.cu')
config.excludes.append('cuSPARSE_09.cu')
config.excludes.append('cuSPARSE_10.cu')
config.excludes.append('cuSPARSE_11.cu')
config.excludes.append('simple_mechs.cu')
config.excludes.append('cusparse2rocsparse_10000.cu')
if config.cuda_version_major < 10 or (config.cuda_version_major == 10 and config.cuda_version_minor < 1):
config.excludes.append('cusparse2rocsparse_10010.cu')
if config.cuda_version_major < 10 or (config.cuda_version_major == 10 and config.cuda_version_minor < 1) or config.cuda_version_major >= 12:
config.excludes.append('cusparse2rocsparse_10010_12000.cu')
if config.cuda_version_major < 10 or (config.cuda_version_major == 10 and config.cuda_version_minor < 1):
config.excludes.append('cublaslt2hipblaslt.cu')
config.excludes.append('cublaslt2hipblaslt_10010_10020.cu')
if not (config.cuda_version_major == 10 and (config.cuda_version_minor == 1 and config.cuda_version_minor == 2)):
config.excludes.append('cublaslt2hipblaslt_10010_10020.cu')
if config.cuda_version_major < 11 and sys.platform in ['win32']:
config.excludes.append('cusparse2rocsparse_10010_12000.cu')
# [NOTE] cmake doesn't load lib VERSIONs, including CUSPARSE_VERSION, which equals 11200 for CUDA 11.1.0 and 11300 for CUDA 11.1.1
# [NOTE] Both CUDA 11.1.0 CUDA 11.1.1 have the same CUDA_VERSION 11010, and we can't distinguish them, thus exclude the below tests from both 11.1.0 and 11.1.1
if config.cuda_version_major < 11 or (config.cuda_version_major == 11 and config.cuda_version_minor <= 1) or config.cuda_version_major >= 12:
config.excludes.append('cusparse2rocsparse_11010_12000.cu')
# [NOTE] cmake doesn't load lib VERSIONs, including CUSPARSE_VERSION, which equals 11500 for CUDA 11.3.0 and 11600 for CUDA 11.3.1
# [NOTE] Both CUDA 11.3.0 CUDA 11.3.1 have the same CUDA_VERSION 11030, and we can't distinguish them, thus exclude the below tests from both 11.3.0 and 11.3.1
if config.cuda_version_major < 11 or (config.cuda_version_major == 11 and config.cuda_version_minor <= 3) or config.cuda_version_major >= 12:
config.excludes.append('cusparse2rocsparse_11030_12000.cu')
config.excludes.append('cusparse2hipsparse_11030_12000.cu')
if config.cuda_version_major <= 10:
config.excludes.append('headers_test_12_SOLVER_10010.cu')
if config.cuda_version_major > 10:
clang_arguments += " -DTHRUST_IGNORE_CUB_VERSION_CHECK"
config.excludes.append('cudnn_convolution_forward.cu')
config.excludes.append('cuSPARSE_01.cu')
config.excludes.append('cuSPARSE_02.cu')
config.excludes.append('cuSPARSE_12.cu')
if config.cuda_version_major < 11:
config.excludes.append('headers_test_09_bf16_11000.cu')
if config.cuda_version_major < 11 or (config.cuda_version_major == 11 and config.cuda_version_minor < 1):
config.excludes.append('runtime_functions_11010.cu')
if config.cuda_version_major >= 11:
config.excludes.append('cusparse2rocsparse_before_11000.cu')
if config.cuda_version_major < 11 or (config.cuda_version_major == 11 and config.cuda_version_minor < 8):
config.excludes.append('cudevice2hipdevice.cu')
config.excludes.append('cudevice2hipdevice_before_11080_after_12011.cu')
if (config.cuda_version_major == 11 and config.cuda_version_minor >=8) or (config.cuda_version_major == 12 and config.cuda_version_minor < 2):
config.excludes.append('cudevice2hipdevice_before_11080_after_12011.cu')
if (config.cuda_version_major < 12) or (config.cuda_version_major == 12 and config.cuda_version_minor < 8):
config.excludes.append('cudevice2hipdevice_12080.cu')
config.excludes.append('runtime_functions_12080.cu')
if config.cuda_version_major < 12:
config.excludes.append('headers_test_06_12000.cu')
config.excludes.append('headers_test_07_12000.cu')
config.excludes.append('headers_test_08_12000.cu')
config.excludes.append('headers_test_09_12000.cu')
config.excludes.append('runtime_functions_12000.cu')
config.excludes.append('cusparse2rocsparse_12000.cu')
config.excludes.append('cusparse2hipsparse_12000.cu')
if config.cuda_version_major >= 12:
config.excludes.append('headers_test_06.cu')
config.excludes.append('headers_test_07.cu')
config.excludes.append('headers_test_08.cu')
config.excludes.append('headers_test_09.cu')
config.excludes.append('tex2dKernel.cpp')
config.excludes.append('cuSPARSE_11.cu')
config.excludes.append('cublas_0_based_indexing.cu')
config.excludes.append('cublas_0_based_indexing_rocblas.cu')
config.excludes.append('cusparse2rocsparse_9020_12000.cu')
config.excludes.append('cusparse2rocsparse_before_12000.cu')
clang_arguments += " -D_LIBCUDACXX_OBJECT_FORMAT_COFF"
if config.cuda_version_major >= 13:
config.excludes.append('cd_intro_before_13000.cu')
config.excludes.append('driver_functions_before_13000.cu')
config.excludes.append('runtime_functions_before_13000.cu')
config.excludes.append('intro_before_13000.cu')
config.excludes.append('headers_test_09_rocrand_before_13000.cu')
if config.cuda_version_major < 13:
config.excludes.append('cd_intro.cu')
config.excludes.append('intro.cu')
if config.llvm_version_major < 8:
config.excludes.append('cd_intro.cu')
config.excludes.append('cd_intro_before_13000.cu')
if config.llvm_version_major < 10:
config.excludes.append('pp_if_else_conditionals_LLVM_10.cu')
config.excludes.append('pp_if_else_conditionals_01_LLVM_10.cu')
if config.llvm_version_major > 18:
clang_arguments += " -Wno-missing-template-arg-list-after-template-kw"
# name: The name of this test suite.
config.name = 'hipify'
# suffixes: CUDA source is only supported
config.suffixes = ['.cu','.cuh','.cpp','.c','.hpp','.h']
# testFormat: The test format to use to interpret tests.
config.test_format = lit.formats.ShTest()
# test_source_root: The root path where tests are located.
config.test_source_root = os.path.dirname(__file__)
# test_exec_root: The path where tests are located (default is the test suite root).
#config.test_exec_root = config.test_source_root
# target_triple: Used by ShTest and TclTest formats for XFAIL checks.
config.target_triple = '(unused)'
# available_features: Used by ShTest and TclTest formats for REQUIRES checks.
config.available_features = []
obj_root = getattr(config, 'obj_root', None)
if obj_root is not None:
config.test_exec_root = obj_root
if obj_root is not None:
llvm_tools_dir = getattr(config, 'llvm_tools_dir', None)
if not llvm_tools_dir:
lit_config.fatal('No LLVM tools dir set!')
path = os.path.pathsep.join((llvm_tools_dir, config.environment['PATH']))
config.environment['PATH'] = path
if config.hipify_clang_tests_only and config.hipify_clang_tests_only != "0" and config.hipify_clang_tests_only.upper() != "OFF":
hipify_path = config.hipify_install_path
else:
hipify_path = obj_root
inc_subfolder = ""
if config.cuda_version_major < 11 or (config.cuda_version_major == 11 and config.cuda_version_minor < 6):
inc_subfolder = "/inc"
if sys.platform in ['win32']:
run_test_ext = ".bat"
if not config.hipify_clang_tests_only or config.hipify_clang_tests_only == "0" or config.hipify_clang_tests_only.upper() == "OFF":
hipify_path += "/" + config.build_type
else:
run_test_ext = ".sh"
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:
if config.cuda_version_minor == 5:
clang_arguments += " --cuda-gpu-arch=sm_53"
else:
clang_arguments += " --cuda-gpu-arch=sm_52"
elif config.cuda_version_major == 8:
clang_arguments += " --cuda-gpu-arch=sm_62"
elif config.cuda_version_major == 9:
if config.cuda_version_minor == 2 and config.llvm_version_major >= 7 and config.llvm_version_major < 8:
clang_arguments += " --cuda-gpu-arch=sm_72"
elif config.llvm_version_major >= 6 and config.llvm_version_major < 7:
clang_arguments += " --cuda-gpu-arch=sm_70"
elif config.cuda_version_major == 10:
if config.llvm_version_major >= 8 and config.llvm_version_major < 11:
clang_arguments += " --cuda-gpu-arch=sm_75"
elif config.cuda_version_major == 11:
if config.cuda_version_minor == 0 and config.llvm_version_major >= 11 and config.llvm_version_major < 13:
clang_arguments += " --cuda-gpu-arch=sm_80"
if config.cuda_version_minor > 0 and config.llvm_version_major >= 13:
clang_arguments += " --cuda-gpu-arch=sm_86"
# CUDA SDK ROOT
if config.cuda_sdk_root and config.cuda_sdk_root != "OFF":
clang_arguments += " -isystem'%s'/common" + inc_subfolder
# cuDNN ROOT
if config.cuda_dnn_root and config.cuda_dnn_root != "OFF":
clang_arguments += " -I'%s'"
# CUB ROOT
if config.cuda_cub_root and config.cuda_cub_root != "OFF":
clang_arguments += " -I'%s'"
# cuTensor ROOT
if config.cuda_tensor_root and config.cuda_tensor_root != "OFF":
clang_arguments += " -I'%s'"
# cuFile ROOT
if config.cuda_file_root and config.cuda_file_root != "OFF":
clang_arguments += " -I'%s'"
i_subst = 0
if config.cuda_sdk_root != "OFF":
i_subst = 1
if config.cuda_dnn_root != "OFF":
i_subst += 2
if config.cuda_cub_root != "OFF":
i_subst += 4
if config.cuda_tensor_root != "OFF":
i_subst += 8
if config.cuda_file_root != "OFF":
i_subst += 16
if i_subst == 31:
config.substitutions.append(("%clang_args", clang_arguments % (config.cuda_sdk_root, config.cuda_dnn_root, config.cuda_cub_root, config.cuda_tensor_root, config.cuda_file_root)))
elif i_subst == 30:
config.substitutions.append(("%clang_args", clang_arguments % (config.cuda_dnn_root, config.cuda_cub_root, config.cuda_tensor_root, config.cuda_file_root)))
elif i_subst == 29:
config.substitutions.append(("%clang_args", clang_arguments % (config.cuda_sdk_root, config.cuda_cub_root, config.cuda_tensor_root, config.cuda_file_root)))
elif i_subst == 28:
config.substitutions.append(("%clang_args", clang_arguments % (config.cuda_cub_root, config.cuda_tensor_root, config.cuda_file_root)))
elif i_subst == 27:
config.substitutions.append(("%clang_args", clang_arguments % (config.cuda_sdk_root, config.cuda_dnn_root, config.cuda_tensor_root, config.cuda_file_root)))
elif i_subst == 26:
config.substitutions.append(("%clang_args", clang_arguments % (config.cuda_dnn_root, config.cuda_tensor_root, config.cuda_file_root)))
elif i_subst == 25:
config.substitutions.append(("%clang_args", clang_arguments % (config.cuda_sdk_root, config.cuda_tensor_root, config.cuda_file_root)))
elif i_subst == 24:
config.substitutions.append(("%clang_args", clang_arguments % (config.cuda_tensor_root, config.cuda_file_root)))
elif i_subst == 23:
config.substitutions.append(("%clang_args", clang_arguments % (config.cuda_sdk_root, config.cuda_dnn_root, config.cuda_cub_root, config.cuda_file_root)))
elif i_subst == 22:
config.substitutions.append(("%clang_args", clang_arguments % (config.cuda_dnn_root, config.cuda_cub_root, config.cuda_file_root)))
elif i_subst == 21:
config.substitutions.append(("%clang_args", clang_arguments % (config.cuda_sdk_root, config.cuda_cub_root, config.cuda_file_root)))
elif i_subst == 20:
config.substitutions.append(("%clang_args", clang_arguments % (config.cuda_cub_root, config.cuda_file_root)))
elif i_subst == 19:
config.substitutions.append(("%clang_args", clang_arguments % (config.cuda_sdk_root, config.cuda_dnn_root, config.cuda_file_root)))
elif i_subst == 18:
config.substitutions.append(("%clang_args", clang_arguments % (config.cuda_dnn_root, config.cuda_file_root)))
elif i_subst == 17:
config.substitutions.append(("%clang_args", clang_arguments % (config.cuda_sdk_root, config.cuda_file_root)))
elif i_subst == 16:
config.substitutions.append(("%clang_args", clang_arguments % config.cuda_file_root))
elif i_subst == 15:
config.substitutions.append(("%clang_args", clang_arguments % (config.cuda_sdk_root, config.cuda_dnn_root, config.cuda_cub_root, config.cuda_tensor_root)))
elif i_subst == 14:
config.substitutions.append(("%clang_args", clang_arguments % (config.cuda_dnn_root, config.cuda_cub_root, config.cuda_tensor_root)))
elif i_subst == 13:
config.substitutions.append(("%clang_args", clang_arguments % (config.cuda_sdk_root, config.cuda_cub_root, config.cuda_tensor_root)))
elif i_subst == 12:
config.substitutions.append(("%clang_args", clang_arguments % (config.cuda_cub_root, config.cuda_tensor_root)))
elif i_subst == 11:
config.substitutions.append(("%clang_args", clang_arguments % (config.cuda_sdk_root, config.cuda_dnn_root, config.cuda_tensor_root)))
elif i_subst == 10:
config.substitutions.append(("%clang_args", clang_arguments % (config.cuda_dnn_root, config.cuda_tensor_root)))
elif i_subst == 9:
config.substitutions.append(("%clang_args", clang_arguments % (config.cuda_sdk_root, config.cuda_tensor_root)))
elif i_subst == 8:
config.substitutions.append(("%clang_args", clang_arguments % config.cuda_tensor_root))
elif i_subst == 7:
config.substitutions.append(("%clang_args", clang_arguments % (config.cuda_sdk_root, config.cuda_dnn_root, config.cuda_cub_root)))
elif i_subst == 6:
config.substitutions.append(("%clang_args", clang_arguments % (config.cuda_dnn_root, config.cuda_cub_root)))
elif i_subst == 5:
config.substitutions.append(("%clang_args", clang_arguments % (config.cuda_sdk_root, config.cuda_cub_root)))
elif i_subst == 4:
config.substitutions.append(("%clang_args", clang_arguments % config.cuda_cub_root))
elif i_subst == 3:
config.substitutions.append(("%clang_args", clang_arguments % (config.cuda_sdk_root, config.cuda_dnn_root)))
elif i_subst == 2:
config.substitutions.append(("%clang_args", clang_arguments % config.cuda_dnn_root))
elif i_subst == 1:
config.substitutions.append(("%clang_args", clang_arguments % config.cuda_sdk_root))
if config.llvm_version_major < 4:
hipify_arguments = "-I'%s'/include"
else:
hipify_arguments = "\"--cuda-path=%s\""
hipify_arguments += " \"%s\""
if config.cuda_root and config.cuda_root != "OFF":
config.substitutions.append(("%hipify_args", hipify_arguments % (config.cuda_root, config.clang_resource_dir)))
config.substitutions.append(("hipify", '"' + hipify_path + "/hipify-clang" + '"'))
config.substitutions.append(("%run_test", '"' + config.test_source_root + "/run_test" + run_test_ext + '"'))