def get_cuda_path(): global _cuda_path # Use a magic word to represent the cache not filled because None is a # valid return value. if _cuda_path != 'NOT_INITIALIZED': return _cuda_path nvcc_path = utils.search_on_path(('nvcc', 'nvcc.exe')) cuda_path_default = None if nvcc_path is not None: cuda_path_default = os.path.normpath( os.path.join(os.path.dirname(nvcc_path), '..')) cuda_path = os.environ.get('CUDA_PATH', '') # Nvidia default on Windows if len(cuda_path) > 0 and cuda_path != cuda_path_default: utils.print_warning('nvcc path != CUDA_PATH', 'nvcc path: %s' % cuda_path_default, 'CUDA_PATH: %s' % cuda_path) if os.path.exists(cuda_path): _cuda_path = cuda_path elif cuda_path_default is not None: _cuda_path = cuda_path_default elif os.path.exists('/usr/local/cuda'): _cuda_path = '/usr/local/cuda' else: _cuda_path = None return _cuda_path
def get_compiler_setting(): nvcc_path = utils.search_on_path(('nvcc', 'nvcc.exe')) cuda_path_default = None if nvcc_path is None: utils.print_warning('nvcc not in path.', 'Please set path to nvcc.') else: cuda_path_default = os.path.normpath( os.path.join(os.path.dirname(nvcc_path), '..')) cuda_path = os.environ.get('CUDA_PATH', '') # Nvidia default on Windows if len(cuda_path) > 0 and cuda_path != cuda_path_default: utils.print_warning( 'nvcc path != CUDA_PATH', 'nvcc path: %s' % cuda_path_default, 'CUDA_PATH: %s' % cuda_path) if not os.path.exists(cuda_path): cuda_path = cuda_path_default if not cuda_path and os.path.exists('/usr/local/cuda'): cuda_path = '/usr/local/cuda' include_dirs = [] library_dirs = [] define_macros = [] if cuda_path: include_dirs.append(os.path.join(cuda_path, 'include')) if sys.platform == 'win32': library_dirs.append(os.path.join(cuda_path, 'bin')) library_dirs.append(os.path.join(cuda_path, 'lib', 'x64')) else: library_dirs.append(os.path.join(cuda_path, 'lib64')) library_dirs.append(os.path.join(cuda_path, 'lib')) if sys.platform == 'darwin': library_dirs.append('/usr/local/cuda/lib') if sys.platform == 'win32': nvtoolsext_path = os.environ.get('NVTOOLSEXT_PATH', '') if os.path.exists(nvtoolsext_path): include_dirs.append(os.path.join(nvtoolsext_path, 'include')) library_dirs.append(os.path.join(nvtoolsext_path, 'lib', 'x64')) else: define_macros.append(('CUPY_NO_NVTX', '1')) return { 'include_dirs': include_dirs, 'library_dirs': library_dirs, 'define_macros': define_macros, 'language': 'c++', }
def check_nvtx(compiler, settings): if PLATFORM_WIN32: path = os.environ.get('NVTOOLSEXT_PATH', None) if path is None: utils.print_warning('NVTX unavailable: NVTOOLSEXT_PATH is not set') elif not os.path.exists(path): utils.print_warning( 'NVTX unavailable: NVTOOLSEXT_PATH is set but the directory ' 'does not exist') elif utils.search_on_path(['nvToolsExt64_1.dll']) is None: utils.print_warning( 'NVTX unavailable: nvToolsExt64_1.dll not found in PATH') else: return True return False return True
'include': [ 'thrust/device_ptr.h', 'thrust/sequence.h', 'thrust/sort.h', ], 'libraries': [ 'cudart', ], 'check_method': build.check_cuda_version, } ] if sys.platform == 'win32': mod_cuda = MODULES[0] mod_cuda['libraries'].remove('nvToolsExt') if utils.search_on_path(['nvToolsExt64_1.dll']) is None: mod_cuda['file'].remove('cupy.cuda.nvtx') mod_cuda['include'].remove('nvToolsExt.h') utils.print_warning('Cannot find nvToolsExt. nvtx was disabled.') else: mod_cuda['libraries'].append('nvToolsExt64_1') def ensure_module_file(file): if isinstance(file, tuple): return file else: return (file, []) def module_extension_name(file):
def test_exec_not_found(self): self.assertIsNone(utils.search_on_path(['no_such_exec']))
def test_exec_not_found(self): assert utils.search_on_path(['no_such_exec']) is None
'cupy.cuda.cusolver', ], 'include': [ 'cusolverDn.h', ], 'libraries': [ 'cusolver', ], 'check_method': build.check_cusolver_version, } ] if sys.platform == 'win32': mod_cuda = MODULES[0] mod_cuda['libraries'].remove('nvToolsExt') if utils.search_on_path(['nvToolsExt64_1.dll']) is None: mod_cuda['file'].remove('cupy.cuda.nvtx') mod_cuda['include'].remove('nvToolsExt.h') utils.print_warning( 'Cannot find nvToolsExt. nvtx was disabled.') else: mod_cuda['libraries'].append('nvToolsExt64_1') def check_readthedocs_environment(): return os.environ.get('READTHEDOCS', None) == 'True' def check_library(compiler, includes=(), libraries=(), include_dirs=(), library_dirs=()):