mirror of
https://github.com/PacktPublishing/Hands-On-GPU-Programming-with-CUDA-C-and-Python-3.x-Second-Edition.git
synced 2025-07-21 21:01:06 +02:00
Create simple_element_kernel_example0.py
This commit is contained in:
31
Chapter03/simple_element_kernel_example0.py
Normal file
31
Chapter03/simple_element_kernel_example0.py
Normal file
@@ -0,0 +1,31 @@
|
||||
import numpy as np
|
||||
import pycuda.autoinit
|
||||
from pycuda import gpuarray
|
||||
from time import time
|
||||
from pycuda.elementwise import ElementwiseKernel
|
||||
|
||||
host_data = np.float32( np.random.random(50000000) )
|
||||
|
||||
gpu_2x_ker = ElementwiseKernel(
|
||||
"float *in, float *out",
|
||||
"out[i] = 2*in[i];",
|
||||
"gpu_2x_ker")
|
||||
|
||||
def speedcomparison():
|
||||
t1 = time()
|
||||
host_data_2x = host_data * np.float32(2)
|
||||
t2 = time()
|
||||
print('total time to compute on CPU: %f' % (t2 - t1))
|
||||
device_data = gpuarray.to_gpu(host_data)
|
||||
# allocate memory for output
|
||||
device_data_2x = gpuarray.empty_like(device_data)
|
||||
t1 = time()
|
||||
gpu_2x_ker(device_data, device_data_2x)
|
||||
t2 = time()
|
||||
from_device = device_data_2x.get()
|
||||
print('total time to compute on GPU: %f' % (t2 - t1))
|
||||
print('Is the host computation the same as the GPU computation? : {}'.format(np.allclose(from_device, host_data_2x) ))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
speedcomparison()
|
Reference in New Issue
Block a user