38 lines
1.1 KiB
Python
38 lines
1.1 KiB
Python
|
from numba import float64, uint32
|
||
|
from numba.cuda.compiler import compile_ptx
|
||
|
from numba.cuda.testing import skip_on_cudasim, unittest
|
||
|
|
||
|
|
||
|
@skip_on_cudasim('Compilation unsupported in the simulator')
|
||
|
class TestCudaMandel(unittest.TestCase):
|
||
|
def test_mandel(self):
|
||
|
"""Just make sure we can compile this
|
||
|
"""
|
||
|
|
||
|
def mandel(tid, min_x, max_x, min_y, max_y, width, height, iters):
|
||
|
pixel_size_x = (max_x - min_x) / width
|
||
|
pixel_size_y = (max_y - min_y) / height
|
||
|
|
||
|
x = tid % width
|
||
|
y = tid / width
|
||
|
|
||
|
real = min_x + x * pixel_size_x
|
||
|
imag = min_y + y * pixel_size_y
|
||
|
|
||
|
c = complex(real, imag)
|
||
|
z = 0.0j
|
||
|
|
||
|
for i in range(iters):
|
||
|
z = z * z + c
|
||
|
if (z.real * z.real + z.imag * z.imag) >= 4:
|
||
|
return i
|
||
|
return iters
|
||
|
|
||
|
args = (uint32, float64, float64, float64, float64,
|
||
|
uint32, uint32, uint32)
|
||
|
compile_ptx(mandel, args, device=True)
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
unittest.main()
|