55 lines
1.5 KiB
Python
55 lines
1.5 KiB
Python
|
import multiprocessing as mp
|
||
|
import traceback
|
||
|
from numba.cuda.testing import unittest, CUDATestCase
|
||
|
from numba.cuda.testing import (skip_on_cudasim, skip_under_cuda_memcheck,
|
||
|
skip_if_mvc_libraries_unavailable)
|
||
|
from numba.tests.support import linux_only
|
||
|
|
||
|
|
||
|
def child_test():
|
||
|
from numba import config, cuda
|
||
|
|
||
|
# Change the MVC config after importing numba.cuda
|
||
|
config.CUDA_ENABLE_MINOR_VERSION_COMPATIBILITY = 1
|
||
|
|
||
|
@cuda.jit
|
||
|
def f():
|
||
|
pass
|
||
|
|
||
|
f[1, 1]()
|
||
|
|
||
|
|
||
|
def child_test_wrapper(result_queue):
|
||
|
try:
|
||
|
output = child_test()
|
||
|
success = True
|
||
|
# Catch anything raised so it can be propagated
|
||
|
except: # noqa: E722
|
||
|
output = traceback.format_exc()
|
||
|
success = False
|
||
|
|
||
|
result_queue.put((success, output))
|
||
|
|
||
|
|
||
|
@linux_only
|
||
|
@skip_under_cuda_memcheck('May hang CUDA memcheck')
|
||
|
@skip_on_cudasim('Simulator does not require or implement MVC')
|
||
|
@skip_if_mvc_libraries_unavailable
|
||
|
class TestMinorVersionCompatibility(CUDATestCase):
|
||
|
def test_mvc(self):
|
||
|
# Run test with Minor Version Compatibility enabled in a child process
|
||
|
ctx = mp.get_context('spawn')
|
||
|
result_queue = ctx.Queue()
|
||
|
proc = ctx.Process(target=child_test_wrapper, args=(result_queue,))
|
||
|
proc.start()
|
||
|
proc.join()
|
||
|
success, output = result_queue.get()
|
||
|
|
||
|
# Ensure the child process ran to completion before checking its output
|
||
|
if not success:
|
||
|
self.fail(output)
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
unittest.main()
|