Speravo di utilizzare openmp per accelerare il mio codice Fortran che eseguo tramite f2py. Tuttavia, dopo aver compilato con successo, non posso importare il modulo in Python.f2py con OMP: impossibile importare il modulo, simbolo non definito GOMP_ *
Per un modulo Fortran95 come questo:
module test
implicit none
contains
subroutine readygo()
real(kind = 8), dimension(10000) :: q
!$OMP WORKSHARE
q = 7
!$OMP END WORKSHARE
end subroutine
end module
Compilato e importato con questi comandi:
f2py -m SOmod --fcompiler=gnu95 --f90flags='-march=native -O3 -fopenmp' -c SOtest.f95
python2 -c "import SOmod"
ottengo un errore. L'errore è per l'importazione: la compilazione funziona bene sia con f2py sia con gfortran direttamente (viene visualizzato solo un avviso relativo all'utilizzo dell'API NumPy deprecato).
Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: ./SOmod.so: undefined symbol: GOMP_barrier
ottengo diversi GOMP_ * errori per le diverse direttive OMP. Senza direttive (ma con flag -openmp) funziona.
Qualsiasi aiuto sarebbe molto apprezzato.
Funziona alla grande! Aggiungerò un po 'di informazioni che ho trovato a causa della tua risposta, spero che sia ok. – Mark
@Mark, la modifica è grandiosa, grazie! –