Dies ist die Ausgabe von ginfo mit Jacket / Matlab:
%Vor%Das Problem ist:
Jede Hilfe mit dem Code wird geschätzt. Wie Sie sehen können, ist es ein sehr triviales Beispiel, um die Leistung der GPU zu demonstrieren, nicht mehr.
Zwei Tesla gleichzeitig verwenden : Schreibe eine MEX-Datei und rufe cudaChooseDevice(0)
auf, starte einen Kernel, rufe cudaChooseDevice(1)
auf und führe einen anderen Kernel aus. Kernelaufrufe und Speicherkopien (d. H.% Co_de% und cudaMemcpyAsync
) sind asynchron. Ich habe ein Beispiel dafür gegeben, wie man eine MEX-Datei (dh eine DLL) in eine meiner anderen Antworten . Fügen Sie diesem Beispiel einfach einen zweiten Kernel hinzu. Zu Ihrer Information, Sie brauchen Jacket nicht, wenn Sie C / C ++ programmieren können. Wenn Sie andererseits Ihre Zeit nicht damit verbringen möchten, das Cuda SDK zu lernen Sie haben keinen C / C ++ - Compiler, dann stecken Sie fest mit Jacket oder gp-you oder GPUlib , bis Matlab die Funktionsweise von cudaMemcpyPeerAsync
ändert.
Alternativ können Sie OpenCL von Matlab aufrufen (wiederum über eine MEX-Datei). Dann könnten Sie Kernel auf allen GPUs und CPUs starten. Auch dies erfordert einige C / C ++ Programmierung.
Ab Matlab 2012 sind GPU-Array- und GPU-Funktionen vollständig in MATLAB integriert, so dass Sie möglicherweise Jacket nicht benötigen, um das zu erreichen, was Sie erreichen möchten.
Wenn Sie also gpuDevice(deviceID);
vor dem Ausführen von GPU-Befehlen eingeben, werden die folgenden Codes auf der deviceID
th gpu ausgeführt. Zum Beispiel
Um mehrere Grafikprozessoren auszuführen. setzen Sie einfach
%Vor% Sie können die GPU-Speicherbelegung anzeigen, indem Sie in der Systembefehlszeile nvidia-smi
eingeben.
Diese Art der Einstellung der GPU-ID scheint seltsam, aber es ist die herkömmliche Art, GPU-ID zu setzen. Wenn Sie in CUDA eine bestimmte GPU verwenden möchten, werden cudaSetDevice(gpuId)
und die folgenden Codes auf der gpuId
ten GPU ausgeführt. (0-Basisindexierung)
---------------------- BEARBEITEN ----------------
Getestet und bestätigt auf MATLAB 2012b, MATLAB 2013b.
Wird mit nvidia-smi
überprüft, dass der Code tatsächlich andere GPU-Speicher verwendet. Sie müssen es möglicherweise sehr groß rand(5000)
skalieren und sehr schnell überprüfen, da die temporären Variablen a
und b
verschwinden würden, nachdem die for-Schleife beendet wurde.
Tags und Links matlab image-processing parallel-processing cuda gpu