Kann jemand eine gute Referenz oder ein Tutorial für die cblas-Schnittstelle empfehlen? Nichts kommt auf Google, alle Man-Seiten, die ich gefunden habe, sind für die Fortran Blas-Schnittstelle, und die PDF, die mit MKL kam buchstäblich zehn Sekunden zu suchen und war nicht hilfreich.
Insbesondere bin ich neugierig, warum es einen zusätzlichen Parameter für Zeile vs. Spaltenmajor gibt; Können mit den Transponierungsflags nicht schon die gleichen Operationen erreicht werden? Es scheint so, als ob der zusätzliche Parameter nur die Komplexität einer bereits fehleranfälligen Schnittstelle erhöht.
Dieser Artikel zeigt, wie cblas (und andere) in C mit einem einfachen Beispiel verwendet werden: Ссылка
Ich habe den relevanten Teil unten zitiert, falls die Seite ausfällt.
Verwenden von BLAS
Um die BLAS-Routinen zu testen, wollen wir eine einfache Matrix-Vektor-Multiplikation durchführen. Beim Lesen der Datei blas2-paper.ps.gz finden wir, dass der Name der entsprechenden Fortran-Funktion DGEMV ist. Der Text blas2-paper.ps.gz erklärt auch die Bedeutung der Argumente für diese Funktion. In cblas.ps.gz finden wir, dass der entsprechende Name der C-Funktion cblas_dgemv ist. Im folgenden Beispiel wird diese Funktion verwendet, um das Matrix-Vektor-Produkt
zu berechnen %Vor%Beispieldatei testblas.c :
%Vor%Um dieses Programm zu kompilieren, verwenden wir den folgenden Befehl.
cc testblas.c -o testblas -lblas -lm
Die Ausgabe dieses Testprogramms ist
%Vor%
was zeigt, dass alles gut funktioniert hat und wir nicht einmal die transponierte Matrix aus Versehen benutzt haben.