cython中的关键部分

问题描述 投票:3回答:1

在cython中使用prange时如何处理cython中的关键部分?

是否允许#pragma omp严重?

for e in prange(num,nogil=True,num_threads=4):
.
.
.
  #pragma omp critical
  cs
.
.
.
end_for
python c++ openmp cython critical-section
1个回答
0
投票

要处理关键部分,您可以使用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)
        .
        .
        .
© www.soinside.com 2019 - 2024. All rights reserved.