Sei sulla pagina 1di 2

Numba_Calculs

March 21, 2018

In [90]: import math


import numpy as np
from numba import vectorize

In [91]: a = np.random.random(10**7).astype(np.float64)
b = np.random.random(10**7).astype(np.float64)

In [92]: print("array size %0.2f Mb" % (a.nbytes / 10**6))

array size 80.00 Mb

In [93]: @vectorize(["(float64, float64)"], target='cpu')


def sincos(x, y):
return math.sin(x) + math.cos(y)

In [94]: @vectorize(["(float64, float64)"], target='parallel')


def par_sincos(x, y):
return math.sin(x) + math.cos(y)

In [95]: @vectorize(["(float64, float64)"], target='cuda')


def cuda_sincos(x, y):
return math.sin(x) + math.cos(y)

In [96]: %timeit np.sin(a) + np.cos(b)

344 ms ś 18 ms per loop (mean ś std. dev. of 7 runs, 1 loop each)

In [97]: %timeit sincos(a, b)


%timeit par_sincos(a, b)
%timeit cuda_sincos(a, b)

263 ms ś 26.9 ms per loop (mean ś std. dev. of 7 runs, 1 loop each)
47.3 ms ś 957 ţs per loop (mean ś std. dev. of 7 runs, 10 loops each)
126 ms ś 8.95 ms per loop (mean ś std. dev. of 7 runs, 1 loop each)

1
In [98]: @vectorize(["float32,float32"], target='cuda')
def cuda_VectorAdd(a, b):
return a + b

@vectorize(["float32,float32"], target='parallel')
def parallel_VectorAdd(a, b):
return a + b

@vectorize(["float32,float32"], target='cpu')
def cpu_VectorAdd(a, b):
return a + b

def cuda_calc1():
N = 32000000
A = np.ones(N, dtype=np.float32)
B = np.ones(N, dtype=np.float32)
C = np.zeros(N, dtype=np.float32)

C = cuda_VectorAdd(A, B)

def par_calc1():
N = 32000000
A = np.ones(N, dtype=np.float32)
B = np.ones(N, dtype=np.float32)
C = np.zeros(N, dtype=np.float32)

C = parallel_VectorAdd(A, B)

def cpu_calc1():
N = 32000000
A = np.ones(N, dtype=np.float32)
B = np.ones(N, dtype=np.float32)
C = np.zeros(N, dtype=np.float32)

C = cpu_VectorAdd(A, B)

In [99]: %timeit cuda_calc1()


%timeit par_calc1()
%timeit cpu_calc1()

328 ms ś 16.8 ms per loop (mean ś std. dev. of 7 runs, 1 loop each)
194 ms ś 6.4 ms per loop (mean ś std. dev. of 7 runs, 1 loop each)
234 ms ś 14.3 ms per loop (mean ś std. dev. of 7 runs, 1 loop each)

1 Resultat

Potrebbero piacerti anche