Revert scatsystem cython parallelisation.

It didn't work correctly on my laptop.
This must be reviewed later, as the waiting is annoying.
This commit is contained in:
Marek Nečada 2021-12-08 14:18:32 +02:00
parent 227aaf4021
commit b088464e3e
2 changed files with 23 additions and 23 deletions

View File

@ -17,8 +17,8 @@ from .cymaterials cimport EpsMuGenerator, EpsMu
from libc.stdlib cimport malloc, free, calloc
import warnings
from cython.parallel cimport prange, parallel
from cython cimport boundscheck, wraparound
from cython.parallel import prange, parallel
from cython import boundscheck, wraparound
# Set custom GSL error handler. N.B. this is obviously not thread-safe.
cdef char *pgsl_err_reason
@ -956,8 +956,8 @@ cdef class ScatteringSystem:
cdef ccart3_t res
cdef cart3_t pos
cdef Py_ssize_t i
with nogil, parallel(), boundscheck(False), wraparound(False):
for i in prange(evalpos_a.shape[0]):
with nogil:
for i in range(evalpos_a.shape[0]):
pos.x = evalpos_a[i,0]
pos.y = evalpos_a[i,1]
pos.z = evalpos_a[i,2]
@ -997,6 +997,7 @@ def empty_lattice_modes_xy(EpsMu epsmu, reciprocal_basis, wavevector, double max
free(omegas_c)
return omegas
cdef class _ScatteringSystemAtOmegaK:
'''
Wrapper over the C qpms_scatsys_at_omega_k_t structure
@ -1042,8 +1043,8 @@ cdef class _ScatteringSystemAtOmegaK:
cdef ccart3_t res
cdef cart3_t pos
cdef Py_ssize_t i
with nogil, wraparound(False), parallel():
for i in prange(evalpos_a.shape[0]):
with nogil:
for i in range(evalpos_a.shape[0]):
pos.x = evalpos_a[i,0]
pos.y = evalpos_a[i,1]
pos.z = evalpos_a[i,2]
@ -1086,9 +1087,9 @@ cdef class _ScatteringSystemAtOmegaK:
cdef ccart3_t *res
cdef cart3_t pos
cdef Py_ssize_t i, j
with nogil, wraparound(False), parallel():
with nogil:
res = <ccart3_t *> malloc(fecv_size*sizeof(ccart3_t))
for i in prange(evalpos_a.shape[0]):
for i in range(evalpos_a.shape[0]):
pos.x = evalpos_a[i,0]
pos.y = evalpos_a[i,1]
pos.z = evalpos_a[i,2]
@ -1256,18 +1257,17 @@ cdef class _ScatteringSystemAtOmega:
cdef ccart3_t res
cdef cart3_t pos
cdef Py_ssize_t i
with wraparound(False), nogil, parallel():
for i in prange(evalpos_a.shape[0]):
pos.x = evalpos_a[i,0]
pos.y = evalpos_a[i,1]
pos.z = evalpos_a[i,2]
if alt:
res = qpms_scatsysw_scattered_E__alt(self.ssw, btyp_c, &scv_view[0], pos)
else:
res = qpms_scatsysw_scattered_E(self.ssw, btyp_c, &scv_view[0], pos)
results[i,0] = res.x
results[i,1] = res.y
results[i,2] = res.z
for i in range(evalpos_a.shape[0]):
pos.x = evalpos_a[i,0]
pos.y = evalpos_a[i,1]
pos.z = evalpos_a[i,2]
if alt:
res = qpms_scatsysw_scattered_E__alt(self.ssw, btyp_c, &scv_view[0], pos)
else:
res = qpms_scatsysw_scattered_E(self.ssw, btyp_c, &scv_view[0], pos)
results[i,0] = res.x
results[i,1] = res.y
results[i,2] = res.z
return results.reshape(evalpos.shape)
@boundscheck(False)
@ -1313,9 +1313,9 @@ cdef class _ScatteringSystemAtOmega:
cdef ccart3_t *res
cdef cart3_t pos
cdef Py_ssize_t i, j
with nogil, wraparound(False), parallel():
with nogil:
res = <ccart3_t *> malloc(basissize*sizeof(ccart3_t)) # thread-local
for i in prange(evalpos_a.shape[0]):
for i in range(evalpos_a.shape[0]):
pos.x = evalpos_a[i,0]
pos.y = evalpos_a[i,1]
pos.z = evalpos_a[i,2]

View File

@ -150,7 +150,7 @@ qpms_c = Extension('qpms.qpms_c',
sources = ['qpms/qpms_c.pyx',],
libraries = common_libs,
include_dirs=['amos', 'qpms', numpy_includes],
extra_link_args=['-fopenmp'],
extra_link_args=['-fopenmp'], # needed?
extra_compile_args=['-fopenmp'],
)