فوثارك (لغة برمجة)
فوثارك هي لغة برمجة متعددة الأنماط ، عالية المستوى ، وظيفية ، متوازية البيانات ، ومُخصصة للمصفوفات . وهي لهجة من لغة ML ، طُوّرت في الأصل في قسم علوم الحاسوب بجامعة كوبنهاغن (DIKU) كجزء من مشروع HIPERFIT. [ 2 ] تركز فوثارك على تمكين تنفيذ البرامج المتوازية للبيانات المكتوبة بأسلوب وظيفي بكفاءة عالية على أجهزة متوازية ضخمة ، وخاصة وحدات معالجة الرسومات (GPUs). تستلهم فوثارك بشكل كبير من NESL ، ويستخدم تطبيقها صيغة معدلة من تحويل التسطيح ، لكنها تفرض قيودًا على كيفية التعبير عن التوازي لتمكين تحسينات أكثر فعالية للمُصرّف. على وجه الخصوص، لا تدعم فوثارك التوازي غير المنتظم للبيانات المتداخلة. [ 3 ] وهي برنامج مجاني ومفتوح المصدر، مُرخص بموجب ترخيص ISC .
ملخص
فوثارك هي لغة من عائلة لغات ML ، ذات بنية نحوية غير حساسة للمسافات البادئة، مشتقة من لغات OCaml و Standard ML و Haskell . يعتمد نظام أنواعها على نظام أنواع هيندلي-ميلنر مع مجموعة متنوعة من الإضافات، مثل أنواع التفرد والأنواع المعتمدة على الحجم . لا تُصمم فوثارك كلغة برمجة عامة لكتابة تطبيقات كاملة، بل تركز على كتابة نوى حسابية (ليست بالضرورة هي نفسها نواة وحدة معالجة الرسومات ) يتم استدعاؤها من تطبيقات مكتوبة بلغات تقليدية. [ 4 ]
سُميت الأبجدية الرونية (فوثارك) نسبةً إلى الأحرف الستة الأولى من الأبجدية الرونية . [ 5 ] : 2
أمثلة
منتج نقطي
يقوم البرنامج التالي بحساب حاصل الضرب النقطي لمتجهين يحتويان على أرقام ذات دقة مزدوجة.
def dotprod xs ys = f64 . sum ( map2 ( * ) xs ys ))ويمكن كتابتها أيضاً بشكل مكافئ مع تحديدات صريحة للأنواع كما يلي.
دالة dotprod [ n ] ( xs : [ n ] f64 ) ( ys : [ n ] f64 ) : f64 = f64.sum ( map2 ( * ) xs ys ) )وهذا يجعل الأنواع المعتمدة على الحجم صريحة: لا يمكن استدعاء هذه الوظيفة إلا بمصفوفتين من نفس الحجم، وسيرفض مدقق النوع أي برنامج لا يمكن فيه تحديد ذلك بشكل ثابت.
ضرب المصفوفات
يقوم البرنامج التالي بتنفيذ عملية ضرب المصفوفات ، باستخدام تعريف الضرب النقطي المذكور أعلاه.
دالة matmul [ n ][ m ][ p ] ( A : [ n ][ m ] f64 ) ( B : [ m ][ p ] f64 ) : [ n ][ p ] f64 = map ( \ A_row -> map ( \ B_col -> dotprod A_row B_col ) ( transpose B )) Aيوضح هذا كيف تضمن الأنواع استدعاء الدالة فقط مع مصفوفات ذات حجم متوافق. كما أنه مثال على التوازي المتداخل للبيانات .
مراجع
- ↑ "الترخيص" . futhark-lang.org . تاريخ الاسترجاع: 26 مارس 2023.
تم التطوير في DIKU
- ↑ "الرئيسية" . hiperfit.dk .
- ↑ هنريكسن، ترولز؛ سيروب، نيلز جي دبليو؛ إلسمان، مارتن؛ هينجلين، فريتز؛ أوانسيا، كوزمين (2017). "فوثارك: برمجة وظيفية بحتة لوحدات معالجة الرسومات مع التوازي المتداخل وتحديثات المصفوفات في مكانها" (ملف PDF) . وقائع المؤتمر الثامن والثلاثين لجمعية ACM SIGPLAN حول تصميم لغات البرمجة وتنفيذها . PLDI 2017. ACM.
- ↑ "دليل مستخدم Futhark" . futhark.readthedocs.io .
- ↑ ترولز، هنريكسن (نوفمبر 2017). تصميم وتنفيذ لغة برمجة فوثارك (ملف PDF) (أطروحة دكتوراه). جامعة كوبنهاغن . تاريخ الاسترجاع: 25 مايو 2024 .
- لغات البرمجة
- لغات البرمجة عالية المستوى
- اللغات الوظيفية
- الحوسبة المتوازية
- لغات برمجة المصفوفات
- اللغات ذات الكتابة المعتمدة
- البرمجة المعتمدة على النوع
- لغات البرمجة ذات الكتابة الثابتة
- عائلة لغات البرمجة ML
- مترجمات مجانية ومفتوحة المصدر
- برنامج 2014
- لغات البرمجة التي تم إنشاؤها في عام 2014
- البرامج التي تستخدم ترخيص ISC
