Содержание
- 2. Содержание Модель программирования в общей памяти Модель FORK-JOIN Стандарт OpenMP Основные понятия и функции OpenMP
- 3. Программирование в общей памяти … Процесс 0 Процесс 1 Процесс N-1 Данные Параллельное приложение состоит из
- 4. Модель FORK-JOIN Современные операционные системы поддерживают полновесные процессы (программы) и легковесные процессы (нити). Процесс – главная
- 5. Стандарт OpenMP OpenMP – стандарт, реализующий модели программирования в общей памяти и Fork-Join. Стандарт представляет собой
- 6. Структура OpenMP-программы Параллельные регионы Главная нить Главная нить (программа) порождает семейство дочерних нитей (сколько необходимо). Порождение
- 7. Директивы OpenMP Директивы OpenMP – директивы C/C++ компилятора #pragma. Для использования директив необходимо установить соответствующие параметры
- 8. Функции библиотеки OpenMP Назначение функций библиотеки: контроль и просмотр параметров OpenMP-программы omp_get_thread_num() возвращает номер текущей нити
- 9. Переменные окружения OpenMP Переменные окружения контролируют поведение приложения. OMP_NUM_THREADS – количество нитей в параллельном регионе OMP_DYNAMIC
- 10. Директивы определения параллельных фрагментов #pragma omp parallel Определяет блок кода, который будет выполнен всеми созданными на
- 11. Простая программа на OpenMP void main() { printf("Hello!\n"); } void main() { #pragma omp parallel {
- 12. Директива parallel for OpenMP поддерживает редукцию вычислительных операций, выполняемых в циклах. Редукция подразумевает определение для каждой
- 13. Параллельные секции Явное определение блоков кода, которые могут исполняться параллельно. Послед. Паралл. #pragma omp parallel sections
- 14. Область видимости переменных Общая переменная (shared) – доступна для модификации всем нитям. Частная переменная (private) –
- 15. Общие и частные переменные void main() { int a, b, c; … #pragma omp parallel {
- 16. Явное указание области видимости Для явного указания области видимости используются следующие параметры директив: shared() – общие
- 17. void main() { int a, b, c; … #pragma omp parallel shared(a) private(b) { int d,
- 18. void main() { int rank; #pragma omp parallel { rank = omp_get_thread_num(); } printf("%d\n", rank); }
- 19. void main() { int rank; #pragma omp parallel shared (rank) { rank = omp_get_thread_num(); printf("%d\n", rank);
- 20. Директивы синхронизации #pragma omp master Определяет блок кода, который будет выполнен только главной нитью. #pragma omp
- 21. #pragma omp master Определяет блок кода, который будет выполнен только главной нитью. Не подразумевает барьера для
- 23. Скачать презентацию