Angenommen, ich habe einen Laptop mit nvcc
und CUDA Toolkit installiert, und ein Netzwerk von 16 PCs mit Nvidia GPUs und MPI. Die PCs kennen CUDA nicht, sie haben nur normale Nvidia Treiber und unterstützende Software.Ist es möglich, CUDA-Programm oder -Bibliothek ohne installierten CUDA-Treiber auszuführen?
Ich möchte eine MPI-Anwendung für dieses Netzwerk entwickeln. Die PCs werden Aufgaben über MPI erwerben und ihre GPUs verwenden, um diese Aufgaben zu erledigen. Ich plane, den CUDA Teil auf meinem Laptop zu entwickeln, es in einer statischen Bibliothek zu kompilieren und später diese statische Bibliothek an einem PC zu verbinden, der mpicxx
Compiler verwendet.
Ich kann jedoch keinen Hinweis finden, dass eine solche Bereitstellung möglich ist. Im Gegenteil, die meisten Beispiele von so getrennter Sammlung genannt require CUDA installed for the final step (Verknüpfung CUDA-fähige statische Bibliothek mit MPI-aware Hauptprogramm):
$ g++ main.cpp -L. -lgpu -o main -L/usr/local/cuda/lib64 -lcudart
So ist es möglich, ein Programm oder eine Bibliothek zu kompilieren, die CUDA verwendet und hat keine Abhängigkeiten wie installierte Treiber und CUDA-Bibliotheken?
kurze Antwort ist: Sie müssen Laufzeit-DLLs zusammen mit Ihrer ausführbaren Datei –
bereitstellen seltsamerweise ein Cluster von Cuda-Computing-Ressourcen hat nicht Cuda-Laufzeit bereits bereitgestellt. – user3528438
@RegisPortalez danke für Ihre Antwort. Zumindest muss ich keine neuen Videotreiber auf den Zielrechnern installieren. dlls mit fehlenden Abhängigkeiten reichen aus. Habe ich es richtig gesagt? – Vovanrock2002