it-swarm.asia

ما هي العلاقة بين BLAS و LAPACK و ATLAS

لا أفهم كيف ترتبط BLAS و LAPACK و ATLAS وكيف يجب استخدامها معًا! لقد كنت أطلع على جميع كتيباتهم ولدي فكرة عامة عن BLAS و LAPACK وكيفية استخدامها مع الأمثلة القليلة جدًا التي أجدها ، لكن لا يمكنني العثور على أي أمثلة فعلية باستخدام ATLAS لمعرفة مدى ارتباطها بـ هذين.

أحاول القيام ببعض الأعمال ذات المستوى المنخفض على المصفوفات ولغتي الأساسية هي C. أولاً. أردت استخدام GSL ، لكن يقول أنه إذا كنت تريد أفضل أداء ، فيجب عليك استخدام BLAS و ATLAS. هل هناك أي صفحة ويب جيدة تقدم بعض الأمثلة الجميلة حول كيفية استخدام هذه (في C) معًا؟ بمعنى آخر ، أبحث عن برنامج تعليمي حول استخدام الثلاثة (أو أي مجموعة فرعية منهم!). باختصار أنا في حيرة من أمري!

118
makhlaghi

BLAS هي عبارة عن مجموعة من العمليات الحسابية ذات المستوى المنخفض والناقلات ("اضرب الموجه بواسطة عددي" ، "اضرب مصففتين وأضف إلى مصفوفة ثالثة ، إلخ ...).

LAPACK هي عبارة عن مجموعة من عمليات الجبر الخطي عالية المستوى. أشياء مثل معاملات المصفوفة (LU أو LLt أو QR أو SVD أو Schur ، إلخ) التي تستخدم للقيام بأشياء مثل "البحث عن القيم الذاتية للمصفوفة" أو "العثور على القيم الفردية للمصفوفة" أو "حل نظام خطي" ". بنيت LAPACK على رأس BLAS. يستخدم العديد من مستخدمي LAPACK فقط واجهات LAPACK ولا يحتاجون أبدًا إلى معرفة BLAS على الإطلاق. يتم تجميع LAPACK عمومًا بشكل منفصل عن BLAS ، ويمكنه استخدام أي تطبيق BLAS محسّن للغاية لديك.

ATLAS هو تطبيق محمول جيد إلى حد معقول لواجهات BLAS ، والذي ينفذ أيضًا بعضًا من عمليات LAPACK الأكثر استخدامًا.

ما "يجب عليك استخدام" يعتمد إلى حد ما على تفاصيل ما تحاول القيام به وما النظام الأساسي الذي تستخدمه. لن تخطئ كثيراً في استخدام "ATLAS + LAPACK".

137
Stephen Canon

أطلس هو الآن عفا عليها الزمن تماما. تم تطويره في وقت كان يُعتقد فيه أن تحسين نظام BLAS للعديد من المنصات يتجاوز قدرة البشر ، ونتيجة لذلك ، كان التوليد التلقائي والتشغيل التلقائي هو السبيل للذهاب.

في أوائل العقد الأول من القرن العشرين ، ظهر Kazushige Goto ، الذي أظهر كيف يمكن ترميز التطبيقات عالية الكفاءة يدويًا. قد تستمتع بمقال مثير للاهتمام في صحيفة نيويورك تايمز: https://www.nytimes.com/2005/11/28/technology/writing-the-fastest-code-by-hand ، للحصول على متعة واحد في الإنسان والكمبيوتر keeps.html .

كان لدى Kazushige من ناحية رؤى أفضل في النظرية التي تستند إلى تطبيقات عالية الأداء لتكاثر المصفوفة ، ومن ناحية أخرى صممت هذه الأفكار بشكل أفضل. إن منهجه ، الذي يكون عادةً على وحدات المعالجة المركزية الحالية هو الأفضل أداءً ، ليس في مساحة البحث التي يقوم بها ATLAS. وبالتالي ، أطلس هو أدنى بطبيعتها. أصبح تطبيق Kazushige لنظام BLAS يُعرف باسم GotoBLAS. كان متشعب كما OpenBLAS عندما انضم إلى الصناعة.

تم إعادة صياغة الأفكار الكامنة وراء GotoBLAS في تطبيق جديد ، هو إطار برنامج إنشاء مثيل للمكتبة (BLIS) يشبه BLAS ( https://github.com/flame/blis ) ، الذي ينفذ نفس الخوارزميات ، لكنه يبني الكود بحيث يحتاج أقل إلى أن يكون مخصصًا لتنفيذ بنية جديدة. تم ترميز BLIS في C.

ما توضحه هذه المناقشة هو أن هناك العديد من تطبيقات BLAS. تعد BLAS نفسها معيارًا فعليًا للواجهة. كان أطلس مرة واحدة للدولة من الفن. لم يعد.

6
Robert van de Geijn

على حد علمي ، وبعد العمل من خلال مستودع ATLAS ، يبدو أنه يتضمن إعادة تنفيذ BLAS في C. هناك ما هو أكثر بقليل من ذلك ولكن آمل أن يجيب على السؤال.

0
cdcdcd