I am trying to perform parallel computing using numba, however, I encountered a problem: using the following code, it is significantly slower if I switch parallel=True on compare to switching it off.
import numpy as np
from numba import njit, prange
from numba.typed import List
import time
n = 1000
@njit(parallel = True)
def lamb(now):
timez = List()
k1 = List()
k = 0
for i in range(n):
timez.append(np.arange(i+1))
k1.append( len(timez[i][timez[i]<=now]) )
for i in prange(n):
k += k1[i]
return k
lamb(21)
start = time.time()
lamb(21)
end = time.time()
print("Elapsed (after compilation) = %s" % (end - start))
If parallel = True
, the elapsed time is Elapsed (after compilation) = 0.012674093246459961
. In comparasion, if parallel = False
, the elapsed time is Elapsed (after compilation) = 0.007932901382446289
.
Any idea why this is the case?