Unverified Commit e839afbb authored by Mccaskey, Alex's avatar Mccaskey, Alex Committed by GitHub
Browse files

Merge pull request #77 from tnguyen-ornl/tnguyen/new-qjit-fix

Fix SegFault in QJIT tests
parents ea8dbc15 42bf0e12
Loading
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -17,6 +17,14 @@ List = typing.List
Tuple = typing.Tuple
MethodType = types.MethodType

# Static cache of all Python QJIT objects that have been created.
# There seems to be a bug when a Python interpreter tried to create a new QJIT
# *after* a previous QJIT is destroyed.
# Note: this could only occur when QJIT kernels were declared in local scopes.
# i.e. multiple kernels all declared in global scope don't have this issue.
# Hence, to be safe, we cache all the QJIT objects ever created until QCOR module is unloaded.
QJIT_OBJ_CACHE = []

PauliOperator = xacc.quantum.PauliOperator
FermionOperator = xacc.quantum.FermionOperator 
FLOAT_REF = typing.NewType('value', float)
@@ -403,6 +411,7 @@ class qjit(object):
            self.src, self.sorted_kernel_dep, self.extra_cpp_code, extra_headers)
        self._qjit.write_cache()
        self.__compiled__kernels.append(self.function.__name__)
        QJIT_OBJ_CACHE.append(self)
        return

    # Static list of all kernels compiled
+18 −18
Original line number Diff line number Diff line
@@ -5,23 +5,23 @@ add_test (NAME qcor_quasimo_python_bindings
set_tests_properties(qcor_quasimo_python_bindings
    PROPERTIES ENVIRONMENT "PYTHONPATH=${CMAKE_INSTALL_PREFIX}:$ENV{PYTHONPATH}")

#add_test (NAME qcor_simple_kernel_jit_python
#  COMMAND ${Python_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test_kernel_jit.py 
#  WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
#)
#set_tests_properties(qcor_simple_kernel_jit_python
#    PROPERTIES ENVIRONMENT "PYTHONPATH=${CMAKE_INSTALL_PREFIX}:$ENV{PYTHONPATH}")
add_test (NAME qcor_simple_kernel_jit_python
 COMMAND ${Python_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test_kernel_jit.py 
 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
set_tests_properties(qcor_simple_kernel_jit_python
   PROPERTIES ENVIRONMENT "PYTHONPATH=${CMAKE_INSTALL_PREFIX}:$ENV{PYTHONPATH}")

#add_test (NAME qcor_test_qcor_spec_api
#    COMMAND ${Python_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test_qcor_spec_api.py 
#    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
#  )
#  set_tests_properties(qcor_test_qcor_spec_api
#      PROPERTIES ENVIRONMENT "PYTHONPATH=${CMAKE_INSTALL_PREFIX}:$ENV{PYTHONPATH}")
add_test (NAME qcor_test_qcor_spec_api
   COMMAND ${Python_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test_qcor_spec_api.py 
   WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
 )
 set_tests_properties(qcor_test_qcor_spec_api
     PROPERTIES ENVIRONMENT "PYTHONPATH=${CMAKE_INSTALL_PREFIX}:$ENV{PYTHONPATH}")

#add_test (NAME qcor_kernel_ftqc_python
#  COMMAND ${Python_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test_kernel_ftqc.py -qrt ftqc
#  WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
#)
#set_tests_properties(qcor_kernel_ftqc_python
#    PROPERTIES ENVIRONMENT "PYTHONPATH=${CMAKE_INSTALL_PREFIX}:$ENV{PYTHONPATH}")
 No newline at end of file
add_test (NAME qcor_kernel_ftqc_python
 COMMAND ${Python_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test_kernel_ftqc.py -qrt ftqc
 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
set_tests_properties(qcor_kernel_ftqc_python
   PROPERTIES ENVIRONMENT "PYTHONPATH=${CMAKE_INSTALL_PREFIX}:$ENV{PYTHONPATH}")
 No newline at end of file
+12 −0
Original line number Diff line number Diff line
@@ -34,6 +34,12 @@ class TestKernelJIT(unittest.TestCase):
        self.assertAlmostEqual(energy, -1.74, places=1)

    def test_rewrite_decompose(self):
        try:
           import numpy as np
        except:
            print('No numpy, cant run test_rewrite_decompose')
            return

        set_qpu('qpp', {'shots':1024})
        @qjit
        def foo(q : qreg):
@@ -104,6 +110,12 @@ class TestKernelJIT(unittest.TestCase):
        self.assertTrue(counts['001'] == 1024)
    
    def test_more_decompose(self):
        try:
           import numpy as np
        except:
            print('No numpy, cant run test_more_decompose')
            return

        set_qpu('qpp', {'shots':1024})
       
        @qjit