def _comiple_unix_hipcc(self, obj, src, ext, cc_args, extra_postargs, pp_opts): # For CUDA C source files, compile them with HIPCC. _compiler_so = self.compiler_so try: rcom_path = build.get_hipcc_path() base_opts = build.get_compiler_base_options() self.set_executable('compiler_so', rcom_path) postargs = ['-O2', '-fPIC', '--include', 'hip_runtime.h'] print('HIPCC options:', postargs) return unixccompiler.UnixCCompiler._compile( self, obj, src, ext, base_opts + cc_args, postargs, pp_opts) finally: self.compiler_so = _compiler_so
def _compile_unix_nvcc(self, obj, src, ext, cc_args, extra_postargs, pp_opts): # For CUDA C source files, compile them with NVCC. nvcc_path = build.get_nvcc_path() base_opts = build.get_compiler_base_options(nvcc_path) compiler_so = nvcc_path cuda_version = build.get_cuda_version() postargs = _nvcc_gencode_options(cuda_version) + [ '-O2', '--compiler-options="-fPIC"', '--std=c++11'] print('NVCC options:', postargs) try: self.spawn(compiler_so + base_opts + cc_args + [src, '-o', obj] + postargs) except errors.DistutilsExecError as e: raise errors.CompileError(str(e))
def _comiple_unix_nvcc(self, obj, src, ext, cc_args, extra_postargs, pp_opts): # For CUDA C source files, compile them with NVCC. _compiler_so = self.compiler_so try: nvcc_path = build.get_nvcc_path() base_opts = build.get_compiler_base_options() self.set_executable('compiler_so', nvcc_path) cuda_version = build.get_cuda_version() postargs = _nvcc_gencode_options(cuda_version) + [ '-O2', '--compiler-options="-fPIC"', '--std=c++11'] print('NVCC options:', postargs) return unixccompiler.UnixCCompiler._compile( self, obj, src, ext, base_opts + cc_args, postargs, pp_opts) finally: self.compiler_so = _compiler_so
def _compile_unix_hipcc(self, obj, src, ext, cc_args, extra_postargs, pp_opts): # For CUDA C source files, compile them with HIPCC. rocm_path = build.get_hipcc_path() base_opts = build.get_compiler_base_options(rocm_path) compiler_so = rocm_path hip_version = build.get_hip_version() postargs = ['-O2', '-fPIC', '--include', 'hip_runtime.h'] if hip_version >= 402: postargs += ['--std=c++14'] else: postargs += ['--std=c++11'] print('HIPCC options:', postargs) try: self.spawn(compiler_so + base_opts + cc_args + [src, '-o', obj] + postargs) except errors.DistutilsExecError as e: raise errors.CompileError(str(e))
def _compile(self, obj, src, ext, cc_args, extra_postargs, pp_opts): # For sources other than CUDA C ones, just call the super class method. if os.path.splitext(src)[1] != '.cu': return unixccompiler.UnixCCompiler._compile( self, obj, src, ext, cc_args, extra_postargs, pp_opts) # For CUDA C source files, compile them with NVCC. _compiler_so = self.compiler_so try: nvcc_path = build.get_nvcc_path() base_opts = build.get_compiler_base_options() self.set_executable('compiler_so', nvcc_path) cuda_version = build.get_cuda_version() postargs = _nvcc_gencode_options(cuda_version) + [ '-O2', '--compiler-options="-fPIC"'] print('NVCC options:', postargs) return unixccompiler.UnixCCompiler._compile( self, obj, src, ext, base_opts + cc_args, postargs, pp_opts) finally: self.compiler_so = _compiler_so
def _compile_unix_nvcc(self, obj, src, ext, cc_args, extra_postargs, pp_opts): # For CUDA C source files, compile them with NVCC. nvcc_path = build.get_nvcc_path() base_opts = build.get_compiler_base_options(nvcc_path) compiler_so = nvcc_path cuda_version = build.get_cuda_version() postargs = _nvcc_gencode_options(cuda_version) + [ '-O2', '--compiler-options="-fPIC"'] if cuda_version >= 11020: postargs += ['--std=c++14'] num_threads = int(os.environ.get('CUPY_NUM_NVCC_THREADS', '2')) postargs += [f'-t{num_threads}'] else: postargs += ['--std=c++11'] print('NVCC options:', postargs) try: self.spawn(compiler_so + base_opts + cc_args + [src, '-o', obj] + postargs) except errors.DistutilsExecError as e: raise errors.CompileError(str(e))