|
|
Beschleunigung einer Skalarmultiplikation |
|
Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 06.05.2009, 11:36
Titel: Beschleunigung einer Skalarmultiplikation
|
 |
Hallo zusammen!
Also, ich habe das Problem, dass ich zwei m x n x p Matrizen (cDatR und cDatL) mit einem p x 1 Vektor (coeff) multiplizieren muss. Da es mir nicht gelungen ist, auf effiziente Art und Weise eine Matrix aus dem Vektor zu bauen, der die Operation auf einen Schritt vereinfacht, mache ich folgendes:
Ich iteriere also mit einer Schleife durch die 3. Dimension der Matrizen und führe dann jeweils eine Skalarmultiplikation mit der entsprechenden Zeile des Vektors aus.
Das ganze wird sehr häufig ausgeführt und kostet eine Menge Zeit. Habt ihr eine Idee, wie man das beschleuningen kann?
Hinzu kommt auch noch, dass die elementweise Multiplikation ja nicht Multithreading-fähig ist, was die ganze Sache noch weiter ausbremst.
|
|
|
|
|
Maddy |

Ehrenmitglied
|
 |
Beiträge: 494
|
 |
|
 |
Anmeldedatum: 02.10.08
|
 |
|
 |
Wohnort: Greifswald
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 06.05.2009, 12:46
Titel:
|
 |
Wenn du dir den Befehl Meshgrid anschaust, könnte der dir die Koeffizienten Matrix erzeugen.
Ich habe es jetzt nicht getestet, aber vom Prinzip könntest du so ansatzweise vorgehen. (Die Dimensionen der Matrix müsste man nochmal prüfen und dann gegebenenfalls S(1) und S(2) austauschen)
_________________
>> why
The computer did it.
|
|
|
Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 06.05.2009, 14:46
Titel:
|
 |
Die Idee ist nicht schlecht, aber auch da ist der Overhead zur Erzeugung der Matrix Z zu groß.
Das ist im Schnitt ca. 20% langsamer
|
|
|
Schrank |

Forum-Century
|
 |
Beiträge: 203
|
 |
|
 |
Anmeldedatum: 10.07.08
|
 |
|
 |
Wohnort: Berlin
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.05.2009, 15:23
Titel:
|
 |
Hallo,
warum ist es dir nicht gelungen aus einem Vektor eine matrix zumachen?
Ich denke das repmat wesentlich perfomanter als deine Schleifenlösung ist, oder sehe ich das eigentliche problem gerade nicht?
Gruß Schrank
|
|
|
Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 12.05.2009, 11:12
Titel:
|
 |
Mir war es bisher nicht gelungen, eine Matrix aus dem Vektor auf performante Weise zu bauen. Ich hab mich aber noch mal damit auseinander gesetzt und nun folgenden Code, der ungefähr 10% schneller ist:
Jetzt ist den Schleife schon mal weg. Irgendwie bin ich vorher nicht darauf gekommen, die Matrix coeffM zu erstellen, damit repmat das "tiling" in der 3. Dimension macht. Vielen Dank für eure Tipps.
Dem Single-Core Problem bin ich jetzt aus dem weg gegangen, indem Rechenclients in einzelnen Matlabinstanzen starte, die per Sockets kommunizieren.
[/code]
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|