def compile_so(): """ Compile .so file by running setup.py config. """ # build .so with setup.py file_dir = os.path.dirname(os.path.abspath(__file__)) cmd = 'cd {} && python setup_build.py build'.format(file_dir) run_cmd(cmd)
def setUp(self): cur_dir = os.path.dirname(os.path.abspath(__file__)) # compile, install the custom op egg into site-packages under background if os.name == 'nt': cmd = 'cd /d {} && python custom_relu_setup.py install'.format( cur_dir) else: cmd = 'cd {} && python custom_relu_setup.py install'.format( cur_dir) run_cmd(cmd) # NOTE(Aurelius84): Normally, it's no need to add following codes for users. # But we simulate to pip install in current process, so interpreter don't snap # sys.path has been updated. So we update it manually. # See: https://stackoverflow.com/questions/56974185/import-runtime-installed-module-using-pip-in-python-3 if os.name == 'nt': # NOTE(zhouwei25): getsitepackages on windows will return a list: [python install dir, site packages dir] site_dir = site.getsitepackages()[1] else: site_dir = site.getsitepackages()[0] custom_egg_path = [ x for x in os.listdir(site_dir) if 'custom_relu_module_setup' in x ] assert len(custom_egg_path ) == 1, "Matched egg number is %d." % len(custom_egg_path) sys.path.append(os.path.join(site_dir, custom_egg_path[0])) # usage: import the package directly import custom_relu_module_setup # `custom_relu_dup` is same as `custom_relu_dup` self.custom_ops = [ custom_relu_module_setup.custom_relu, custom_relu_module_setup.custom_relu_dup ] self.dtypes = ['float32', 'float64'] if paddle.is_compiled_with_cuda(): self.dtypes.append('float16') self.devices = ['cpu'] if paddle.is_compiled_with_cuda(): self.devices.append('gpu') # config seed SEED = 2021 paddle.seed(SEED) paddle.framework.random._manual_program_seed(SEED)
def setUp(self): cur_dir = os.path.dirname(os.path.abspath(__file__)) # compile, install the custom op egg into site-packages under background cmd = 'cd {} && python setup_install.py install'.format(cur_dir) run_cmd(cmd) # NOTE(Aurelius84): Normally, it's no need to add following codes for users. # But we simulate to pip install in current process, so interpreter don't snap # sys.path has been updated. So we update it manually. # See: https://stackoverflow.com/questions/56974185/import-runtime-installed-module-using-pip-in-python-3 site_dir = site.getsitepackages()[0] custom_egg_path = [ x for x in os.listdir(site_dir) if 'custom_relu2' in x ] assert len(custom_egg_path ) == 1, "Matched egg number is %d." % len(custom_egg_path) sys.path.append(os.path.join(site_dir, custom_egg_path[0]))
import unittest import numpy as np import paddle from paddle.utils.cpp_extension import load, get_build_directory from utils import paddle_includes, extra_cc_args, extra_nvcc_args from paddle.utils.cpp_extension.extension_utils import run_cmd from paddle.fluid.framework import _test_eager_guard # Because Windows don't use docker, the shared lib already exists in the # cache dir, it will not be compiled again unless the shared lib is removed. file = '{}\\custom_attrs_jit\\custom_attrs_jit.pyd'.format( get_build_directory()) if os.name == 'nt' and os.path.isfile(file): cmd = 'del {}'.format(file) run_cmd(cmd, True) # Compile and load custom op Just-In-Time. custom_attrs = load( name='custom_attrs_jit', sources=['attr_test_op.cc'], extra_include_paths=paddle_includes, # add for Coverage CI extra_cxx_cflags=extra_cc_args, # test for cflags extra_cuda_cflags=extra_nvcc_args, # test for cflags verbose=True) class TestJitCustomAttrs(unittest.TestCase): def setUp(self): paddle.set_device('cpu') # prepare test value
def test_exception(self): for verbose in [True, False]: with self.assertRaisesRegexp(RuntimeError, "Failed to run command"): cmd = "fake cmd" utils.run_cmd(cmd, verbose)