icarus112's picture
Update Feather a10g-large training runtime image
c475135 verified
Raw
History Blame Contribute Delete
3.2 kB
import torch
from setuptools import setup
from torch.utils.cpp_extension import BuildExtension, CUDAExtension, CUDA_HOME
import subprocess
def get_last_arch_torch():
arch = torch.cuda.get_arch_list()[-1]
print(f"Found arch: {arch} from existing torch installation")
return arch
def get_cuda_bare_metal_version(cuda_dir):
raw_output = subprocess.check_output([cuda_dir + "/bin/nvcc", "-V"], universal_newlines=True)
output = raw_output.split()
release_idx = output.index("release") + 1
release = output[release_idx].split(".")
bare_metal_major = release[0]
bare_metal_minor = release[1][0]
return raw_output, bare_metal_major, bare_metal_minor
def append_nvcc_threads(nvcc_extra_args):
_, bare_metal_major, bare_metal_minor = get_cuda_bare_metal_version(CUDA_HOME)
if int(bare_metal_major) >= 11 and int(bare_metal_minor) >= 2:
return nvcc_extra_args + ["--threads", "4"]
return nvcc_extra_args
arch = get_last_arch_torch()
# [MP] make install more flexible here
sm_num = arch[-2:]
# Auto-detect compute capability from torch's detected arch string (e.g. "sm_86" -> "compute_86")
cc_flag = [f'--generate-code=arch=compute_{sm_num},code=compute_{sm_num}']
setup(
name='monarch_cuda',
ext_modules=[
CUDAExtension('monarch_cuda', [
'monarch.cpp',
'monarch_cuda/monarch_cuda_interface_fwd.cu',
'monarch_cuda/monarch_cuda_interface_fwd_complex.cu',
'monarch_cuda/monarch_cuda_interface_fwd_bf16.cu',
'monarch_cuda/monarch_cuda_interface_fwd_bf16_complex.cu',
'monarch_cuda/monarch_cuda_interface_fwd_r2r.cu',
'monarch_cuda/monarch_cuda_interface_fwd_r2r_bf16.cu',
'monarch_cuda/monarch_cuda_interface_bwd.cu',
'monarch_cuda/monarch_cuda_interface_bwd_complex.cu',
'monarch_cuda/monarch_cuda_interface_bwd_bf16.cu',
'monarch_cuda/monarch_cuda_interface_bwd_bf16_complex.cu',
'monarch_cuda/monarch_cuda_interface_bwd_r2r.cu',
'monarch_cuda/monarch_cuda_interface_bwd_r2r_bf16.cu',
'butterfly/butterfly_cuda.cu',
'butterfly/butterfly_padded_cuda.cu',
'butterfly/butterfly_padded_cuda_bf16.cu',
'butterfly/butterfly_ifft_cuda.cu',
'butterfly/butterfly_cuda_bf16.cu',
'butterfly/butterfly_ifft_cuda_bf16.cu',
'butterfly/butterfly_padded_ifft_cuda.cu',
'butterfly/butterfly_padded_ifft_cuda_bf16.cu',
'conv1d/conv1d_bhl.cu',
'conv1d/conv1d_blh.cu',
'conv1d/conv1d_bwd_cuda_bhl.cu',
'conv1d/conv1d_bwd_cuda_blh.cu',
],
extra_compile_args={'cxx': ['-O3'],
'nvcc': append_nvcc_threads(['-O3', '-lineinfo', '--use_fast_math', '-std=c++17'] + cc_flag)
})
],
cmdclass={
'build_ext': BuildExtension
},
version='0.0.0',
description='Fast FFT algorithms for convolutions',
url='https://github.com/HazyResearch/flash-fft-conv',
author='Dan Fu, Hermann Kumbong',
author_email='danfu@cs.stanford.edu',
license='Apache 2.0')