Vor einiger Zeit, als ich dabei einige der linearen Algebra begann C
, kam es mir als Überraschung dort zu sehen gibt so wenige Tutorials für BLAS
, LAPACK
und andere grundlegende API
s, trotz der Tatsache , dass sie irgendwie die Eckpfeiler vieler anderer Bibliotheken sind. Aus diesem Grund begann ich alle Beispiele / Tutorials Sammeln ich alle über das Internet für nicht finden könnten BLAS
, CBLAS
, LAPACK
, CLAPACK
, LAPACKE
, ATLAS
, OpenBLAS
... in diesem Github Repo .
Nun, ich sollte Sie warnen, dass ich als Maschinenbauingenieur wenig Erfahrung mit der Verwaltung eines solchen Git-Repositorys oder GitHubs habe. Es wird euch zunächst als komplettes Durcheinander erscheinen. Wenn Sie es jedoch schaffen, die chaotische Struktur zu überwinden, finden Sie alle möglichen Beispiele und Anweisungen, die hilfreich sein können. Ich habe die meisten von ihnen ausprobiert, um sicherzugehen, dass sie kompiliert werden. Und diejenigen, die nicht kompilieren, habe ich erwähnt. Ich habe viele davon so geändert, dass sie mit GNU compilers
( gcc
, g++
und gfortran
) kompiliert werden können . Ich habe MakeFile
s erstellt, die Sie lesen können, um zu erfahren, wie Sie einzelne Fortran/FORTRAN
Routinen in einem C
oder einem C++
Programm aufrufen können . Ich habe auch einige Installationsanweisungen für Mac und Linux (sorry Windows Jungs!). Ich habe auch einige gemachtbash
.sh
Dateien zum automatischen Kompilieren einiger dieser Bibliotheken.
Aber gehen Sie zu Ihrer anderen Frage: BLAS
und LAPACK
sind eher API
s nicht spezifisch SDK
s. Sie sind lediglich eine Liste von Spezifikationen oder Spracherweiterungen und keine Implementierungen oder Bibliotheken. Trotzdem gibt es Originalimplementierungen von Netlib in FORTRAN 77
, auf die sich die meisten Leute (verwirrend!) Beziehen , wenn sie über BLAS
und sprechen LAPACK
. Also , wenn Sie eine Menge seltsamer Dinge sehen , wenn diese unter Verwendung von API
s ist , weil Sie eigentlich Aufruf wurden FORTRAN
Routinen in C
anstatten C
Bibliotheken und Funktionen. ATLAS
und OpenBLAS
sind einige der besten Implementierungen von BLAS
und LACPACK
soweit ich weiß. Sie entsprechen dem Original API
, obwohl sie meines Wissens implementiert sindC/C++
von Grund auf neu (nicht sicher!). Es gibt GPGPU Implementierungen der API
s mit OpenCL
: CLBlast , clBLAS , clMAGMA , ArrayFire und ViennaCL einige zu nennen. Es gibt auch herstellerspezifische Implementierungen, die für bestimmte Hardware oder Plattform optimiert sind. Ich rate daher dringend davon ab, sie zu verwenden.
Meine Empfehlung an alle, die mit BLAS
und LAPACK
in C
lernen FORTRAN-C
möchten, ist, zuerst gemischte Programmierung zu lernen . Das erste Kapitel des erwähnten Repos ist dieser Angelegenheit gewidmet und dort habe ich viele verschiedene Beispiele gesammelt.
PS Ich habe von Zeit zu Zeit am Entwicklungszweig des Repositorys gearbeitet . Es scheint etwas weniger chaotisch!