コード例 #1
0
ファイル: test_module.py プロジェクト: prannamalai/nitrous
    def setUp(self):
        from nitrous.module import CppLibrary
        from tempfile import NamedTemporaryFile

        self.module_1 = NamedTemporaryFile(suffix=".c")
        self.module_1.write(MODULE_1)
        self.module_1.flush()
        self.addCleanup(self.module_1.close)

        self.module_2 = NamedTemporaryFile(suffix=".c")
        self.module_2.write(MODULE_2)
        self.module_2.flush()
        self.addCleanup(self.module_2.close)

        sources = [self.module_1.name, self.module_2.name]
        self.lib = CppLibrary(sources=sources, compile_args=["-O2"])
コード例 #2
0
ファイル: test_module.py プロジェクト: dtcaciuc/nitrous
    def setUp(self):
        from nitrous.module import CppLibrary
        from tempfile import NamedTemporaryFile

        self.module_1 = NamedTemporaryFile(suffix=".c")
        self.module_1.write(MODULE_1)
        self.module_1.flush()
        self.addCleanup(self.module_1.close)

        self.module_2 = NamedTemporaryFile(suffix=".c")
        self.module_2.write(MODULE_2)
        self.module_2.flush()
        self.addCleanup(self.module_2.close)

        sources = [self.module_1.name, self.module_2.name]
        self.lib = CppLibrary(sources=sources, compile_args=["-O2"])
コード例 #3
0
ファイル: test_module.py プロジェクト: dtcaciuc/nitrous
class CppLibraryTests(unittest.TestCase):

    def setUp(self):
        from nitrous.module import CppLibrary
        from tempfile import NamedTemporaryFile

        self.module_1 = NamedTemporaryFile(suffix=".c")
        self.module_1.write(MODULE_1)
        self.module_1.flush()
        self.addCleanup(self.module_1.close)

        self.module_2 = NamedTemporaryFile(suffix=".c")
        self.module_2.write(MODULE_2)
        self.module_2.flush()
        self.addCleanup(self.module_2.close)

        sources = [self.module_1.name, self.module_2.name]
        self.lib = CppLibrary(sources=sources, compile_args=["-O2"])

    def test_compile(self):
        from nitrous.llvm import GetNamedFunction

        m = self.lib.create_module()

        self.assertTrue(GetNamedFunction(m, "axpy"))
        self.assertTrue(GetNamedFunction(m, "multiply"))

    def test_run(self):
        from nitrous.module import jit_module, so_module
        from nitrous.function import function, c_function
        from nitrous.types import Float

        axpy = c_function("axpy", Float, [Float, Float, Float])
        multiply = c_function("multiply", Float, [Float, Float])

        @function(Float, a=Float, b=Float, c=Float)
        def foo(a, b, c):
            return axpy(a, b, c) + multiply(a, c)

        a, b, c = 11, 23, 7
        ref = (a * b + c) + a * c

        jit_m = jit_module([foo], libs=[self.lib])
        self.assertEqual(jit_m.foo(a, b, c), ref)

        so_m = so_module([foo], libs=[self.lib])
        self.assertEqual(so_m.foo(a, b, c), ref)
コード例 #4
0
ファイル: test_module.py プロジェクト: prannamalai/nitrous
class CppLibraryTests(unittest.TestCase):
    def setUp(self):
        from nitrous.module import CppLibrary
        from tempfile import NamedTemporaryFile

        self.module_1 = NamedTemporaryFile(suffix=".c")
        self.module_1.write(MODULE_1)
        self.module_1.flush()
        self.addCleanup(self.module_1.close)

        self.module_2 = NamedTemporaryFile(suffix=".c")
        self.module_2.write(MODULE_2)
        self.module_2.flush()
        self.addCleanup(self.module_2.close)

        sources = [self.module_1.name, self.module_2.name]
        self.lib = CppLibrary(sources=sources, compile_args=["-O2"])

    def test_compile(self):
        from nitrous.llvm import GetNamedFunction

        m = self.lib.create_module()

        self.assertTrue(GetNamedFunction(m, "axpy"))
        self.assertTrue(GetNamedFunction(m, "multiply"))

    def test_run(self):
        from nitrous.module import jit_module, so_module
        from nitrous.function import function, c_function
        from nitrous.types import Float

        axpy = c_function("axpy", Float, [Float, Float, Float])
        multiply = c_function("multiply", Float, [Float, Float])

        @function(Float, a=Float, b=Float, c=Float)
        def foo(a, b, c):
            return axpy(a, b, c) + multiply(a, c)

        a, b, c = 11, 23, 7
        ref = (a * b + c) + a * c

        jit_m = jit_module([foo], libs=[self.lib])
        self.assertEqual(jit_m.foo(a, b, c), ref)

        so_m = so_module([foo], libs=[self.lib])
        self.assertEqual(so_m.foo(a, b, c), ref)