WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

CUDA Frage: Funktion auf bestimmte Prozessoren legen

 

êssig
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 20.01.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.01.2011, 19:00     Titel: CUDA Frage: Funktion auf bestimmte Prozessoren legen
  Antworten mit Zitat      
Heyho,

angenommen, ich habe eine ganz ganz simple Funktion, die z.B. zwei Zahlen addiert, "summe", ist es dann möglich, dass ich mittels CUDA (ähnlich wie mit MPI) diese Funktion auf z.B. 30, (40, 50, 60, 70... etc) Prozessoren meiner GPU laufen lasse, d.h. jeder Prozessor soll ein Wertepaar addieren und zurückgeben?

Weil ich finde nur die "automatische" Parallelisierung, d.h. ich deklariere eben eine Matrix und lasse eine Berechnung starten:

Ga = gpuArray(rand(1000, 'single'));
Gb = gpuArray(rand(1000, 'single'));
Gres=Ga*Gb
(siehe auch http://www.mathworks.com/help/toolbox/distcomp/bsic4fr-1.html)

bzw. zum Ausführen eigener Funktionen eben arrayfun:
http://www.mathworks.com/help/toolb...../bsic4n4-1.html#bsic4x6-1

Aber ich weiß nicht, wie ich das ganz genau steuern kann. Ich möchte die Jacobimatrix mittels Finite-Differenzen-Methode berechnen und hierzu dann eine bestimmte Anzahl an Prozessoren ansteuern und eben die einzelnen Ableitungen an einem bestimmten Arbeitspunkt bestimmen lassen. Außerdem möchte ich später einen Vergleich anstellen, wie viel schneller die Berechnung läuft, wenn ich z.B. 30, oder 40, oder 50 etc... Prozessoren nutzte und daher möchte ich diese Anzahl während der Berechnung selbst festlegen!

Danke schonmal!
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 01.02.2011, 10:55     Titel:
  Antworten mit Zitat      
Hallo,

hier wird beschrieben, wie du CUDA-Code in MATLAB einbinden kannst. Ich gehe davon aus, dass es das ist, was du möchtest?
http://www.mathworks.com/help/toolbox/distcomp/bslohnr-1.html

Ich habe das mal ausprobiert; das größte Problem dabei ist wirklich das Kompilieren des CUDA-Codes bzw. das Generieren des PTX-Files (Pfade korrekt setzen etc.).

Allerdings musst du dazu eben CUDA-Code schreiben. Wenn du in MATLAB bleiben möchtest, musst du zumindest nach jetzigem Stand mit den direkt auf gpuArrays anwendbaren Methoden bzw. mit arrayfun vorlieb nehmen und dich damit abfinden, dass MATLAB automatisch versucht, die GPU "so gut wie möglich" auszulasten.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
êssig
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 20.01.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.02.2011, 11:53     Titel:
  Antworten mit Zitat      
Okay vielen Dank erstmal für Deine Antwort... Muss ich dann meinen ganzen Code in CUDA (also C++ nehme ich an?) schreiben, oder nur den "Master"-Teil; also den Teil, der eigentlich alles steuert und der festlegt, wie viele Prozessoren im aktuellen Testrun genutzt werden sollen?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 01.02.2011, 12:28     Titel:
  Antworten mit Zitat      
Hallo,

den gesamten Code.
In dem Link sind ganz unten zwei Beispiele dafür angegeben.

CUDA ist in der Schreibweise sehr ähnlich wie C/C++, aber eben doch nicht ganz gleich. Ich würde mich also, was die Deklaration der Zeile und die Verwendung von threadidx angeht, nach dem unteren Beispiel richten.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
êssig
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 20.01.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.02.2011, 12:32     Titel:
  Antworten mit Zitat      
Danke nochmals. Das hört sich leider garnicht soo gut an für mich Sad
Kennst Du eine Quelle von Mathworks selbst, die besagt, dass die Parallelisierung von selbst, automatisch und "so gut wie möglich" (heißt mit maximaler Prozessoranzahl) geht? Bräuchte dafür eine Quelle, die ich einem Kollegen zeigen könnte, finde aber leider gerade keine...

Danke!
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 01.02.2011, 13:41     Titel:
  Antworten mit Zitat      
Hallo,

damit kann ich leider nicht dienen. In meinem Testbeispiel war jedoch die arrayfun-Variante genauso schnell wie CUDA.

Wenn du nur mit Methoden auf gpuArrays arbeitet, ist es etwas langsamer, da ja das Programm jedes Mal die auszuführende Aktion an die GPU schickt und die GPU wieder Erledigung meldet und dadurch etwas Zeit verloren geht.

Wenn du Informationen von Mathworks zu dem Thema möchtest, kontaktiere doch am besten den Mathworks Support.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.