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 1e5418e7d0
commit 788a990a29
2 changed files with 21 additions and 21 deletions

View File

@ -959,8 +959,8 @@ cdef class ScatteringSystem:
cdef ccart3_t res cdef ccart3_t res
cdef cart3_t pos cdef cart3_t pos
cdef Py_ssize_t i cdef Py_ssize_t i
with nogil, parallel(), boundscheck(False), wraparound(False): with nogil:
for i in prange(evalpos_a.shape[0]): for i in range(evalpos_a.shape[0]):
pos.x = evalpos_a[i,0] pos.x = evalpos_a[i,0]
pos.y = evalpos_a[i,1] pos.y = evalpos_a[i,1]
pos.z = evalpos_a[i,2] pos.z = evalpos_a[i,2]
@ -1000,6 +1000,7 @@ def empty_lattice_modes_xy(EpsMu epsmu, reciprocal_basis, wavevector, double max
free(omegas_c) free(omegas_c)
return omegas return omegas
cdef class _ScatteringSystemAtOmegaK: cdef class _ScatteringSystemAtOmegaK:
''' '''
Wrapper over the C qpms_scatsys_at_omega_k_t structure Wrapper over the C qpms_scatsys_at_omega_k_t structure
@ -1045,8 +1046,8 @@ cdef class _ScatteringSystemAtOmegaK:
cdef ccart3_t res cdef ccart3_t res
cdef cart3_t pos cdef cart3_t pos
cdef Py_ssize_t i cdef Py_ssize_t i
with nogil, wraparound(False), parallel(): with nogil:
for i in prange(evalpos_a.shape[0]): for i in range(evalpos_a.shape[0]):
pos.x = evalpos_a[i,0] pos.x = evalpos_a[i,0]
pos.y = evalpos_a[i,1] pos.y = evalpos_a[i,1]
pos.z = evalpos_a[i,2] pos.z = evalpos_a[i,2]
@ -1089,9 +1090,9 @@ cdef class _ScatteringSystemAtOmegaK:
cdef ccart3_t *res cdef ccart3_t *res
cdef cart3_t pos cdef cart3_t pos
cdef Py_ssize_t i, j cdef Py_ssize_t i, j
with nogil, wraparound(False), parallel(): with nogil:
res = <ccart3_t *> malloc(fecv_size*sizeof(ccart3_t)) 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.x = evalpos_a[i,0]
pos.y = evalpos_a[i,1] pos.y = evalpos_a[i,1]
pos.z = evalpos_a[i,2] pos.z = evalpos_a[i,2]
@ -1259,18 +1260,17 @@ cdef class _ScatteringSystemAtOmega:
cdef ccart3_t res cdef ccart3_t res
cdef cart3_t pos cdef cart3_t pos
cdef Py_ssize_t i cdef Py_ssize_t i
with wraparound(False), nogil, parallel(): for i in range(evalpos_a.shape[0]):
for i in prange(evalpos_a.shape[0]): pos.x = evalpos_a[i,0]
pos.x = evalpos_a[i,0] pos.y = evalpos_a[i,1]
pos.y = evalpos_a[i,1] pos.z = evalpos_a[i,2]
pos.z = evalpos_a[i,2] if alt:
if alt: res = qpms_scatsysw_scattered_E__alt(self.ssw, btyp_c, &scv_view[0], pos)
res = qpms_scatsysw_scattered_E__alt(self.ssw, btyp_c, &scv_view[0], pos) else:
else: res = qpms_scatsysw_scattered_E(self.ssw, btyp_c, &scv_view[0], pos)
res = qpms_scatsysw_scattered_E(self.ssw, btyp_c, &scv_view[0], pos) results[i,0] = res.x
results[i,0] = res.x results[i,1] = res.y
results[i,1] = res.y results[i,2] = res.z
results[i,2] = res.z
return results.reshape(evalpos.shape) return results.reshape(evalpos.shape)
@boundscheck(False) @boundscheck(False)
@ -1316,9 +1316,9 @@ cdef class _ScatteringSystemAtOmega:
cdef ccart3_t *res cdef ccart3_t *res
cdef cart3_t pos cdef cart3_t pos
cdef Py_ssize_t i, j cdef Py_ssize_t i, j
with nogil, wraparound(False), parallel(): with nogil:
res = <ccart3_t *> malloc(basissize*sizeof(ccart3_t)) # thread-local 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.x = evalpos_a[i,0]
pos.y = evalpos_a[i,1] pos.y = evalpos_a[i,1]
pos.z = evalpos_a[i,2] pos.z = evalpos_a[i,2]

View File

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