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, LAPACKund andere grundlegende APIs, 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 MakeFiles erstellt, die Sie lesen können, um zu erfahren, wie Sie einzelne Fortran/FORTRANRoutinen in einem Coder 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: BLASund LAPACKsind eher APIs nicht spezifisch SDKs. 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 BLASund sprechen LAPACK. Also , wenn Sie eine Menge seltsamer Dinge sehen , wenn diese unter Verwendung von APIs ist , weil Sie eigentlich Aufruf wurden FORTRANRoutinen in Canstatten CBibliotheken und Funktionen. ATLASund OpenBLASsind einige der besten Implementierungen von BLASund LACPACKsoweit 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 APIs 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 BLASund LAPACKin Clernen FORTRAN-Cmö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!