Yan*_*Leo 5 c++ python openmp cython critical-section
在 cython 中使用 prange 时如何处理 cython 中的关键部分?
#pragma omp important是否允许?
for e in prange(num,nogil=True,num_threads=4):
.
.
.
#pragma omp critical
cs
.
.
.
end_for
Run Code Online (Sandbox Code Playgroud)
小智 3
要处理关键部分,您可以使用 openmp 锁。为此,请使用以下命令导入它
cimport openmp
Run Code Online (Sandbox Code Playgroud)
然后初始化它
cdef openmp.omp_lock_t lock
openmp.omp_init_lock(&lock)
Run Code Online (Sandbox Code Playgroud)
并这样使用它
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)
.
.
.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1370 次 |
| 最近记录: |