2 votes

Appel d'une fonction CUDA dans la DLLMain

J'ai développé une DLL C++ sous Windows qui comporte de nombreuses fonctions accélérées par CUDA. Actuellement, je n'ai pas créé la fonction DllMain car elle n'est pas obligatoire.

Je sais qu'il existe de nombreuses limitations sur les fonctions qui peuvent être appelées dans la DllMain.

Je voudrais juste savoir s'il est possible d'appeler une fonction CUDA Runtime dans DllMain juste pour initialiser le contexte par défaut, afin que les appels CUDA ultérieurs soient plus rapides ?

J'utilise Visual Studio 2008, CUDA 5.0 et Windows 8 pour le développement.

3voto

harrism Points 9770

Lire la documentation de DLLMain Je vous le déconseille. D'après les documents :

Avertissement Il existe de sérieuses limites à ce que vous pouvez faire dans un point d'entrée DLL. Pour fournir une initialisation plus complexe, créez une routine d'initialisation pour la DLL. Vous pouvez exiger que les applications appellent la routine d'initialisation avant d'appeler toute autre routine de la DLL.

Plus précisément :

L'appel de fonctions nécessitant des DLL autres que Kernel32.dll peut entraîner des problèmes difficiles à diagnostiquer.

Étant donné que l'API d'exécution CUDA nécessite cudart.dll, cela s'applique à votre question.

Je créerais donc une fonction d'initialisation pour votre bibliothèque qui effectue l'initialisation CUDA et exigerait qu'elle soit appelée explicitement au démarrage de l'application.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X