Je suis capable de compiler l'exemple de travail minimal ci-dessous dans Fortran qui utilise Openmp et s'exécute pour donner le résultat attendu (impressions 1).F2py avec Openmp donne l'erreur d'importation en Python
subroutine test
use omp_lib
write(*,*) omp_get_num_threads()
end subroutine
Cependant, l'utilisation de cette en python avec f2py donne l'erreur:
ImportError: DLL load failed: A dynamic link library (DLL) initialization routine failed.
J'ai utilisé le promeneur dépendance à tester si la question est à relier à la dll OpenMP, mais le .dll suivant est lié à la fois l'exécutable Fortran et le .pyd compilé à partir f2py:
c:\tdm-gcc-64\bin\LIBGOMP_64-1.DLL
donc je suis confus quant à pourquoi python ne manquera pas de charger le fichier .dll, car il semble être correctement liés à partir de f2py. La commande f2py que j'utilise pour générer le .pyd est
python -m numpy.f2py -c -m %output% %input%.f90 --fcompiler=gnu95 --compiler=mingw32 --f90flags="-fopenmp " -lgomp
Toute aide serait grandement appréciée, merci.
EDIT: J'ai testé cela avec un autre PC Windows avec la même configuration d'installation, et obtenez le même message d'erreur. Est-ce que je manque quelque chose?
EDIT 2: Apparemment, ce programme ne fonctionnerait pas réellement dans f2py, donc mauvais exemple. Mes excuses. Je travaille actuellement avec des sous-programmes, qui sont capables de fonctionner avec f2py correctement tant qu'aucune commande openmp n'est présente. : J'ai remplacé l'exemple de code par un sous-programme à la place du programme en raison de la réaction de Pierre de Buyl, même si cela ne change rien à ma question.
Avez-vous essayé ceci avec «test de programme» ou avez-vous édité le code dans un module («module test»)? 'f2py' n'enveloppera que le sous-programme, les fonctions ou les modules. –
Merci pour ton commentaire, je ne le savais pas. Cependant les sous-routines avec lesquelles j'ai travaillé sont capables de compiler et d'importer correctement en python tant qu'il n'y a pas de commandes openmp présentes. –
Avez-vous regardé https://stackoverflow.com/questions/44957887/python-import-error-for-f2py-modules-compiled-with-openmp (où le problème de PATH contenant le chemin d'accès à la DLL)? –