在cython中使用prange时如何处理cython中的关键部分?
是否允许#pragma omp严重?
for e in prange(num,nogil=True,num_threads=4):
.
.
.
#pragma omp critical
cs
.
.
.
end_for
要处理关键部分,您可以使用openmp锁。要执行此操作,请使用它
cimport openmp
然后初始化它
cdef openmp.omp_lock_t lock
openmp.omp_init_lock(&lock)
并以这种方式使用它
with nogil, cython.boundscheck(False), cython.wraparound(False):
for i in parallel.prange(n, schedule = 'static',
num_threads = num_threads):
.
.
.
openmp.omp_set_lock(&lock)
cs
openmp.omp_unset_lock(&lock)
.
.
.