Was ist meine beste Wette für die Berechnung des Skalarprodukts eines Vektors x mit einer großen Anzahl von Vektoren y_i, wobei x und y_i eine Länge von etwa 10k haben.
s/dgemv
Routine? Ich suche hier nur eine allgemeine Anleitung, also werden alle Vorschläge nützlich sein.
Und ja, ich brauche die Aufführung.
Danke für jedes Licht.
Ich denke, GPUs sind speziell dafür ausgelegt, Operationen (ua) schnell durchzuführen. Sie könnten also wahrscheinlich DirectX- oder OpenGL-Bibliotheken verwenden, um die Vektoroperationen durchzuführen. D3DXVec2Dot Dadurch sparen Sie auch CPU-Zeit.
Das Handcoding einer SSE2-Lösung ist nicht sehr schwierig und bringt eine schöne Beschleunigung gegenüber einer reinen C-Routine. Wie viel das über eine BLAS-Routine bringt, muss von Ihnen bestimmt werden.
Die größte Beschleunigung wird durch Strukturieren der Daten in ein Format erreicht, so dass Sie die Datenparallelität und -ausrichtung ausnutzen können.
Ich benutze ein GotoBLAS. Es sind die High-Perfomance-Kernroutinen. Das ist viel besser als MKL und BLAS.
Tags und Links optimization c intrinsics