Outils pour utilisateurs

Outils du site


lang:cpp:openmp

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
lang:cpp:openmp [2019/10/16 16:26] – Ajout de "Charger dynamiquement une DLL qui est liée à OpenMP" rootlang:cpp:openmp [2022/09/05 23:05] (Version actuelle) – [linear] : fix format root
Ligne 1: Ligne 1:
-====Compilateur====+====Compilation==== 
 +===Compilateur===
 Pour activer l'option : ''-openmp'' pour ''GCC'', ''/openmp'' pour Visual Studio (''Projet''|''Propriétés''|''C/C++''|''Langage''|''Prise en charge de OpenMP''). Pour activer l'option : ''-openmp'' pour ''GCC'', ''/openmp'' pour Visual Studio (''Projet''|''Propriétés''|''C/C++''|''Langage''|''Prise en charge de OpenMP'').
  
Ligne 7: Ligne 8:
  
 [[https://bisqwit.iki.fi/story/howto/openmp/|Guide into OpenMP: Easy multithreading programming for C++]] {{ :lang:cpp:openmp:guide_into_openmp_easy_multithreading_programming_for_c_2019-10-16_15_43_58_.html |Archive du 10/02/2018 le 16/10/2019}} [[https://bisqwit.iki.fi/story/howto/openmp/|Guide into OpenMP: Easy multithreading programming for C++]] {{ :lang:cpp:openmp:guide_into_openmp_easy_multithreading_programming_for_c_2019-10-16_15_43_58_.html |Archive du 10/02/2018 le 16/10/2019}}
 +
 +===CMake===
 +
 +<code cmake>
 +find_package(OpenMP)
 +if(OpenMP_CXX_FOUND)
 +  target_link_libraries(MyTarget PUBLIC OpenMP::OpenMP_CXX)
 +endif()
 +</code>
 +
 +[[https://cliutils.gitlab.io/modern-cmake/modern-cmake.pdf|Modern CMake]] {{ :lang:cpp:openmp:modern-cmake.pdf |Archive du 01/30/2020 le 04/03/2020}}
 +
 ====Généralités de #pragma==== ====Généralités de #pragma====
 ===Définitions=== ===Définitions===
Ligne 303: Ligne 316:
 </code> </code>
  
-<note important>Les bornes de la boucle intérieure ne doit pas dépendre de la variable de la boucle externe.</note>+<WRAP center round important 60%> 
 +Les bornes de la boucle intérieure ne doit pas dépendre de la variable de la boucle externe. 
 +</WRAP>
  
 <code> <code>
Ligne 372: Ligne 387:
 Cela parallélise les instructions de calcul pour utiliser au mieux les SSE* et autres. On peut autant y faire des calculs flottants qu'en entier. Le fonctionnement est similaire aux calculs CUDA : Cela parallélise les instructions de calcul pour utiliser au mieux les SSE* et autres. On peut autant y faire des calculs flottants qu'en entier. Le fonctionnement est similaire aux calculs CUDA :
  
-{{ :lang:cpp:openmp:simd-1.svg?600 |}}+{{ :lang:cpp:openmp:simd-1.svg |}}
  
 <code c> <code c>
Ligne 394: Ligne 409:
 </code> </code>
  
-''__restrict__'' permet de dire que le contenu ne change pas et que personne ne pointe dessus sauf la variable utilisée.+''%%__restrict__%%'' permet de dire que le contenu ne change pas et que personne ne pointe dessus sauf la variable utilisée.
  
 ===safelen=== ===safelen===
Ligne 404: Ligne 419:
 ===linear=== ===linear===
 Incrémente pour chaque boucle une variable. Incrémente pour chaque boucle une variable.
-<code>+<code cpp>
 #pragma omp simd linear(b:2) #pragma omp simd linear(b:2)
 for(int n=0; n<8; ++n) array[n] = b; for(int n=0; n<8; ++n) array[n] = b;
Ligne 460: Ligne 475:
 |''active''         | 5 minutes          | |''active''         | 5 minutes          |
 |''passive''        | 0 ms               | |''passive''        | 0 ms               |
 +
 +[[https://stackoverflow.com/questions/34439956/vc-crash-when-freeing-a-dll-built-with-openmp|VC++: crash when freeing a DLL built with openMP]] {{ :lang:cpp:openmp:visual_c_-_vc_crash_when_freeing_a_dll_built_with_openmp_-_stack_overflow_2019-10-16_16_27_25_.html |Archive du 23/12/2015 le 16/10/2019}}
lang/cpp/openmp.1571235988.txt.gz · Dernière modification : 2019/10/16 16:26 de root