البرامج الفرعية الأساسية للجبر الخطي

تُعدّ مكتبة البرامج الفرعية الأساسية للجبر الخطي ( BLAS ) مواصفةً تُحدّد مجموعةً من الإجراءات منخفضة المستوى لتنفيذ عمليات الجبر الخطي الشائعة ، مثل جمع المتجهات ، والضرب القياسي ، والضرب النقطي ، والتركيبات الخطية، وضرب المصفوفات . وهي تُعتبر الإجراءات القياسية الفعلية منخفضة المستوى لمكتبات الجبر الخطي؛ إذ تحتوي هذه الإجراءات على روابط لكلٍّ من لغة C ("واجهة CBLAS") ولغة Fortran ("واجهة BLAS"). على الرغم من أن مواصفة BLAS عامة، إلا أن تطبيقات BLAS غالبًا ما تُحسَّن لتحقيق سرعة عالية على جهاز مُعيّن، لذا فإن استخدامها يُمكن أن يُحسّن الأداء بشكلٍ ملحوظ. تستفيد تطبيقات BLAS من أجهزة الفاصلة العائمة الخاصة، مثل سجلات المتجهات أو تعليمات SIMD .

نشأت هذه المكتبة كمكتبة فورتران عام 1979 [ 1 ] ، وتم توحيد واجهتها من قِبل منتدى BLAS التقني (BLAST)، ويمكن الاطلاع على أحدث تقرير له حول BLAS على موقع netlib الإلكتروني . [ 2 ] تُعرف مكتبة فورتران هذه باسم التنفيذ المرجعي (ويُشار إليها أحيانًا، عن طريق الخطأ، باسم مكتبة BLAS )، وهي غير مُحسَّنة للسرعة، ولكنها متاحة للعموم . [ 3 ] [ 4 ]

تتوافق معظم المكتبات التي تقدم إجراءات الجبر الخطي مع واجهة BLAS، مما يسمح لمستخدمي المكتبة بتطوير برامج لا تتأثر بمكتبة BLAS المستخدمة.

تم تطوير العديد من مكتبات BLAS، تستهدف منصات أجهزة مختلفة. من الأمثلة على ذلك cuBLAS (لوحدات معالجة الرسومات من NVIDIA، ووحدات معالجة الرسومات للأغراض العامة )، و rocBLAS (لوحدات معالجة الرسومات من AMD)، و OpenBLAS . تشمل أمثلة فروع مكتبات BLAS المعتمدة على وحدة المعالجة المركزية: OpenBLAS ، و BLIS (برنامج إنشاء مكتبات شبيهة بـ BLAS) ، ومكتبات أداء Arm، و ATLAS ، ومكتبة Intel Math Kernel Library (iMKL). تحتفظ AMD بنسخة معدلة من BLIS مُحسّنة لمنصة AMD . [ 6 ] أما ATLAS فهي مكتبة محمولة تُحسّن نفسها تلقائيًا لأي بنية معمارية. iMKL هي مكتبة مجانية [ 7 ] ومكتبة احتكارية [ 8 ] مُحسّنة لأنظمة x86 وx86-64 مع التركيز على أداء معالجات Intel . [ 9 ] OpenBLAS هي مكتبة مفتوحة المصدر مُحسّنة يدويًا للعديد من البنى المعمارية الشائعة. تعتمد معايير LINPACK بشكل كبير على روتين BLAS gemmلقياسات الأداء الخاصة بها.

تستخدم العديد من تطبيقات البرامج العددية مكتبات متوافقة مع BLAS لإجراء حسابات الجبر الخطي، بما في ذلك LAPACK و LINPACK و Armadillo و GNU Octave و Mathematica و [ 10 ] MATLAB و [ 11 ] NumPy و [ 12 ] R و Julia و Lisp-Stat.

تعتمد مكتبة C++std::linalg ، التي تم تقديمها في C++26 ، على BLAS.

خلفية

مع ظهور البرمجة العددية، أصبحت مكتبات البرامج الفرعية المتطورة ذات فائدة كبيرة. احتوت هذه المكتبات على برامج فرعية لإجراء عمليات رياضية شائعة عالية المستوى، مثل إيجاد الجذور، وعكس المصفوفات، وحل أنظمة المعادلات. وكانت لغة البرمجة المفضلة هي فورتران . أما أبرز مكتبة للبرمجة العددية فكانت حزمة البرامج الفرعية العلمية (SSP) من شركة IBM. [ 13 ] سمحت هذه المكتبات للمبرمجين بالتركيز على مشاكلهم المحددة وتجنب إعادة تنفيذ الخوارزميات المعروفة. كما تميزت برامج المكتبة بجودتها العالية مقارنةً بالتطبيقات العادية؛ فعلى سبيل المثال، قد تستخدم خوارزميات المصفوفات التمحور الكامل لتحسين الدقة العددية. كما احتوت برامج المكتبة على إجراءات أكثر كفاءة. فعلى سبيل المثال، قد تتضمن المكتبة برنامجًا لحل مصفوفة مثلثية علوية. وتضمنت المكتبات إصدارات أحادية الدقة وثنائية الدقة لبعض الخوارزميات.

في البداية، استخدمت هذه البرامج الفرعية حلقات تكرار مُبرمجة مسبقًا لعملياتها الأساسية. على سبيل المثال، إذا احتاج برنامج فرعي إلى إجراء عملية ضرب مصفوفات، فإنه سيحتوي على ثلاث حلقات تكرار متداخلة. تحتوي برامج الجبر الخطي على العديد من العمليات الأساسية المشتركة (ما يُسمى بعمليات "النواة"، وهي غير مرتبطة بأنظمة التشغيل ). [ 14 ] بين عامي 1973 و1977، تم تحديد العديد من عمليات النواة هذه. [ 15 ] [ 16 ] أصبحت عمليات النواة هذه برامج فرعية مُعرّفة يمكن لمكتبات الرياضيات استدعاؤها. تميزت استدعاءات النواة بمزايا على الحلقات المُبرمجة مسبقًا: حيث أصبح روتين المكتبة أكثر قابلية للقراءة، وقلّت احتمالية حدوث الأخطاء، كما أمكن تحسين تنفيذ النواة لزيادة السرعة. تم نشر مواصفات لعمليات النواة هذه باستخدام الكميات العددية والمتجهات ، وهي المستوى 1 من الروتينات الفرعية للجبر الخطي الأساسي (BLAS)، في عام 1979. [ 17 ] تم استخدام BLAS لتنفيذ مكتبة الروتينات الفرعية للجبر الخطي LINPACK .

تتيح بنية BLAS إمكانية التخصيص لتحقيق أداء عالٍ. على سبيل المثال، LINPACK مكتبة عامة الأغراض يمكن استخدامها على العديد من الأجهزة المختلفة دون تعديل. يمكن لـ LINPACK استخدام نسخة عامة من BLAS. ولتحسين الأداء، قد تستخدم الأجهزة المختلفة نسخًا مُخصصة من BLAS. مع تطور بنى الحواسيب، ظهرت آلات المتجهات . يمكن لـ BLAS المُصممة لآلة المتجهات الاستفادة من عمليات المتجهات السريعة للجهاز. (مع أن معالجات المتجهات لم تعد شائعة الاستخدام، إلا أن تعليمات المتجهات في وحدات المعالجة المركزية الحديثة ضرورية لتحقيق الأداء الأمثل في إجراءات BLAS).

أصبحت ميزات أخرى للآلة متاحة ويمكن استغلالها أيضًا. ونتيجة لذلك، تم تطوير مكتبة BLAS بين عامي 1984 و1986 بإضافة عمليات النواة من المستوى الثاني التي تُعنى بعمليات المصفوفات والمتجهات. كما تم إدراك أهمية التسلسل الهرمي للذاكرة كعامل قابل للاستغلال. تمتلك العديد من الحواسيب ذاكرة تخزين مؤقتة أسرع بكثير من الذاكرة الرئيسية؛ لذا فإن إبقاء عمليات معالجة المصفوفات محصورة يسمح باستخدام أفضل لذاكرة التخزين المؤقتة. في عامي 1987 و1988، تم تحديد المستوى الثالث من مكتبة BLAS لإجراء عمليات المصفوفات. وقد شجع المستوى الثالث من مكتبة BLAS على استخدام خوارزميات تقسيم الكتل. تستخدم مكتبة LAPACK المستوى الثالث من مكتبة BLAS. [ 18 ]

كانت مكتبة BLAS الأصلية مخصصة فقط للمتجهات والمصفوفات المخزنة بكثافة. وقد تم تناول امتدادات أخرى لمكتبة BLAS، مثل المصفوفات المتفرقة. [ 19 ]

الوظائف

تُصنَّف وظائف مكتبة BLAS إلى ثلاث مجموعات من الإجراءات تُسمى "مستويات"، والتي تتوافق مع الترتيب الزمني للتعريف والنشر، بالإضافة إلى درجة تعقيد الخوارزميات؛ تستغرق عمليات المستوى الأول من BLAS عادةً وقتًا خطيًا ، O ( n ) ، بينما تستغرق عمليات المستوى الثاني وقتًا تربيعيًا، وعمليات المستوى الثالث وقتًا تكعيبيًا. [ 20 ] توفر تطبيقات BLAS الحديثة عادةً المستويات الثلاثة جميعها.

المستوى 1

يتألف هذا المستوى من جميع الإجراءات الموصوفة في العرض التقديمي الأصلي لمكتبة BLAS (1979)، [ 1 ] والتي حددت فقط عمليات المتجهات على المصفوفات ذات الخطوات : الضرب النقطي ، ومعايير المتجهات ، وجمع المتجهات المعمم من الشكل

yαx+y{\displaystyle {\boldsymbol {y}}\leftarrow \alpha {\boldsymbol {x}}+{\boldsymbol {y}}}

(تسمى " axpy، "ax زائد y") والعديد من العمليات الأخرى.

المستوى 2

يحتوي هذا المستوى على عمليات ضرب المصفوفات بالمتجهات، بما في ذلك، من بين أمور أخرى، عملية ضرب المصفوفات بالمتجهات المعممة ( ):gemv

yαأx+βy{\displaystyle {\boldsymbol {y}}\leftarrow \alpha {\boldsymbol {A}}{\boldsymbol {x}}+\beta {\boldsymbol {y}}}

بالإضافة إلى أداة لحل المعادلة الخطية لإيجاد قيمة x

تيx=y{\displaystyle {\boldsymbol {T}}{\boldsymbol {x}}={\boldsymbol {y}}}

حيث T مثلثية. بدأ تصميم مكتبة BLAS من المستوى الثاني في عام 1984، ونُشرت النتائج في عام 1988. [ 21 ] تهدف الإجراءات الفرعية من المستوى الثاني بشكل خاص إلى تحسين أداء البرامج التي تستخدم BLAS على معالجات المتجهات ، حيث تكون BLAS من المستوى الأول دون المستوى الأمثل "لأنها تخفي طبيعة المصفوفة والمتجه للعمليات عن المُصرّف". [ 21 ]

المستوى 3

يحتوي هذا المستوى، الذي نُشر رسميًا في عام 1990، [ 20 ] على عمليات ضرب المصفوفات ، بما في ذلك " ضرب المصفوفات العام " ( gemm)، بالشكل التالي:

جαأب+βج،{\displaystyle {\boldsymbol {C}}\leftarrow \alpha {\boldsymbol {A}}{\boldsymbol {B}}+\beta {\boldsymbol {C}},}

حيث يمكن تبديل المصفوفتين A و B أو تحويلهما إلى مصفوفة هيرميتية داخل البرنامج، ويمكن تطبيق خطوات على المصفوفات الثلاث. ويمكن إجراء عملية ضرب المصفوفات العادية AB بتعيين قيمة α إلى واحد وقيمة C إلى مصفوفة أصفار ذات حجم مناسب.

يتضمن المستوى 3 أيضًا إجراءات للحوسبة

بαتي-1ب،{\displaystyle {\boldsymbol {B}}\leftarrow \alpha {\boldsymbol {T}}^{-1}{\boldsymbol {B}},}

حيث أن T عبارة عن مصفوفة مثلثية ، من بين وظائف أخرى.

نظرًا لانتشار عمليات ضرب المصفوفات في العديد من التطبيقات العلمية، بما في ذلك تنفيذ بقية المستوى الثالث من مكتبة BLAS، [ 22 ] ولأن هناك خوارزميات أسرع تتجاوز التكرار الواضح لضرب المصفوفة في المتجه، gemmفإن هذا يُعد هدفًا رئيسيًا لتحسين أداء مطوري BLAS. على سبيل المثال، يمكن تنفيذ عملية الضرب بشكل تكراري عن طريق تحليل المصفوفة A أو B ، أو كليهما، إلى مصفوفات كتلية . وهذا أحد دوافع تضمين المعامل β ، بحيث يمكن تجميع نتائج الكتل السابقة. تجدر الإشارة إلى أن هذا التحليل يتطلب الحالة الخاصة β = 1 ، والتي تُحسّن العديد من التطبيقات من أجلها، مما يُلغي عملية ضرب واحدة لكل قيمة من قيم C. يسمح هذا التحليل بتحسين موضعية الوصول إلى البيانات المستخدمة في عملية الضرب، سواءً من حيث المكان أو الزمان. وهذا بدوره يستفيد من ذاكرة التخزين المؤقت في النظام. [ 23 ] بالنسبة للأنظمة التي تحتوي على أكثر من مستوى واحد من ذاكرة التخزين المؤقت، يمكن تطبيق التجزئة مرة ثانية بنفس ترتيب استخدام الكتل في الحساب. يُستخدم كلا مستويي التحسين هذين في تطبيقات مثل ATLAS . ومؤخرًا، أظهرت تطبيقات كازوشيغي غوتو أن الحظر فقط لذاكرة التخزين المؤقت من المستوى الثاني (L2) ، بالإضافة إلى التوزيع الدقيق لتكاليف النسخ إلى الذاكرة المتجاورة لتقليل أخطاء TLB ، يتفوق على ATLAS . [ 24 ] ويُعد تطبيق مُحسَّن للغاية قائم على هذه الأفكار جزءًا من GotoBLAS و OpenBLAS و BLIS .gemm

أحد الاختلافات الشائعة gemmهو gemm3m، الذي يحسب ناتجًا معقدًا باستخدام "ثلاث عمليات ضرب مصفوفات حقيقية وخمس عمليات جمع مصفوفات حقيقية بدلاً من عمليات ضرب المصفوفات الحقيقية الأربع التقليدية وعمليتي جمع مصفوفات حقيقية"، وهي خوارزمية مشابهة لخوارزمية ستراسن التي وصفها بيتر أونجار لأول مرة. [ 25 ]

التطبيقات

تسريع
إطار عمل أبل لنظامي التشغيل macOS و iOS ، والذي يتضمن إصدارات مُحسّنة من BLAS و LAPACK . [ 26 ] [ 27 ]
مكتبات أداء Arm
مكتبات أداء Arm ، التي تدعم معالجات Arm 64-bit AArch64 ، متوفرة من Arm . [ 5 ]
أطلس
برنامج الجبر الخطي المضبوط تلقائيًا ، وهو تطبيق مفتوح المصدر لواجهات برمجة تطبيقات BLAS للغة C و Fortran 77. [ 28 ]
BLIS
إطار برمجي لإنشاء المكتبات يشبه BLAS، مصمم لإنشاء المكتبات بسرعة. مُحسَّن لمعظم وحدات المعالجة المركزية الحديثة. BLIS هو إعادة هيكلة كاملة لـ GotoBLAS، مما يقلل من حجم التعليمات البرمجية المطلوبة لمنصة معينة. [ 29 ] [ 30 ]
C++ AMP BLAS
مكتبة C++ AMP BLAS هي تطبيق مفتوح المصدر لـ BLAS لامتداد لغة AMP من Microsoft لـ Visual C++. [ 31 ]
cuBLAS
مكتبة BLAS مُحسّنة لبطاقات GPU القائمة على Nvidia، تتطلب عددًا قليلاً من استدعاءات المكتبة الإضافية. [ 32 ]
NVBLAS
مكتبة BLAS مُحسّنة لبطاقات معالجة الرسومات من نوع Nvidia، توفر وظائف المستوى 3 فقط، ولكنها بديل مباشر لمكتبات BLAS الأخرى. [ 33 ]
clBLAS
تطبيق OpenCL لمكتبة BLAS من AMD. جزء من مكتبات الحوسبة AMD. [ 34 ]
انفجار
تطبيق OpenCL مُحسَّن لمعظم واجهة برمجة تطبيقات BLAS. [ 35 ]
إيجن بلاس
مكتبة BLAS بلغة Fortran 77 و C تم تنفيذها على مكتبة Eigen المرخصة بموجب MPL ، وتدعم معمارية x86 و x86-64 و ARM (NEON) و PowerPC .
ESSL
مكتبة البرامج الفرعية الهندسية والعلمية من IBM ، التي تدعم بنية PowerPC تحت نظامي التشغيل AIX و Linux . [ 36 ]
GotoBLAS
تطبيق Kazushige Goto المرخص بموجب ترخيص BSD لـ BLAS، والمُحسَّن خصيصًا لمعالجات Intel Nehalem / Atom و VIA Nanoprocessor و AMD Opteron . [ 37 ]
مكتبة جنو العلمية
تطبيق متعدد المنصات للعديد من الإجراءات العددية. يحتوي على واجهة CBLAS.
مكتبة HP متعددة الأغراض
مكتبة الرياضيات من HP تدعم بنية IA-64 و PA-RISC و x86 و Opteron تحت نظامي التشغيل HP-UX و Linux .
Intel MKL
مكتبة Intel Math Kernel Library ، التي تدعم معالجات x86 بنظامي 32 بت و64 بت، متاحة مجانًا من Intel . [ 7 ] تتضمن تحسينات لمعالجات Intel Pentium و Core و Xeon وIntel Xeon Phi ؛ ودعم لأنظمة Linux و Windows و macOS . [ 38 ]
ماث كيسان
مكتبة الرياضيات الخاصة بشركة NEC ، التي تدعم بنية NEC SX تحت نظام SUPER-UX ، و Itanium تحت نظام Linux [ 39 ]
مكتبة Netlib BLAS
التنفيذ المرجعي الرسمي على Netlib ، مكتوب بلغة Fortran 77. [ 40 ]
مكتبة Netlib CBLAS
واجهة C المرجعية لـ BLAS. من الممكن أيضًا (وهو أمر شائع) استدعاء Fortran BLAS من C. [ 41 ]
OpenBLAS
مكتبة BLAS محسّنة تعتمد على GotoBLAS، وتدعم معالجات x86 و x86-64 و MIPS و ARM و RISC-V . [ 42 ]
مكتبة/SX
مكتبة الرياضيات العامة الخاصة بنظام NEC SX-4 . [ 43 ]
روك بلاس
تطبيق يعمل على وحدات معالجة الرسومات AMD عبر ROCm . [ 44 ]
SCSL
تحتوي مكتبة برامج الحوسبة العلمية الخاصة بشركة SGI على تطبيقات BLAS وLAPACK لمحطات عمل Irix الخاصة بشركة SGI . [ 45 ]
مكتبة صن للأداء
تم تحسين مكتبتي BLAS و LAPACK لبنى SPARC و Core و AMD64 تحت أنظمة Solaris 8 و 9 و 10 بالإضافة إلى Linux. [ 46 ]
أوبلاس
مكتبة فئات قوالب C++ عامة توفر وظائف BLAS. وهي جزء من مكتبة Boost . توفر روابط للعديد من المكتبات المُسرّعة بالأجهزة في صيغة موحدة. علاوة على ذلك، تركز uBLAS على صحة الخوارزميات باستخدام ميزات C++ المتقدمة. [ 47 ]

المكتبات التي تستخدم BLAS

المدرع
Armadillo هي مكتبة جبر خطي مكتوبة بلغة C++، تهدف إلى تحقيق توازن جيد بين السرعة وسهولة الاستخدام. تستخدم المكتبة فئات القوالب، وتوفر روابط اختيارية إلى مكتبتي BLAS/ATLAS وLAPACK. وهي مدعومة من قبل NICTA (في أستراليا) ومرخصة بموجب ترخيص مجاني. [ 48 ]
حقيبة ظهر
LAPACK هي مكتبة جبر خطي عالية المستوى مبنية على BLAS. ومثل BLAS، يوجد تطبيق مرجعي لها، ولكن توجد العديد من البدائل مثل libFlame وMKL.
مير
مكتبة عددية عامة مُسرّعة بواسطة LLVM للعلوم والتعلم الآلي، مكتوبة بلغة D. توفر برامج فرعية عامة للجبر الخطي (GLAS). يمكن بناؤها على تطبيق CBLAS. [ 49 ]

مكتبات مشابهة (غير متوافقة مع BLAS)

عنصري
Elemental هو برنامج مفتوح المصدر للجبر الخطي المباشر الكثيف والمتفرق والتحسين باستخدام الذاكرة الموزعة . [ 50 ]
حاسيم
هي مكتبة قوالب مكتوبة بلغة C++، قادرة على حل المعادلات الخطية وحساب القيم الذاتية. وهي مرخصة بموجب رخصة BSD. [ 51 ]
لاما
مكتبة تطبيقات الرياضيات المُسرّعة ( LAMA ) هي مكتبة قوالب C++ لكتابة حلول عددية تستهدف أنواعًا مختلفة من الأجهزة (مثل وحدات معالجة الرسومات من خلال CUDA أو OpenCL ) على أنظمة الذاكرة الموزعة ، مما يخفي البرمجة الخاصة بالأجهزة عن مطور البرنامج.
MTL4
مكتبة قوالب المصفوفات الإصدار 4 هي مكتبة قوالب عامة مكتوبة بلغة C++، توفر وظائف BLAS للجداول المتفرقة والكثيفة. تتميز MTL4 بواجهة سهلة الاستخدام (مشابهة لواجهة MATLAB ) وقابلية تطبيق واسعة بفضل البرمجة العامة .

BLAS متفرق

تم اقتراح العديد من التوسعات لـ BLAS للتعامل مع المصفوفات المتفرقة على مدار تاريخ المكتبة؛ وتم توحيد مجموعة صغيرة من إجراءات نواة المصفوفة المتفرقة أخيرًا في عام 2002. [ 52 ]

BLAS المجمّع

تم أيضًا نقل وظائف BLAS التقليدية إلى بنى تدعم مستويات عالية من التوازي، مثل وحدات معالجة الرسومات (GPUs) . في هذه الحالة، توفر وظائف BLAS التقليدية أداءً جيدًا عادةً للمصفوفات الكبيرة. مع ذلك، عند حساب، على سبيل المثال، حاصل ضرب المصفوفات في مصفوفات متعددة من المصفوفات الصغيرة باستخدام روتين GEMM، تُظهر هذه البنى انخفاضًا ملحوظًا في الأداء. لمعالجة هذه المشكلة، تم في عام 2017 تحديد نسخة مُجمّعة من وظيفة BLAS. [ 53 ]

بأخذ روتين GEMM المذكور أعلاه كمثال، فإن النسخة المجمعة تقوم بالحسابات التالية في وقت واحد للعديد من المصفوفات:

ج[ك]αأ[ك]ب[ك]+βج[ك]ك{\displaystyle {\boldsymbol {C}}[k]\leftarrow \alpha {\boldsymbol {A}}[k]{\boldsymbol {B}}[k]+\beta {\boldsymbol {C}}[k]\quad \forall k}

المؤشرك{\displaystyle k}يشير الرمز الموجود بين قوسين مربعين إلى أن العملية تُجرى على جميع المصفوفات.ك{\displaystyle k}في مكدس. غالبًا ما تُنفذ هذه العملية لتخطيط ذاكرة مُجمّع مُتدرج حيث تتبع جميع المصفوفات المصفوفات المُدمجة في المصفوفات.أ{\displaystyle A}،ب{\displaystyle B}وج{\displaystyle C}.

تُعدّ دوال BLAS المجمّعة أداةً متعددة الاستخدامات، وتتيح، على سبيل المثال، تنفيذًا سريعًا للمكاملات الأسية ومكاملات ماغنوس التي تتعامل مع فترات تكامل طويلة ذات خطوات زمنية متعددة. [ 54 ] هنا، يمكن تنفيذ عملية رفع المصفوفة إلى الأس ، وهي الجزء الأكثر استهلاكًا للموارد الحاسوبية في عملية التكامل، بالتوازي لجميع الخطوات الزمنية باستخدام دوال BLAS المجمّعة.

انظر أيضاً

مراجع

  1. 1 2 3
    • لوسون، سي إل؛ هانسون، آر جيه؛ كينكيد، دي؛ كروغ، إف تي (1979). "برامج فرعية أساسية للجبر الخطي لاستخدامها في لغة فورتران". معاملات ACM للبرمجيات الرياضية . 5 (3): 308-323 . doi : 10.1145/355841.355847 . hdl : 2060/19780018835 . S2CID 6585321. الخوارزمية 539. 
  2. "منتدى BLAS التقني" . netlib.org . تم الاطلاع عليه بتاريخ 2017-07-07 .
  3. blaseman مؤرشف في 2016-10-12 في Wayback Machine "المنتجات هي تطبيقات لبرامج BLAS (البرامج الفرعية للجبر الخطي الأساسي) وLAPACK (حزمة الجبر الخطي) المتاحة للجمهور، والتي تم تطويرها بواسطة مجموعات من الأشخاص مثل البروفيسور جاك دونغارا، جامعة تينيسي، الولايات المتحدة الأمريكية، وجميعها منشورة على شبكة الإنترنت العالمية (URL: https://www.netlib.org/ )."
  4. جاك دونغارا؛ جين غولوب؛ إريك غروس؛ كليف مولر؛ كيث مور. "Netlib وNA-Net: بناء مجتمع للحوسبة العلمية" (ملف PDF) . netlib.org . تاريخ الاسترجاع: 13 فبراير 2016. تم إنشاء مستودع برامج Netlib في عام 1984 لتسهيل التوزيع السريع لبرامج المجال العام لاستخدامها في الحوسبة العلمية.
  5. 1 2 "مكتبات أداء Arm" . Arm . 2020. تم الاسترجاع في 16-12-2020 .
  6. "مكتبة BLAS" .
  7. 1 2 "خيارات مجانية لمكتبة Intel Math Kernel Library (MKL)، ادعم نفسك، بدون رسوم ملكية" . Intel . 2015. تم الاسترجاع في 31 أغسطس 2015 .
  8. "مكتبة نواة الرياضيات من إنتل (Intel MKL)" . إنتل . 2015. تم الاسترجاع في 25 أغسطس 2015 .
  9. "إشعار التحسين" . إنتل . 2012. تم الاسترجاع في 10 أبريل 2013 .
  10. دوغلاس كوينني (2003). "ما الجديد في برنامج Mathematica 5.0؟" (ملف PDF) . مجلة MSOR Connections . 3 (4). أكاديمية التعليم العالي. مؤرشف من النسخة الأصلية (ملف PDF) بتاريخ 29 أكتوبر 2013.
  11. كليف مولر (2000). "MATLAB Incorporates LAPACK" . ماث ووركس . تم الاسترجاع في 26-10-2013 .
  12. ستيفان فان دير والت؛ إس. كريس كولبيرت وجايل فاروكو (2011). "مصفوفة NumPy: بنية للحساب العددي الفعال". الحوسبة في العلوم والهندسة . 13 (2): 22-30 . arXiv : 1102.1523 . Bibcode : 2011CSE....13b..22V . doi : 10.1109/MCSE.2011.37 . S2CID 16907816 . 
  13. بويسفيرت، رونالد ف. (2000). "البرمجيات الرياضية: الماضي والحاضر والمستقبل". الرياضيات والحواسيب في المحاكاة . 54 ( 4-5 ): 227-241 . arXiv : cs/0004004 . Bibcode : 2000cs........4004B . doi : 10.1016/S0378-4754(00)00185-3 . S2CID 15157725 . 
  14. حتى حزمة البرامج الفرعية العلمية (SSP) (التي ظهرت حوالي عام 1966) احتوت على بعض الإجراءات الأساسية مثل RADD (جمع الصفوف)، وCADD (جمع الأعمدة)، وSRMA (توسيع صف وإضافته إلى صف آخر)، وRINT (تبديل الصفوف). ويبدو أن هذه الإجراءات لم تُستخدم كعمليات أساسية لتنفيذ إجراءات أخرى مثل عكس المصفوفة. انظر: IBM (1970)، حزمة البرامج الفرعية العلمية System/360، الإصدار الثالث، دليل المبرمج (الطبعة الخامسة )، شركة آي بي إم، GH20-0205-4 .
  15. منتدى BLAST 2001 ، ص. 1.
  16. هانسون، آر جيه؛ كروغ، إف تي؛ لوسون، سي إل (1973-10-01). "تحسين كفاءة البرامج المحمولة للجبر الخطي" . نشرة ACM SIGNUM . 8 (4): 16. doi : 10.1145/1052646.1052653 . تاريخ الاسترجاع : 2026-02-06 .
  17. لوسون وآخرون 1979 .
  18. منتدى BLAST 2001 ، الصفحات 1-2.
  19. منتدى BLAST 2001 ، ص. 2.
  20. 1 2 دونغارا، جاك جيه؛ دو كروز، جيريمي؛ هامرلينغ، سفين؛ داف، إيان إس. (1990). "مجموعة من البرامج الفرعية الأساسية للجبر الخطي من المستوى 3" . معاملات ACM في البرمجيات الرياضية . 16 (1): 1-17 . doi : 10.1145/77626.79170 . ISSN 0098-3500 . S2CID 52873593 .  
  21. 1 2 دونغارا، جاك جيه؛ دو كروز، جيريمي؛ هامرلينغ، سفين؛ هانسون، ريتشارد جيه (1988). "مجموعة موسعة من البرامج الفرعية للجبر الخطي الأساسي في لغة فورتران". معاملات ACM للبرمجيات الرياضية 14 : 1-17 . CiteSeerX 10.1.1.17.5421 . doi : 10.1145 /42288.42291 . S2CID 3579623 .  
  22. غوتو، كازوشيغي ؛ فان دي غاين، روبرت أ. (2008). "تنفيذ عالي الأداء لمكتبة BLAS من المستوى الثالث" (ملف PDF) . معاملات ACM في البرمجيات الرياضية . 35 (1): 1-14 . doi : 10.1145/1377603.1377607 . S2CID 14722514. مؤرشف من النسخة الأصلية (ملف PDF) بتاريخ 2017-07-06. 
  23. غولوب، جين هـفان لون، تشارلز ف. (1996)، حسابات المصفوفات ( الطبعة الثالثة)، جونز هوبكنز، ISBN  978-0-8018-5414-9
  24. غوتو، كازوشيغي ؛ فان دي غاين، روبرت أ. (2008). "تشريح ضرب المصفوفات عالي الأداء". معاملات ACM في البرمجيات الرياضية . 34 (3): 12:1–12:25. CiteSeerX 10.1.1.111.3873 . doi : 10.1145/1356052.1356053 . ISSN 0098-3500 . S2CID 9359223 .   (25 صفحة)
  25. فان زي، فيلد جي؛ سميث، تايلر إم. (24 يوليو 2017). "تنفيذ ضرب المصفوفات المعقدة عالي الأداء باستخدام طريقتي 3m و4m". معاملات ACM في البرمجيات الرياضية . 44 (1): 1-36 . doi : 10.1145/3086466 . S2CID 25580883 . 
  26. "الأدلة ونماذج التعليمات البرمجية" . developer.apple.com . تم الاطلاع عليه بتاريخ 2017-07-07 .
  27. "الأدلة ونماذج التعليمات البرمجية" . developer.apple.com . تم الاطلاع عليه بتاريخ 2017-07-07 .
  28. "برنامج الجبر الخطي المُعدّل تلقائيًا (ATLAS)" . math-atlas.sourceforge.net . تم الاطلاع عليه بتاريخ 7 يوليو 2017 .
  29. blis: إطار عمل برمجي لإنشاء مكتبات شبيهة بـ BLAS ، flame، 30-06-2017 ، تم الاطلاع عليه بتاريخ 07-07-2017
  30. مستودع BLIS على GitHub ، 15 أكتوبر 2021
  31. "مكتبة AMP BLAS بلغة C++" . CodePlex . مؤرشفة من الأصل بتاريخ 2017-07-08 . تم الاطلاع عليها بتاريخ 2017-07-07 .
  32. "cuBLAS" . مطورو NVIDIA . 29-07-2013 . تم الاطلاع عليه بتاريخ 07-07-2017 .
  33. "NVBLAS" . مطورو NVIDIA . 15-05-2018 . تم الاطلاع عليه بتاريخ 15-05-2018 .
  34. clBLAS: مكتبة برمجية تحتوي على دوال BLAS مكتوبة بلغة OpenCL ، clMathLibraries، 2017-07-03 ، تم الاطلاع عليها بتاريخ 2017-07-07
  35. ^ نوغتيرين ، سيدريك (05/07/2017)، CLBlast: Tuned OpenCL BLAS ، استرجاعها 2017/07/07
  36. مركز معارف IBM: مكتبة البرامج الفرعية الهندسية والعلمية
  37. ميلفيلد، كينت. "GotoBLAS2" . مركز تكساس للحوسبة المتقدمة . مؤرشف من الأصل بتاريخ 23 مارس 2020. تم الاطلاع عليه بتاريخ 17 مارس 2024 .
  38. "مكتبة نواة الرياضيات من إنتل (Intel MKL) | برامج إنتل" . software.intel.com . تم الاطلاع عليه بتاريخ 7 يوليو 2017 .
  39. ماثكيسان، إن إي سي. "ماثكيسان" . www.mathkeisan.com . تم الاطلاع عليه بتاريخ 7 يوليو 2017 .
  40. "BLAS (برامج فرعية أساسية في الجبر الخطي)" . www.netlib.org . تم الاطلاع عليه بتاريخ 2017-07-07 .
  41. "BLAS (برامج فرعية أساسية في الجبر الخطي)" . www.netlib.org . تم الاطلاع عليه بتاريخ 2017-07-07 .
  42. "OpenBLAS: مكتبة BLAS مُحسّنة" . www.openblas.net . تم الاطلاع عليه بتاريخ 7 يوليو 2017 .
  43. "PDLIB/SX: حلول الأعمال | NEC" . مؤرشف من الأصل بتاريخ 22 فبراير 2007. تم الاطلاع عليه بتاريخ 20 مايو 2007 .
  44. "rocBLAS" . rocmdocs.amd.com . مؤرشف من الأصل بتاريخ 22-05-2021 . تم الاطلاع عليه بتاريخ 21-05-2021 .
  45. "المكتبة العلمية SGI - SCSL: الصفحة الرئيسية" . مؤرشفة من الأصل بتاريخ 13 مايو 2007. تم الاطلاع عليها بتاريخ 20 مايو 2007 .
  46. "Oracle Developer Studio" . www.oracle.com . تم الاطلاع عليه بتاريخ 7 يوليو 2017 .
  47. "Boost Basic Linear Algebra - 1.60.0" . www.boost.org . تم الاطلاع عليه بتاريخ 7 يوليو 2017 .
  48. "Armadillo: مكتبة الجبر الخطي بلغة C++" . arma.sourceforge.net . تم الاطلاع عليه بتاريخ 2017-07-07 .
  49. "مكتبات Dlang العددية والنظامية" . GitHub .
  50. "Elemental: جبر خطي مباشر كثيف ومتفرق ذو ذاكرة موزعة وتحسين — Elemental" . libelemental.org . مؤرشف من الأصل بتاريخ 2013-08-01 . تم الاطلاع عليه بتاريخ 2017-07-07 .
  51. "هاسيم" . سورس فورج . 17-08-2015 . تم الاطلاع عليه بتاريخ 07-07-2017 .
  52. داف، إيان س.؛ هيرو، مايكل أ.؛ بوزو، رولدان (2002). "نظرة عامة على البرامج الفرعية للجبر الخطي الأساسي المتفرق: المعيار الجديد من المنتدى التقني لـ BLAS". معاملات ACM في البرمجيات الرياضية . 28 (2): 239-267 . doi : 10.1145/567806.567810 . S2CID 9411006 . 
  53. دونغارا، جاك؛ هامرلينغ، سفين؛ هايام، نيكولاس جيه؛ ريلتون، صموئيل دي؛ فاليرو-لارا، بيدرو؛ زونون، ماوسي (2017). "تصميم وأداء مكتبة BLAS المجمعة على أنظمة الحوسبة الحديثة عالية الأداء" . وقائع علوم الحاسوب . 108 : 495-504 . doi : 10.1016/j.procs.2017.05.138 . hdl : 2117/106913 .
  54. هيرب، كونستانتين؛ ويلتر، بول (2022). "التكامل الزمني المتوازي باستخدام إجراءات BLAS (برامج فرعية للجبر الخطي الأساسي) المجمعة". اتصالات فيزياء الحاسوب . 270 108181. arXiv : 2108.07126 . Bibcode : 2022CoPhC.27008181H . doi : 10.1016/j.cpc.2021.108181 . S2CID 237091802 . 

للمزيد من القراءة

  • منتدى BLAST (21-08-2001)، معيار منتدى البرامج الفرعية الأساسية للجبر الخطي (BLAST) ، نوكسفيل، تينيسي: جامعة تينيسي
  • دودسون، دي إس؛ غرايمز، آر جي (1982)، "ملاحظة حول الخوارزمية 539: برامج فرعية أساسية للجبر الخطي لاستخدامها في لغة فورتران"، معاملات ACM للبرمجيات الرياضية ، 8 (4): 403-404 ، doi : 10.1145/356012.356020 ، S2CID 43081631 
  • دودسون، دي إس (1983)، "تصحيح: ملاحظة على "الخوارزمية 539: إجراءات فرعية أساسية للجبر الخطي لاستخدام FORTRAN"، ACM Trans. Math. Softw. ، 9 : 140، doi : 10.1145/356022.356032 ، S2CID 22163977 
  • JJ Dongarra, J. Du Croz, S. Hammarling, and RJ Hanson, Algorithm 656: An extended set of FORTRAN Basic Linear Algebra Subprograms, ACM Trans. Math. Softw., 14 (1988), pp.  18 32.
  • JJ Dongarra, J. Du Croz, IS Duff, and S. Hammarling, A set of Level 3 Basic Linear Algebra Subprograms, ACM Trans. Math. Softw., 16 (1990), pp.  1 17.
  • JJ Dongarra, J. Du Croz, IS Duff, and S. Hammarling, Algorithm 679: A set of Level 3 Basic Linear Algebra Subprograms, ACM Trans. Math. Softw., 16 (1990), pp.  18 28.
BLAS الجديد
  • LS Blackford, J. Demmel, J. Dongarra, I. Duff, S. Hammarling, G. Henry, M. Heroux, L. Kaufman, A. Lumsdaine, A. Petitet, R. Pozo, K. Remington, RC Whaley, An Updated Set of Basic Linear Algebra Subprograms (BLAS), ACM Trans. Math. Softw., 28-2 (2002), pp.  135 151.
  • J. Dongarra, Basic Linear Algebra Subprograms Technical Forum Standard, International Journal of High Performance Applications and Supercomputing, 16(1) (2002), pp.  1 111, and International Journal of High Performance Applications and Supercomputing, 16(2) (2002), pp.  115 199.
  • الصفحة الرئيسية لمكتبة BLAS على موقع Netlib.org
  • الأسئلة الشائعة حول BLAS
  • دليل مرجعي سريع لـ BLAS من دليل مستخدمي LAPACK
  • مقابلة تاريخية شفهية مع تشارلز ل. لوسون: يتحدث أحد المؤلفين الأصليين لـ BLAS عن نشأتها في مقابلة تاريخية شفهية. أجراها توماس هايغ في 6 و7 نوفمبر 2004، في سان كليمنتي، كاليفورنيا. جمعية الرياضيات الصناعية والتطبيقية، فيلادلفيا، بنسلفانيا.
  • مقابلة تاريخية شفهية مع جاك دونغارا : في مقابلة تاريخية شفهية، يستكشف جاك دونغارا العلاقة المبكرة بين مكتبة BLAS وبرنامج LINPACK، وإنشاء إصدارات BLAS ذات مستوى أعلى للبنى الجديدة، وعمله اللاحق على نظام ATLAS لتحسين BLAS تلقائيًا لأجهزة معينة. جاك دونغارا، مقابلة تاريخية شفهية أجراها توماس هايغ، 26 أبريل 2005، جامعة تينيسي، نوكسفيل، تينيسي. جمعية الرياضيات الصناعية والتطبيقية، فيلادلفيا، بنسلفانيا.
  • كيف يحقق BLAS هذا الأداء الفائق؟ تستغرق عشر عمليات ضرب مصفوفات بسيطة بحجم 1000 × 1000 (1010 عملية ضرب وجمع للأعداد العشرية  ) 15.77 ثانية على  معالج بسرعة 2.6 جيجاهرتز؛ بينما يستغرق تنفيذ BLAS 1.32  ثانية.
  • نظرة عامة على البرامج الفرعية للجبر الخطي الأساسي المتفرق: المعيار الجديد من المنتدى التقني لمكتبة BLAS