ในขณะที่เมื่อก่อนฉันเริ่มทำพีชคณิตเชิงเส้นในC
ฉันรู้สึกประหลาดใจเมื่อเห็นว่ามีบทเรียนไม่กี่BLAS
อย่างLAPACK
และพื้นฐานอื่น ๆAPI
ถึงแม้ว่าพวกเขาจะเป็นเสาหลักของห้องสมุดอื่น ๆ สำหรับเหตุผลที่ผมเริ่มเก็บรวบรวมทั้งหมดตัวอย่าง tutorials / ฉันสามารถหาทั้งหมดผ่านทางอินเทอร์เน็ตสำหรับBLAS
, CBLAS
, LAPACK
, CLAPACK
, LAPACKE
, ATLAS
,OpenBLAS
... ในการนี้ repo
ฉันควรเตือนคุณว่าในฐานะวิศวกรเครื่องกลฉันมีประสบการณ์เพียงเล็กน้อยในการจัดการที่เก็บ git หรือ GitHub ก่อนอื่นมันจะดูเป็นระเบียบอย่างสมบูรณ์สำหรับพวกคุณ อย่างไรก็ตามหากคุณสามารถจัดการกับโครงสร้างที่ยุ่งเหยิงได้คุณจะพบตัวอย่างและคำแนะนำทุกประเภทที่อาจช่วยได้ ฉันได้ลองพวกเขาส่วนใหญ่เพื่อให้แน่ใจว่าพวกเขารวบรวม และสิ่งที่ไม่ได้รวบรวมฉันได้กล่าวถึง ฉันได้แก้ไขมากของพวกเขาจะเป็น compilable กับGNU compilers
( gcc
, g++
และgfortran
) ฉันได้ทำMakeFile
สิ่งที่คุณสามารถอ่านเพื่อเรียนรู้วิธีเรียกแต่ละรูทีนFortran/FORTRAN
ในโปรแกรมC
หรือC++
โปรแกรม ฉันยังได้ใส่คำแนะนำในการติดตั้งสำหรับ mac และ linux (ขออภัย windows guys!) ฉันยังทำบางอย่างbash
.sh
ไฟล์สำหรับการรวบรวมอัตโนมัติของบางส่วนของห้องสมุดเหล่านี้
แต่จะไปคำถามอื่น ๆ ของคุณ: BLAS
และLAPACK
ค่อนข้างAPI
ไม่เฉพาะเจาะจงSDK
s นี่เป็นเพียงรายการข้อกำหนดหรือส่วนขยายภาษามากกว่าการนำไปใช้งานหรือไลบรารี กับที่กล่าวว่ามีการใช้งานต้นฉบับโดยnetlibในFORTRAN 77
ซึ่งคนส่วนใหญ่หมายถึง (พลุกพล่าน!) เมื่อพูดถึงและBLAS
LAPACK
ดังนั้นหากคุณเห็นสิ่งแปลก ๆ มากมายเมื่อใช้สิ่งเหล่านี้API
เป็นเพราะคุณกำลังเรียกFORTRAN
กิจวัตรประจำวันC
มากกว่าC
ห้องสมุดและฟังก์ชั่น ATLAS
และOpenBLAS
เป็นการนำไปปฏิบัติที่ดีที่สุดBLAS
และLACPACK
เท่าที่ฉันรู้ พวกเขาสอดคล้องกับต้นฉบับAPI
แม้ว่าจะนำความรู้ของฉันไปปฏิบัติC/C++
ตั้งแต่เริ่มต้น (ไม่แน่ใจ!) มีการใช้งาน GPGPU ของการAPI
ใช้OpenCL
: CLBlast , clBLAS , clMAGMA , ArrayFireและViennaCLเพื่อพูดถึงบางอย่าง นอกจากนี้ยังมีการใช้งานเฉพาะของผู้ขายที่ปรับให้เหมาะกับฮาร์ดแวร์หรือแพลตฟอร์มเฉพาะซึ่งฉันขอแนะนำให้ทุกคนใช้อย่างเด็ดขาด
คำแนะนำของฉันกับทุกคนที่ต้องการเรียนรู้การใช้BLAS
และLAPACK
ในC
คือการเรียนรู้FORTRAN-C
การเขียนโปรแกรมแบบผสมก่อน บทแรกของธุรกรรมซื้อคืนที่กล่าวถึงได้ทุ่มเทให้กับเรื่องนี้และฉันได้รวบรวมตัวอย่างที่แตกต่างกันมากมาย
ป.ล.ฉันได้ทำงานกับสาขา dev ของพื้นที่เก็บข้อมูลเป็นครั้งคราว ดูเหมือนว่ายุ่งน้อยลงเล็กน้อย!