Loading AI tools
З Вікіпедії, вільної енциклопедії
OpenHMPP (HMPP[1] для Hybrid Multicore Parallel Programming) — стандарт програмування для гетерогенних обчислень. Базується на основі набору директив компілятора, модель програмування призначена для маніпулювання апаратними прискорювачами без складнощів пов'язаних з GPU програмуванням. Цей підхід на основі директив був реалізований тому, що він дозволяє вільні зв'язки між програмний кодом і використанням апаратного прискорювача.
OpenHMPP модель програмування заснована на директивах надає синтаксис, щоб розвантажити обчислювання на апаратних прискорювачах та оптимізувати переміщення даних на/із апаратної пам'яті.
Модель заснована на праці CAPS (Compiler and Architecture for Embedded and Superscalar Processors) [Архівовано 16 червня 2011 у Wayback Machine.], є спільним проектом з INRIA, CNRS, University of Rennes 1 і INSA Rennes.
OpenHMPP заснована на концепції codelets, функції можуть бути виконані віддалено на апаратних прискорювачах.
Codelet має наступні властивості:
Ці властивості гарантують, що RPC може бути віддалено виконана на апаратних прискорювачах. Цей RPC і пов'язані з ним передачі даних можуть бути асинхронними.
HMPP надає синхронний і асинхронний RPC. Виконання асинхронних операцій залежить від апаратних засобів.
HMPP розглядає два адресних простори: хост процесор і пам'ять апаратного прискорювача.
Директиви OpenHMPP можуть розглядатися як «мета-інформація» додана у вихідний код програми. Вони гарантують безпеку мета-інформації, тобто вони не змінюють поведінку початкового коду. Вони стосуються віддаленого виконання (RPC) функції, а також передачі даних в/з пам'яті апаратного прискорювача.
В таблиці нижче представлені директиви OpenHMPP. В директивах OpenHMPP розглядаються різні проблеми: деякі з них присвячені оголошенню та інші призначені для управління виконанням.
Інструкції керування потоком | Директиви для управління даними | |
---|---|---|
Оголошення | codelet
group |
resident
map mapbyname |
Оперативні директиви | callsite
synchronize region |
allocate
release advancedload delegatedstore |
Однією з основних точок НМРР підходу є поняття директив і пов'язаних з ними міток, що дозволяють виявити цілісну структуру на весь набір директив поширений в додатку.
Існує два види міток:
Для того, щоб спростити позначення, регулярні вирази будуть використані для опису синтаксису HMPP директив.
Кольорові позначення нижче використовується для опису синтаксису директив:
Загальний синтаксис директив OpenHMPP є:
#pragma hmpp <grp_label> [codelet_label]? directive_type [,directive_parameters]* [&]
!$hmpp <grp_label> [codelet_label]? directive_type [,directive_parameters]* [&]
Де:
<grp_label>
: це унікальний ідентифікатор іменування групи codelets. У тих випадках, коли жодна з груп не визначена в додатку, ця мітка може просто пропущена. Дозволені назви міток повинні дотримуватись цієї граматики: [a-z, A-Z,_][a-z, A-Z,0-9,_]*. Зверніть увагу, що «< >» символи відносяться до синтаксису і є обов'язковими для такого роду міток.codelet_label
: унікальний ідентифікатор іменування codelet. Дозволені назви міток повинні дотримуватись цієї граматики: [a-z, A-Z,_][a-z, A-Z,0-9,_]*directive
: це ім'я директиви;directive_parameters
: визначає деякі параметри, пов'язані з директивою. Ці параметри можуть бути різних видів і уточнювати деякі аргументи наведені в директиві з будь-яким режимом виконання (асинхронний в порівнянні з синхронним, наприклад);[&]
: це символ, який використовується для продовження директиви на наступному рядку(те ж для C і FORTRAN).Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.