38 lines
903 B
Python
38 lines
903 B
Python
|
import numpy as np
|
||
|
from numba import cuda
|
||
|
from numba.cuda.testing import unittest, CUDATestCase
|
||
|
|
||
|
|
||
|
def foo(inp, out):
|
||
|
for i in range(out.shape[0]):
|
||
|
out[i] = inp[i]
|
||
|
|
||
|
|
||
|
def copy(inp, out):
|
||
|
i = cuda.grid(1)
|
||
|
cufoo(inp[i, :], out[i, :])
|
||
|
|
||
|
|
||
|
class TestCudaSlicing(CUDATestCase):
|
||
|
def test_slice_as_arg(self):
|
||
|
global cufoo
|
||
|
cufoo = cuda.jit("void(int32[:], int32[:])", device=True)(foo)
|
||
|
cucopy = cuda.jit("void(int32[:,:], int32[:,:])")(copy)
|
||
|
|
||
|
inp = np.arange(100, dtype=np.int32).reshape(10, 10)
|
||
|
out = np.zeros_like(inp)
|
||
|
|
||
|
cucopy[1, 10](inp, out)
|
||
|
|
||
|
def test_assign_empty_slice(self):
|
||
|
# Issue #5017. Assigning to an empty slice should not result in a
|
||
|
# CudaAPIError.
|
||
|
N = 0
|
||
|
a = range(N)
|
||
|
arr = cuda.device_array(len(a))
|
||
|
arr[:] = cuda.to_device(a)
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
unittest.main()
|