OCCA هو إطار عمل مفتوح المصدر ومحمول ومحايد للبرمجة المتوازية على منصات غير متجانسة. توفر واجهة برمجة تطبيقات OCCA نماذج موحدة لمفاهيم البرمجة غير المتجانسة - مثل الجهاز أو الذاكرة أو النواة - بينما تتيح لغة OCCA Kernel (OKL) إنشاء نواة للأجهزة المحمولة باستخدام امتداد قائم على التوجيه للغة C.
تعتمد تطبيقات العلوم والهندسة الحسابية المهمة من القطاعين العام والخاص على OCCA. ومن بين المستخدمين البارزين وزارة الطاقة الأمريكية وشركة شل.
الميزات الرئيسية
يستخدم OCCA نظام البناء CMake. قم بمراجعة دليل التثبيت للحصول على نظرة عامة شاملة لجميع إعدادات البناء وتعليمات البناء على نظام التشغيل Windows أو Mac OS.
للراحة، تم توفير برنامج shell configure-cmake.sh
لقيادة بناء CMake. يمكن تعديل المترجمين والأعلام ومعلمات البناء الأخرى هناك. افتراضيًا، يستخدم هذا البرنامج النصي ./build
و ./install
install لدلائل الإنشاء والتثبيت.
يوضح ما يلي التسلسل النموذجي لأوامر Shell لإنشاء واختبار وتثبيت occa:
$ ./configure-cmake.sh
$ cmake --build build --parallel < number-of-threads >
$ ctest --test-dir build --output-on-failure
$ cmake --install build --prefix install
إذا تم تثبيت التبعيات في موقع غير قياسي، فقم بتعيين متغير البيئة المقابل لهذا المسار.
أثناء التثبيت، يتم إنشاء ملف Env Modules <install-prefix>/modulefiles/occa
. عند تحميل هذه الوحدة، يتم إلحاق المسارات إلى مجلدات bin
و lib
و include
المثبتة بمتغيرات البيئة مثل PATH
و LD_LIBRARY_PATH
.
للراحة، توفر OCCA ملفات حزمة CMake التي تم تكوينها أثناء التثبيت. تحدد ملفات الحزمة هذه هدفًا مستوردًا، OCCA::libocca
، وتبحث عن كافة التبعيات المطلوبة.
على سبيل المثال، قد يتضمن ملف CMakeLists.txt للمشاريع النهائية التي تستخدم OCCA
find_package (OCCA REQUIRED)
add_executable (downstream-app ...)
target_link_libraries (downstream-app PRIVATE OCCA::libocca)
add_library (downstream-lib ...)
target_link_libraries (downstream-lib PUBLIC OCCA::libocca)
يمكن العثور على واجهة سطر أوامر OCCA في <install-prefix>/bin/occa
. يمكن استخدام هذه الأداة للاستعلام عن معلومات حول الأجهزة وتكوين OCCA على نظام أساسي معين.
على سبيل المثال، سيؤدي استدعاء occa info
إلى توفير واجهات OCCA الخلفية ومواصفات الأجهزة ذات الصلة، بينما يعرض occa env
قيم متغيرات البيئة ذات الصلة بـ OCCA. لرؤية قائمة بجميع الخيارات المتاحة، اتصل بـ occa --help
.
$ occa info
========+======================+=================================
CPU(s) | Processor Name | AMD EPYC 7532 32-Core Processor
| Memory | 251.6 GB
| Clock Frequency | 2.4 MHz
| SIMD Instruction Set | SSE2
| SIMD Width | 128 bits
| L1d Cache Size | 1 MB
| L1i Cache Size | 1 MB
| L2 Cache Size | 16 MB
| L3 Cache Size | 256 MB
========+======================+=================================
OpenCL | Platform 0 | NVIDIA CUDA
| ----------------------+---------------------------------
| Device 0 | NVIDIA A100-PCIE-40GB
| Device Type | gpu
| Compute Cores | 108
| Global Memory | 39.40 GB
========+======================+=================================
CUDA | Device Name | NVIDIA A100-PCIE-40GB
| Device ID | 0
| Memory | 39.40 GB
========+======================+=================================
بحاجة الى مساعدة؟ قم بمراجعة موقع wiki الخاص بالمستودع أو اطرح سؤالاً في فئة مناقشات الأسئلة والأجوبة.
لتقديم الملاحظات، ابدأ محادثة في فئات المناقشة العامة أو مناقشة الأفكار.
تم دعم هذا العمل جزئيًا بواسطة
OCCA متاح بموجب ترخيص MIT