File: C:/Users/fred/anaconda3/Lib/site-packages/numba/cuda/tests/cudapy/cache_with_cpu_usecases.py
import sys
from numba import cuda, njit
from numba.cuda.testing import CUDATestCase
from numba.cuda.tests.cudapy.cache_usecases import CUDAUseCase, UseCase
class CPUUseCase(UseCase):
def _call(self, ret, *args):
self._func(ret, *args)
# Using the same function as a cached CPU and CUDA-jitted function
def target_shared_assign(r, x):
r[()] = x[()]
assign_cuda_kernel = cuda.jit(cache=True)(target_shared_assign)
assign_cuda = CUDAUseCase(assign_cuda_kernel)
assign_cpu_jitted = njit(cache=True)(target_shared_assign)
assign_cpu = CPUUseCase(assign_cpu_jitted)
class _TestModule(CUDATestCase):
"""
Tests for functionality of this module's functions.
Note this does not define any "test_*" method, instead check_module()
should be called by hand.
"""
def check_module(self, mod):
self.assertPreciseEqual(mod.assign_cpu(5), 5)
self.assertPreciseEqual(mod.assign_cpu(5.5), 5.5)
self.assertPreciseEqual(mod.assign_cuda(5), 5)
self.assertPreciseEqual(mod.assign_cuda(5.5), 5.5)
def self_test():
mod = sys.modules[__name__]
_TestModule().check_module(mod)