def test_cpp_extensions(executable, test_module, test_directory, options): try: cpp_extension.verify_ninja_availability() except RuntimeError: print(CPP_EXTENSIONS_ERROR) return 1 cpp_extensions_test_dir = os.path.join(test_directory, 'cpp_extensions') return_code = shell([sys.executable, 'setup.py', 'install', '--root', './install'], cwd=cpp_extensions_test_dir) if return_code != 0: return return_code if sys.platform != 'win32': return_code = shell([sys.executable, 'setup.py', 'install', '--root', './install'], cwd=os.path.join(cpp_extensions_test_dir, 'no_python_abi_suffix_test')) if return_code != 0: return return_code python_path = os.environ.get('PYTHONPATH', '') try: cpp_extensions = os.path.join(test_directory, 'cpp_extensions') install_directory = '' # install directory is the one that is named site-packages for root, directories, _ in os.walk(os.path.join(cpp_extensions, 'install')): for directory in directories: if '-packages' in directory: install_directory = os.path.join(root, directory) assert install_directory, 'install_directory must not be empty' os.environ['PYTHONPATH'] = os.pathsep.join([install_directory, python_path]) return run_test(executable, test_module, test_directory, options) finally: os.environ['PYTHONPATH'] = python_path
def test_cpp_extensions(executable, test_module, test_directory, options): try: cpp_extension.verify_ninja_availability() except RuntimeError: print( 'Ninja is not available. Skipping C++ extensions test. ' "Install ninja with 'pip install ninja' or 'conda install ninja'.") return 0 return_code = shell( [sys.executable, 'setup.py', 'install', '--root', './install'], os.path.join(test_directory, 'cpp_extensions')) if return_code != 0: return return_code python_path = os.environ.get('PYTHONPATH', '') try: cpp_extensions = os.path.join(test_directory, 'cpp_extensions') install_directory = '' # install directory is the one that is named site-packages for root, directories, _ in os.walk( os.path.join(cpp_extensions, 'install')): for directory in directories: if '-packages' in directory: install_directory = os.path.join(root, directory) assert install_directory, 'install_directory must not be empty' os.environ['PYTHONPATH'] = os.pathsep.join( [install_directory, python_path]) return run_test(executable, test_module, test_directory, options) finally: os.environ['PYTHONPATH'] = python_path
def _test_cpp_extensions_aot(test_directory, options, use_ninja): if use_ninja: try: cpp_extension.verify_ninja_availability() except RuntimeError: print(CPP_EXTENSIONS_ERROR) return 1 # Wipe the build folder, if it exists already cpp_extensions_test_dir = os.path.join(test_directory, "cpp_extensions") cpp_extensions_test_build_dir = os.path.join(cpp_extensions_test_dir, "build") if os.path.exists(cpp_extensions_test_build_dir): shutil.rmtree(cpp_extensions_test_build_dir) # Build the test cpp extensions modules shell_env = os.environ.copy() shell_env["USE_NINJA"] = str(1 if use_ninja else 0) cmd = [sys.executable, "setup.py", "install", "--root", "./install"] return_code = shell(cmd, cwd=cpp_extensions_test_dir, env=shell_env) if return_code != 0: return return_code if sys.platform != "win32": return_code = shell( cmd, cwd=os.path.join(cpp_extensions_test_dir, "no_python_abi_suffix_test"), env=shell_env, ) if return_code != 0: return return_code # "install" the test modules and run tests python_path = os.environ.get("PYTHONPATH", "") from shutil import copyfile test_module = "test_cpp_extensions_aot" + ("_ninja" if use_ninja else "_no_ninja") copyfile( test_directory + "/test_cpp_extensions_aot.py", test_directory + "/" + test_module + ".py", ) try: cpp_extensions = os.path.join(test_directory, "cpp_extensions") install_directory = "" # install directory is the one that is named site-packages for root, directories, _ in os.walk( os.path.join(cpp_extensions, "install")): for directory in directories: if "-packages" in directory: install_directory = os.path.join(root, directory) assert install_directory, "install_directory must not be empty" os.environ["PYTHONPATH"] = os.pathsep.join( [install_directory, python_path]) return run_test(test_module, test_directory, options) finally: os.environ["PYTHONPATH"] = python_path if os.path.exists(test_directory + "/" + test_module + ".py"): os.remove(test_directory + "/" + test_module + ".py")
def test_cpp_extensions(python, test_module, test_directory, options): try: cpp_extension.verify_ninja_availability() except RuntimeError: print( 'Ninja is not available. Skipping C++ extensions test. ' "Install ninja with 'pip install ninja' or 'conda install ninja'.") return 0 return_code = shell('{} setup.py install --root ./install'.format(python), os.path.join(test_directory, 'cpp_extensions')) if return_code != 0: return return_code python_path = os.environ.get('PYTHONPATH', '') try: cpp_extensions = os.path.join(test_directory, 'cpp_extensions') install_directory = '' # install directory is the one that is named site-packages for root, directories, _ in os.walk(os.path.join(cpp_extensions, 'install')): for directory in directories: if '-packages' in directory: install_directory = os.path.join(root, directory) assert install_directory, 'install_directory must not be empty' os.environ['PYTHONPATH'] = os.pathsep.join([install_directory, python_path]) return run_test(python, test_module, test_directory, options) finally: os.environ['PYTHONPATH'] = python_path
def _test_cpp_extensions_aot(test_directory, options, use_ninja): if use_ninja: try: cpp_extension.verify_ninja_availability() except RuntimeError: print(CPP_EXTENSIONS_ERROR) return 1 # Wipe the build folder, if it exists already cpp_extensions_test_dir = os.path.join(test_directory, 'cpp_extensions') cpp_extensions_test_build_dir = os.path.join(cpp_extensions_test_dir, 'build') if os.path.exists(cpp_extensions_test_build_dir): shutil.rmtree(cpp_extensions_test_build_dir) # Build the test cpp extensions modules shell_env = os.environ.copy() shell_env['USE_NINJA'] = str(1 if use_ninja else 0) cmd = [sys.executable, 'setup.py', 'install', '--root', './install'] return_code = shell(cmd, cwd=cpp_extensions_test_dir, env=shell_env) if return_code != 0: return return_code if sys.platform != 'win32': return_code = shell(cmd, cwd=os.path.join(cpp_extensions_test_dir, 'no_python_abi_suffix_test'), env=shell_env) if return_code != 0: return return_code # "install" the test modules and run tests python_path = os.environ.get('PYTHONPATH', '') from shutil import copyfile test_module = 'test_cpp_extensions_aot' + ('_ninja' if use_ninja else '_no_ninja') copyfile(test_directory + '/test_cpp_extensions_aot.py', test_directory + '/' + test_module + '.py') try: cpp_extensions = os.path.join(test_directory, 'cpp_extensions') install_directory = '' # install directory is the one that is named site-packages for root, directories, _ in os.walk( os.path.join(cpp_extensions, 'install')): for directory in directories: if '-packages' in directory: install_directory = os.path.join(root, directory) assert install_directory, 'install_directory must not be empty' os.environ['PYTHONPATH'] = os.pathsep.join( [install_directory, python_path]) return run_test(test_module, test_directory, options) finally: os.environ['PYTHONPATH'] = python_path if os.path.exists(test_directory + '/' + test_module + '.py'): os.remove(test_directory + '/' + test_module + '.py')
def test_cpp_extensions(python, test_module, test_directory, options): try: cpp_extension.verify_ninja_availability() except RuntimeError: print( 'Ninja is not available. Skipping C++ extensions test. ' "Install ninja with 'pip install ninja' or 'conda install ninja'.") return 0 return_code = shell('{} setup.py install --root ./install'.format(python), os.path.join(test_directory, 'cpp_extensions')) if return_code != 0: return return_code python_path = os.environ.get('PYTHONPATH', '') try: cpp_extensions = os.path.join(test_directory, 'cpp_extensions') if sys.platform == 'win32': install_directory = os.path.join(cpp_extensions, 'install') install_directories = get_shell_output( "where -r \"{}\" *.pyd".format(install_directory)).split( '\r\n') assert install_directories, 'install_directory must not be empty' if len(install_directories) >= 1: install_directory = install_directories[0] install_directory = os.path.dirname(install_directory) split_char = ';' else: install_directory = get_shell_output( "find {}/install -name *-packages".format(cpp_extensions)) split_char = ':' assert install_directory, 'install_directory must not be empty' install_directory = os.path.join(test_directory, install_directory) os.environ['PYTHONPATH'] = '{}{}{}'.format(install_directory, split_char, python_path) return run_test(python, test_module, test_directory, options) finally: os.environ['PYTHONPATH'] = python_path
from pathlib import Path import os, sys _srcdir = Path(__file__).parent from torch.utils.cpp_extension import load, verify_ninja_availability try: verify_ninja_availability() except: os.environ['PATH'] = str(Path(sys.executable).parent) + ":" + os.environ['PATH'] nppig_cpp = load(verbose=False, name="nppig_cpp", sources=[_srcdir / "nppig.cpp"], extra_ldflags=['-lnppc', '-lnppig'], with_cuda=True, build_directory=Path.home() / "tmp")