diff options
Diffstat (limited to 'test.py')
-rw-r--r-- | test.py | 16 |
1 files changed, 10 insertions, 6 deletions
@@ -20,16 +20,16 @@ print 'device %s' % autoinit.device.name() source_directory = os.path.split(os.path.realpath(__file__))[0] + '/src' source = open(source_directory + '/kernel.cu').read() -mod = SourceModule(source, options=['-I ' + source_directory], no_extern_c=True, arch='sm_13') +mod = SourceModule(source, options=['-I ' + source_directory], no_extern_c=True, cache_dir=False) intersect_mesh = mod.get_function('intersect_mesh') rotate = mod.get_function('rotate') size = width, height = 800, 600 screen = pygame.display.set_mode(size) camera = Camera(size) -camera.position((0,300,0)) +camera.position((0,300,50)) -origin, direction = camera.get_pixels() +origin, direction = camera.get_rays() for i in range(direction.shape[0]): direction[i] /= np.linalg.norm(direction[i]) @@ -39,9 +39,10 @@ origin, direction = make_vector(origin), make_vector(direction) origin_gpu = cuda.to_device(origin) direction_gpu = cuda.to_device(direction) +solid = Solid(read_stl('models/tie_interceptor6.stl'), vacuum, vacuum) geometry = Geometry() -geometry.add_mesh(read_stl('models/tie_interceptor6.stl'), vacuum, vacuum) -geometry.build(bits=16) +geometry.add_solid(solid) +geometry.build() mesh = geometry.mesh mesh = mesh.reshape(mesh.shape[0]*3,3) @@ -79,13 +80,16 @@ child_len_tex.set_format(cuda.array_format.UNSIGNED_INT32, 1) pixels = np.empty(width*height, dtype=np.int32) pixels_gpu = cuda.to_device(pixels) +states = np.empty(width*height, dtype=np.int32) +states_gpu = cuda.to_device(states) + block_size = 64 for i in range(100): rotate(np.int32(origin.size), origin_gpu, np.float32(np.pi/100), gpuarray.vec.make_float3(0,0,1), block=(block_size,1,1), grid=(width*height//block_size+1,1)) rotate(np.int32(direction.size), direction_gpu, np.float32(np.pi/100), gpuarray.vec.make_float3(0,0,1), block=(block_size,1,1), grid=(width*height//block_size+1,1)) t0 = time.time() - intersect_mesh(np.int32(origin.size), origin_gpu, direction_gpu, pixels_gpu, first_leaf, block=(block_size,1,1), grid=(width*height//block_size+1,1), texrefs=[mesh_tex, lower_bound_tex, upper_bound_tex, child_map_tex, child_len_tex]) + intersect_mesh(np.int32(origin.size), origin_gpu, direction_gpu, pixels_gpu, first_leaf, states_gpu, block=(block_size,1,1), grid=(width*height//block_size+1,1), texrefs=[mesh_tex, lower_bound_tex, upper_bound_tex, child_map_tex, child_len_tex]) cuda.Context.synchronize() elapsed = time.time() - t0 |