OMP: Error #131: Thread identifier invalid. when use Numba @njit(nogil=True, parallel=True)

Viewed 100

I want to speed up my code by parallel in Numba (0.55.1 version) as below: As it contain a for loop, I want to speed it up by parallel computing with Numba

from numba import prange
from numba import njit
import numpy as np
from numpy import linalg as LA
import time

@njit(nogil=True)
def func(n):
    nprime = n-1
    main = np.sqrt(2.) * np.random.normal(0., 1., (nprime))
    off = np.random.normal(0., 1., (nprime, nprime))
    tril = np.tril(off, -1)
    W_n = tril + tril.T
    np.fill_diagonal(W_n, main)

    eigenvalues = LA.eigvals(W_n)
    return np.sort(eigenvalues)[::-1][0:2]

@njit(nogil=True, parallel=True)
def GOE_L12_sim_pa(n=200, rep=500):
    for x0 in prange(rep):
        func(n)

start = time.time()
GOE_L12_sim_pa()
end = time.time()
print(end-start)

Error:

OMP: Error #131: Thread identifier invalid.
OMP: Error #131: Thread identifier invalid.

Noting that it works when I change the decorator from @njit(nogil=True, parallel=True) to @njit(nogil=True).

0 Answers
Related