Im une programmation OpenCL via pyopenCL sur un Ubuntu 16.04.3 64bit, sur Nvidia Tesla K10.G2.8GB. Jusqu'à présent, tout fonctionne correctement tant que je n'inclue pas les fichiers d'en-tête dans mon noyau OpenCL. Dès, que je mets #include <stdlib.h>
au-dessus de mon fichier d'en-tête, la compilation de mes grains de OpenCL échoue avec différents fichiers manquants, parmi eux étantInclure les entêtes OpenCL (32bit vs 64bit)
gnu/stubs-32.h
sys/cdefs.h
la recherche de ce problème, apporte des réponses comme
Error "gnu/stubs-32.h: No such file or directory" while compiling Nachos source code
ou
https://askubuntu.com/questions/470796/fatal-error-sys-cdefs-h-no-such-file-or-directory
baiscally suggérant t o installer libc6-dev-i386
ou gcc-multilib
et g++-multilib
, en supposant que le problème sous-jacent est un problème de 64 bits/32 bits. Ma question est, est-ce que mes binaires OpenCL pour le GPU sont compilées en binaires 32 bits (comment puis-je vérifier?)?
Si oui:
Y at-il d'autres mises en garde, quand je veux compiler les binaires 32 bits sur un système d'exploitation 64 bits? En outre: Puis-je utiliser des chargements 64 bits, lorsque mon noyau est compilé en 32 bits? (par exemple, va #pragma OPENCL EXTENSION cl_khr_fp64 : enable
encore travailler?)
Si non:
Dois-je localiser manuellement/copier tous les fichiers d'en-tête nécessaires et de les inclure à la main?
En outre: Certains de mes collègues doutent même que l'inclusion d'en-têtes C standard dans les noyaux OpenCL soit possible en raison de l'absence de liens. Toute lumière à ce sujet est également appréciée.
Je ne suis pas sûr, mais je pense que OpenCL pourrait bien être la langue https://www.khronos.org/files/opencl-1-2-quick-reference-card.pdf et ressources connexes: https://www.khronos.org/opencl/resources. Dans ma connaissance très limitée de PyOpenCL, je n'ai pas écrit ou vu '#include _any_library_' dans un noyau. – benshope
Une recherche rapide de 'include header openCL' ici sur SO fait apparaître au moins certaines personnes qui ont inclus leurs propres en-têtes dans le code noyau OpenCL. Je parle de code noyau écrit en OpenCL C (essentiellement un sous-ensemble de C) – Dschoni
Oh, oui je suppose. Juste vu celui-ci: https://stackoverflow.com/questions/14502925/include-headers-to-opencl-cl-file Je vais laisser quelqu'un qui en sait plus sur PyOpenCL répondre à votre question ... – benshope