ในขณะที่เมื่อก่อนฉันเริ่มทำพีชคณิตเชิงเส้นใน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ไม่เฉพาะเจาะจงSDKs นี่เป็นเพียงรายการข้อกำหนดหรือส่วนขยายภาษามากกว่าการนำไปใช้งานหรือไลบรารี กับที่กล่าวว่ามีการใช้งานต้นฉบับโดย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 ของพื้นที่เก็บข้อมูลเป็นครั้งคราว ดูเหมือนว่ายุ่งน้อยลงเล็กน้อย!