- Back to Home »
- tensor vs numpy computation
Posted by : Sushanth
Wednesday, 5 January 2022
Below code snippet compares the computation time of using tensor in place of numpy
CPU:
Numpy Code:
%%time
for i in range(10):
a = np.random.randn(10000,10000)
b = np.random.randn(10000,10000)
c = a + b
CPU times: user 1min 20s, sys: 813 ms, total: 1min 20s
Wall time: 1min 20s
Tensor
%%time
for i in range(10):
a = torch.randn([10000, 10000])
b = torch.randn([10000, 10000])
c = a + b
CPU times: user 17.1 s, sys: 81.1 ms, total: 17.2 s
Wall time: 17.1 s
Based on computation time, tensor is nearly 7x times faster than numpy
GPU:
import torch
print(torch.cuda.device_count())
print(torch.cuda.device(0))
print(torch.cuda.get_device_name(0))
cuda0 = torch.device('cuda:0')
%%time
for i in range(10):
a = torch.randn([10000, 10000], device=cuda0)
b = torch.randn([10000, 10000], device=cuda0)
b.add_(a)
CPU times: user 1.39 ms, sys: 0 ns, total: 1.39 ms
Wall time: 1.75 ms
Computation wise a lot better compared to CPU
===========================
CUDA (Compute Unified Device Architecture) is a parallel computing platform and application programming interface (API) model created by Nvidia.It allows software developers and software engineers to use a CUDA-enabled graphics processing unit (GPU) for general purpose processing – an approach termed GPGPU (General-Purpose computing on Graphics Processing Units). The CUDA platform is a software layer that gives direct access to the GPU's virtual instruction set and parallel computational elements, for the execution of compute kernels
The CUDA platform is designed to work with programming languages such as C, C++, and Fortran. This accessibility makes it easier for specialists in parallel programming to use GPU resources, in contrast to prior APIs like Direct3D and OpenGL, which required advanced skills in graphics programming.[3] CUDA-powered GPUs also support programming frameworks such as OpenACC and OpenCL;and HIP by compiling such code to CUDA.