OpenHMPP

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

OpenHMPP заснована на  концепції codelets, функції можуть бути виконані віддалено на апаратних прискорювачах.

Концепція OpenHMPP codelet

Codelet має наступні властивості:

  1. Це чиста функція.
    • Вона не містить статичних чи динамічних змінних, не посилається на якісь глобальні змінні за винятком того, коли вона була оголошена в HMPP директиві «resident»
    • Не містить викликів функцій які можуть бути вбудованими. Це включає в себе використання бібліотек і системних функцій таких як malloc, printf, …
    • Кожен виклик функції повинен посилатись до статичної чистої функції (без покажчиків на функції).
  2. Вона не повертає ніякого значення(функція void в C або subroutine в Fortran).
  3. Число аргументів повинно бути виправлено (тобто це не може бути функція зі змінним числом аргументів як в stdarg.h C).
  4. Вона не рекурсивна.
  5. Його параметри вважаються не псевдонімом (перегляньте Aliasing (computing)).
  6. Він не містить директив callsite (тобто RPC на інший codelet) або інших HMPP директив.

Ці властивості гарантують, що RPC може бути віддалено виконана на апаратних прискорювачах. Цей RPC і пов'язані з ним передачі даних можуть бути асинхронними.

Codelet RPCs

Синхронний проти асинхронного RPC

HMPP надає синхронний і асинхронний RPC. Виконання асинхронних операцій залежить від апаратних засобів.

Модель пам'яті HMPP

Модель пам'яті HMPP

HMPP розглядає два адресних простори: хост процесор і пам'ять апаратного прискорювача.

Поняття директив

Директиви OpenHMPP можуть розглядатися як «мета-інформація» додана у вихідний код програми. Вони гарантують безпеку мета-інформації, тобто вони не змінюють поведінку початкового коду. Вони стосуються віддаленого виконання (RPC) функції, а також передачі даних в/з пам'яті апаратного прискорювача.

В таблиці нижче представлені директиви OpenHMPP. В директивах OpenHMPP розглядаються різні проблеми: деякі з них присвячені оголошенню та інші призначені для управління виконанням.

Інструкції керування потоком Директиви для управління даними
Оголошення codelet

group

resident

map mapbyname

Оперативні директиви callsite

synchronize region

allocate

release advancedload delegatedstore

Концепція набору директив

Однією з основних точок НМРР підходу є поняття директив і пов'язаних з ними міток, що дозволяють виявити цілісну структуру на весь набір директив поширений в додатку.

Існує два види міток:

  • Один пов'язаний з codelet. Загалом, директиви які несуть цей вид міток обмежуються тільки одним codelet (викликається автономний codelet в іншій частині документа щоб відрізнити його від групи codelets).
  • Інший пов'язаний з групою codelets. Ці мітки позначені таким чином: «<LabelOfGroup>», де «LabelOfGroup» — це ім'я, задане користувачем. Загалом, директиви, які мають позначку цього типу відносяться до цілої групи.

OpenHMPP Синтаксис Директив

Для того, щоб спростити позначення, регулярні вирази будуть використані для опису синтаксису HMPP директив.

Кольорові позначення нижче використовується для опису синтаксису директив:

  • Зарезервовані HMPP ключові слова зелені;
  • Елементи граматики, які можуть бути відкинуті в ключових словах HMPP червоні;
  • Змінні користувача залишаються в чорними.

Загальний синтаксис

Загальний синтаксис директив OpenHMPP є:

  • Для мови C:
#pragma hmpp <grp_label> [codelet_label]? directive_type [,directive_parameters]* [&]
  • Для мови FORTRAN:
!$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).

OpenHMPP директиви

Директиви для оголошення і виконання codelet

Директива codelet оголошує обчислення для віддаленого виконання на апаратному прискорювачі.

Для директиви codelet :

  • Мітка codelet є обов'язковою і повинна бути унікальною в додатку
  • Мітка групи не вимагається, якщо жодна з груп не визначена.
  • Директива codelet вставляється безпосередньо перед оголошенням функції.

Синтаксис директиви:

 #pragma hmpp <grp_label> codelet_label codelet 
                            [, version = major.minor[.micro]?]?
                            [, args[arg_items].io=[[in|out|inout]]*
                            [, args[arg_items].size={dimsize[,dimsize]*}]*
                            [, args[arg_items].const=true]*
                            [, cond = "expr"]
                            [, target=target_name[:target_name]*]

Директива callsite визначає, яким чином Використовувати codelet в даний момент в програмі. 

Синтаксис директиви: 

 #pragma hmpp <grp_label> codelet_label callsite
                     [, asynchronous]?
                     [, args[arg_items].size={dimsize[,dimsize]*}]*
                     [, args[arg_items].advancedload=[[true|false]]*
                     [, args[arg_items].addr="expr"]*
                     [, args[arg_items].noupdate=true]*

Приклад показаний тут:

 /* declaration of the codelet */
 #pragma hmpp simple1 codelet, args[outv].io=inout, target=CUDA
 static void matvec(int sn, int sm, float inv[sm], float inm[sn][sm], float *outv){
     int i, j;
     for (i = 0 ; i < sm ; i++) {
       float temp = outv[i];
       for (j = 0 ; j < sn ; j++) {
         temp += inv[j] * inm[i][ j];
     }
    outv[i] = temp;
  }
  
  int main(int argc, char **argv) {
    int n;
    ........
  
  /* codelet use */
  #pragma hmpp simple1 callsite, args[outv].size={n}
  matvec(n, m, myinc, inm, myoutv);
    ........
  }

У деяких випадках, певне управління даних у всьому додатку потрібно (CPU/GPU оптимізації переміщення даних, загальні змінні...). Директива group дозволяє оголошувати групу codelets. Параметри, зазначені в цій директиві, застосовуються до всіх codelets, що належать до цієї групи. 

Синтаксис директиви: 

#pragma hmpp <grp_label> group 
                          [, version = <major>.<minor>[.<micro>]?]? 
                          [, target = target_name[:target_name]*]]? 
                          [, cond  = “expr]?

Обмін даними між codelets

Типи та розміри всіх зіставлених аргументи повинні бути ідентичними.

Директива map відображає кілька аргументів на пристрої. 

#pragma hmpp <grp_label>  map, args[arg_items]

Ця директива дуже схожа на map за винятком того, що аргументи, які будуть зіставлені визначаються по їменам. Директива mapbyname є еквівалентом кількох директив map .

#pragma hmpp <grp_label> mapbyname [,variableName]+

Глобальні змінні 

Директива resident оголошує деякі змінні як глобальні всередині групи. Ці змінні можуть бути доступні безпосередньо з будь-якого codelet, що належить до групи. Ця директива застосовується до оператора оголошення тільки наступною за ним в вихідному коді.

Синтаксис цієї директиви:  #pragma hmpp "/span>grp_label<span style="color:#339933;"" resident

               [, args[::var_name].io=[[in|out|inout]]*
               [, args[::var_name].size={dimsize[,dimsize]*}]*
               [, args[::var_name].addr="expr"]*
               [, args[::var_name].const=true]*

Позначення ::var_name з префіксом ::означає, що змінна програми оголошена як resident.

Прискорення регіонів 

Region це злиття директив codelet/callsite. Мета полягає в тому, щоб уникнути реструктуризації коду для побудови codelet. Тому, всі атрибути доступні для codelet або callsite директив можуть бути використані в директивах regions .

В мові C: 

#pragma hmpp [<MyGroup>] [label] region         
                           [, args[arg_items].io=[[in|out|inout]]*
                           [, cond = "expr"]<
                           [, args[arg_items].const=true]*
                           [, target=target_name[:target_name]*]
                           [, args[arg_items].size={dimsize[,dimsize]*}]*
                           [, args[arg_items].advancedload=[[true|false]]*
                           [, args[arg_items].addr="expr"]*
                           [, args[arg_items].noupdate=true]*
                           [, asynchronous]?
                           [, private=[arg_items]]*
   {
C BLOCK STATEMENTS
   }

Зовнішні посилання

Примітки

  1. Dolbeau, Romain; Bihan, Stéphane; Bodin, François (4 October 2007). HMPP: A Hybrid Multi-core Parallel Programming Environment [Архівовано 16 січня 2014 у Wayback Machine.] . Workshop on General Purpose Processing on Graphics Processing Units [Архівовано 23 вересня 2011 у Wayback Machine.]. Retrieved 14 January 2014.

Read other articles:

«Серия „Киев глазами художников“: Нерушимая София. Юрий Химич, 1965», почтовая марка Украины, 2005 Православными себя считает большинство населения современной Украины (свыше 70 %[1][2]) и подавляющее большинство в центральных, восточных и южных регионах страны. При ...

 

Video games Platforms Arcade video game Console game Game console Home console Handheld console Electronic game Audio game Electronic handheld Online game Browser game Social-network game Mobile game PC game Linux Mac Virtual reality game Genres Action Beat 'em up Hack and slash Fighting Platform Shooter Survival Battle royale Action-adventure Stealth Adventure Interactive fiction Interactive movie Visual novel Gacha Horror Survival horror Licensed Masocore Massively multiplayer online Role-...

 

Extinct marsupial-like mammal LycopsisTemporal range: Mid-Late Miocene (Santacrucian-Chasicoan)~16.3–9.0 Ma PreꞒ Ꞓ O S D C P T J K Pg N Fossil of L. longirostrus Scientific classification Kingdom: Animalia Phylum: Chordata Class: Mammalia Order: †Sparassodonta Superfamily: †Borhyaenoidea Genus: †LycopsisCabrera 1927 Species L. torresi Cabrera 1927 (type species) L. longirostrus Marshall 1976 L. viverensis Forasiepi et al. 2003 Synonyms Anatherium oxyrhynchus Ameghino 1894 Lyc...

Galaxy in the constellation Andromeda NGC 995Pan-STARRS image of NGC 995Observation data (J2000 epoch)ConstellationAndromedaRight ascension02h 38m 32.05009s[1]Declination+41° 31′ 45.3471″[1]Redshift0.01339[2]Heliocentric radial velocity3987 km/s[2]Distance177.7 Mly (54.49 Mpc)[3]Apparent magnitude (B)14.9[2]CharacteristicsTypeS0[2]Other designationsUGC 2118, MCG +07-06-044, PGC 10008[2] N...

 

Bidarray Vue générale du village de Bidarray depuis l'ouest. Blason Administration Pays France Région Nouvelle-Aquitaine Département Pyrénées-Atlantiques Arrondissement Bayonne Intercommunalité Communauté d'agglomération du Pays Basque Maire Mandat Jean-Michel Anchordoquy 2020-2026 Code postal 64780 Code commune 64124 Démographie Gentilé Bidarraitar[1] Populationmunicipale 657 hab. (2021 ) Densité 17 hab./km2 Géographie Coordonnées 43° 16′ 03″ nord...

 

Ayo Edebiri nel 2018 Ayo Edebiri (Boston, 3 ottobre 1995) è una comica, attrice, sceneggiatrice e produttrice televisiva statunitense. È nota principalmente con il ruolo di Sydney Adamu nella pluripremiata serie televisiva The Bear, per la quale si è aggiudicata il Critics' Choice Award, il Primetime Emmy Award, due Screen Actors Guild Awards e il Golden Globe come migliore attrice in una serie commedia o musicale. Nel 2024 ha ricevuto una candidatura al BAFTA alla miglior stella emergente...

Voce principale: Futbol'nyj Klub Krasnodar. FK KrasnodarStagione 2016-2017Sport calcio Squadra Krasnodar Allenatore Oleg Kononov (fino al 12 settembre)Igor' Šalimov (dal 13 settembre 2013) Prem'er-Liga3° Coppa di RussiaQuarti di finale Europa LeagueOttavi di finale Maggiori presenzeCampionato: Andreas Granqvist, Jurij Gazinskij (29)Totale: Jurij Gazinskij (44) Miglior marcatoreCampionato: Fëdor Smolov (18)Totale: Fëdor Smolov (25) 2015-2016 2017-2018 Si invita a seguire il modello d...

 

Artikel ini memiliki beberapa masalah. Tolong bantu memperbaikinya atau diskusikan masalah-masalah ini di halaman pembicaraannya. (Pelajari bagaimana dan kapan saat yang tepat untuk menghapus templat pesan ini) Artikel ini tidak memiliki bagian pembuka yang sesuai dengan standar Wikipedia. Mohon tulis paragraf pembuka yang informatif sehingga pembaca dapat memahami maksud dari Objek wisata di Kota Medan. Contoh paragraf pembuka Objek wisata di Kota Medan adalah .... (Pelajari cara dan kapan s...

 

Football tournament season 2017 Copa do BrasilTournament detailsCountry BrazilDatesFebruary 8 – September 27Teams91Final positionsChampionsCruzeiro (5th title)Runner-upFlamengoTournament statisticsMatches played120Goals scored282 (2.35 per match)Top goal scorer(s)Lucas BarriosBrennerLéo GamalhoRafael Sóbis(5 goals each)Best playerDiego (Flamengo)← 20162018 → The 2017 Copa do Brasil (officially the Copa Continental Pneus do Brasil 2017 for sponsors...

Musical form and a music genre typical of Spain and parts of Latin America This article is about the dance. For other uses, see Fandango (disambiguation). This article includes a list of general references, but it lacks sufficient corresponding inline citations. Please help to improve this article by introducing more precise citations. (May 2012) (Learn how and when to remove this message) Fandango is a lively partner dance originating in Portugal and Spain, usually in triple meter, tradition...

 

Chronologies Données clés 1929 1930 1931  1932  1933 1934 1935Décennies :1900 1910 1920  1930  1940 1950 1960Siècles :XVIIIe XIXe  XXe  XXIe XXIIeMillénaires :-Ier Ier  IIe  IIIe Chronologies géographiques Afrique Afrique du Sud, Algérie, Angola, Bénin, Botswana, Burkina Faso, Burundi, Cameroun, Cap-Vert, République centrafricaine, Comores, République du Congo, République démocratique du Congo, Côte d'Ivoire, Djibouti, Égyp...

 

هذه المقالة يتيمة إذ تصل إليها مقالات أخرى قليلة جدًا. فضلًا، ساعد بإضافة وصلة إليها في مقالات متعلقة بها. (يونيو 2019) الهندسة واسعة النطاق هي شكل من أشكال الهندسة الاستكشافية المعنية ببناء الهياكل على نطاق هائل. عادةً ما يكون طول هذه الهياكل 1000 كم (620 ميل) على الأقل وبعبارة أخ...

The Fischer–Saller Scale, named for eugenicist Eugen Fischer and German anthropologist Karl Saller [de], is used in physical anthropology and medicine to determine the shades of hair color. The scale uses the following designations:[1][2][3][4] A very light blond B to E light blond F to L blond M to O dark blond P to T light brown to medium brown – chatain U to Y dark brown/black – brunet I, II, III, IV red V, VI red blond Earlier scale An ea...

 

Turkish singer BengüBengü in 2008BornBengü Erden[1] (1979-04-02) 2 April 1979 (age 45)İzmir, TurkeyOccupationsSingersongwriterSpouse Selim Selimoğlu ​(m. 2018)​Children2Musical careerGenresPopInstrumentVocalsYears active2000–presentLabelsKiss MüzikDSMErol KöseAvrupaDMC Musical artistWebsitewww.bengu.com.tr Bengü Erden (born 2 April[2] 1979) is a Turkish singer. She became first familiar with music during her time at the İzmir State ...

 

Dieser Artikel behandelt das chemische Element. Siehe auch Chrom (Begriffsklärung). Eigenschaften                                                                                                                  ...

Coppa del Generalísimo 1942Copa del Generalísimo 1942 Competizione Copa del Rey Sport Calcio Edizione 38ª Organizzatore Federazione calcistica della Spagna Date 26 aprile 1942 - 21 giugno 1942 Luogo  Spagna Partecipanti 32 Risultati Vincitore  Barcellona(9º titolo) Secondo  Athletic Bilbao Statistiche Incontri disputati 68 Gol segnati 252 (3,71 per incontro) Manuale La Copa del Generalísimo 1942 fu la 38ª edizione della Coppa di Spagna. Il torneo iniziò il 26 april...

 

Men's 110 metres hurdlesat the Games of the XV OlympiadLeft-right: Davis, Dillard, BarnardVenueHelsinki Olympic StadiumDatesJuly 23 (heats)July 24 (semifinals, final)Competitors30 from 20 nationsWinning time13.7 ORMedalists Harrison Dillard United States Jack Davis United States Arthur Barnard United States← 19481956 → Video on YouTube amateur filmVideo on YouTube Official film Athletics at the1952 Summer OlympicsTrack events100 mmenwomen200 mmen...

 

Public research university in Moscow, Russia MGU redirects here. For the most general unifier, see Unification (computer science). You can help expand this article with text translated from the corresponding article in Russian. (June 2024) Click [show] for important translation instructions. Machine translation, like DeepL or Google Translate, is a useful starting point for translations, but translators must revise errors as necessary and confirm that the translation is accurate, rather ...

توزيع لغات العالم بحسب أسرتها. أسرة اللغات[1] أو عائلة اللغات هي مجموعة اللغات التي تشترك في الأصل، ولا يتفق العلماء في تقسيم بعض اللغات لكن هذا التقسيم يبدو من أفضل التقسيمات: في أفريقيا والشرق الأوسط: لغات أفريقية آسيوية ومنها اللغة العربية والعبرية والأرامية في آسيا�...

 

Lorenzo Lotto's portrait of Andrea Odoni, 1527. Part of the Dutch Gift, now in the Royal Collection. Paolo Veronese and workshop, The Mystic Marriage of St Catherine of Alexandria, c. 1562–1569. Also part of the Dutch Gift, now in the Royal Collection. The Reynst Collection, probably the most extensive Dutch 17th-century collection of art and artefacts, was owned by the Dutch merchants Gerrit Reynst (also known as Gerard Reynst) and Jan Reynst. The collection was put on display in their hou...