| import sys |
| import torch.cuda |
| import os |
| from setuptools import setup |
| from torch.utils.cpp_extension import BuildExtension, CppExtension, CUDAExtension |
| from torch.utils.cpp_extension import CUDA_HOME, ROCM_HOME |
| |
| if sys.platform == 'win32': |
| vc_version = os.getenv('VCToolsVersion', '') |
| if vc_version.startswith('14.16.'): |
| CXX_FLAGS = ['/sdl'] |
| else: |
| CXX_FLAGS = ['/sdl', '/permissive-'] |
| else: |
| CXX_FLAGS = ['-g'] |
| |
| USE_NINJA = os.getenv('USE_NINJA') == '1' |
| |
| ext_modules = [ |
| CppExtension( |
| 'torch_test_cpp_extension.cpp', ['extension.cpp'], |
| extra_compile_args=CXX_FLAGS), |
| CppExtension( |
| 'torch_test_cpp_extension.msnpu', ['msnpu_extension.cpp'], |
| extra_compile_args=CXX_FLAGS), |
| CppExtension( |
| 'torch_test_cpp_extension.rng', ['rng_extension.cpp'], |
| extra_compile_args=CXX_FLAGS), |
| ] |
| |
| if torch.cuda.is_available() and CUDA_HOME is not None: |
| extension = CUDAExtension( |
| 'torch_test_cpp_extension.cuda', [ |
| 'cuda_extension.cpp', |
| 'cuda_extension_kernel.cu', |
| 'cuda_extension_kernel2.cu', |
| ], |
| extra_compile_args={'cxx': CXX_FLAGS, |
| 'nvcc': ['-O2']}) |
| ext_modules.append(extension) |
| elif torch.cuda.is_available() and ROCM_HOME is not None: |
| from torch.utils.hipify import hipify_python |
| this_dir = os.path.dirname(os.path.abspath(__file__)) |
| hipify_python.hipify( |
| project_directory=this_dir, |
| output_directory=this_dir, |
| includes="./*", |
| show_detailed=True, |
| is_pytorch_extension=True,) |
| extension = CUDAExtension( |
| 'torch_test_cpp_extension.cuda', [ |
| 'cuda_extension.cpp', |
| 'hip/hip_extension_kernel.hip', |
| 'hip/hip_extension_kernel2.hip', |
| ]) |
| ext_modules.append(extension) |
| |
| setup( |
| name='torch_test_cpp_extension', |
| packages=['torch_test_cpp_extension'], |
| ext_modules=ext_modules, |
| cmdclass={'build_ext': BuildExtension.with_options(use_ninja=USE_NINJA)}) |