2014-06-06 3 views
0

J'ai été capable de compiler les bibliothèques natives 0.6.0 de JCuda sur un système Mac OSX 10.9.3 64 bits (http://www.jcuda.org/downloads/downloads.html). Malheureusement, je ne suis pas assez intelligent pour emballer tout dans un pot. Quelqu'un peut-il m'aider à le faire? J'ai créé un projet Netbeans et copié le contenu de tous les dossiers src Java fournis dans celui-ci. Puis j'ai emballé tout dans un pot. En utilisant Jarsplice 0.4.0 j'ai alors essayé de construire un fichier Jar contenant tous les fichiers de bibliothèque natifs listés ci-dessous (excepté le premier fichier .a). Malheureusement quand j'ai lié le jar résultant dans mon projet et l'ai exécuté, cela ne fonctionnait pas car une libJCudaRuntime-apple-x86_64.jnilib manquait.Conditionnement de JCUDA 0.6.0 sous Mac OSX 10.9.3

Nous vous remercions à l'avance Radek

Mon dossier lib contient: libCommonJNI.a libJCublas-pomme-x86_64.dylib libJCublas2-pomme-x86_64.dylib libJCudaDriver-pomme-x86_64.dylib libJCudaRuntime- pomme x86_64.dylib libJCufft-pomme-x86_64.dylib libJCurand-pomme-x86_64.dylib libJCusparse-pomme-x86_64.dylib

+0

Pour charger une bibliothèque, vous devez l'extraire du pot vers un emplacement où le système d'exploitation peut réellement être chargé (le système de fichiers). Une méthode que j'ai vu couramment utilisée est d'utiliser getResource pour la bibliothèque dans le jar, puis de le copier dans la temp du système et de charger à partir de là (en utilisant un chemin qualifié). Certains ont même des bibliothèques pour plusieurs systèmes d'exploitation dans le même pot et sélectionnez celui qui correspond au système d'exploitation. – Durandal

+0

J'ai déjà la lib native. J'ai compilé à partir des sources fournies à http://www.jcuda.org/downloads/downloads.html "Code source de toutes les bibliothèques". Vous pouvez voir la structure du fichier sur http://pastebin.com/EKE7mRsu. Notez qu'il existe également. * Dossiers Java contenant des dossiers src contenant des fichiers java. Ce que je veux essentiellement, c'est empaqueter un jar contenant toutes les sources Java compilées ET les bibliothèques natives en une. Je peux donc le mettre dans mon dépôt local. – RayDeeA

+0

@RayDeeA, merci à Marco13 de mentionner mon projet, je viens d'ajouter des librairies Mac OS X, vérifiez ceci:) https://github.com/MysterionRise/mavenized-jcuda – Mysterion

Répondre

2

Juste pour cette réponse ici aussi: Les bibliothèques natives peuvent pas être emballé directement dans un JAR (ou plutôt: Ils ne peuvent actuellement pas être chargé s'ils sont seulement contenus dans le JAR).

Bien que l'infrastructure de la classe JCuda LibUtils offre essentiellement la possibilité pour ce faire, elle n'est pas "officiellement" prise en charge. Une raison à cela est que cela n'aurait de sens que lorsque toutes les bibliothèques natives pour tous les systèmes d'exploitation étaient disponibles (en 32 et 64 bits). Ensuite, il serait possible de mettre toutes ces bibliothèques dans un fichier JAR, et de les déballer et de les charger de manière transparente à l'exécution.

Il faut généralement un certain temps avant que toutes les bibliothèques natives soient disponibles. Le problème peut être atténué avec des choses comme https://github.com/MysterionRise/mavenized-jcuda, qui gère les dépendances aux bibliothèques natives.