Содержание
- 2. Распараллеливание циклов Как правило в любом программном коде основным объектом распараллеливания являются циклы. Поэтому крайне важно
- 3. Распараллеливание циклов Оптимизируются, как правило, следующие операции параллельного и векторного режимов: операции с массивами, выполняемые в
- 4. Распараллеливание циклов циклы DO WHILE, не содержащие недопустимых операторов и зависимостей данных выполняются в скалярном параллельном
- 5. Режимы выполнения программ Скалярный режим. В этом режиме операции выполняются последовательно.Возможно для ускорения использовать преимущества конвейризации
- 6. Возможные режимы расчета массива A(I): Пусть в цикле, работающим с этим массивом, производится 8192 арифметические операции
- 7. Возможные режимы расчета массива A(I): Скалярный: Векторный: 122472 такта 241842 такта 24184 такта В векторном режиме,
- 8. Скалярно-параллельный режим 15970 тактов Пояснение: На 1-ом ВЭ элементы массива не располагаются подряд, с первого по
- 9. Векторно – параллельный режим 3848 тактов На 1-ом ВЭ элементы массива располагаются так: A(1), A(9), A(17),
- 10. Вложенные циклы В случае вложенных циклов внутренний цикл выполняется в векторном режиме, а внешний – в
- 11. Операция с массивом в цикле. Операции с многомерными массивами Операция с массивом в цикле также выполняется
- 12. Ограничения параллелизации циклов Оптимизация цикла путем выполнения его в параллельном режиме или посредством векторизации ограничена в
- 13. Ограничения параллелизации циклов Включение в цикл DO следующих операторов: ELSE IF блок IF с вложенностью, превышающей
- 14. Ограничения параллелизации циклов Использование в цикле ссылок на функции-операторы и встроенные функции не препятствует оптимизации. Ссылки
- 15. Векторные конструкции В оптимизируемой программе рассматриваются следующие данные: Вектор – последовательность элементов. Вектор может быть образован
- 16. Скаляры цикла Скаляры цикла – это отдельные элементы, используемые в векторной операции. Скаляр цикла - ссылка
- 17. Индекс – отдельный целочисленный элемент, значение которого изменяется на постоянное приращение для каждого элемента вектора. Целочисленная
- 18. Косвенная адресация Косвенная адресация реализуется тогда, когда индекс сам является элементом индексируемого массива. Из-за косвенной адресации
- 19. Отказ от оптимизации В некоторых случаях использование векторизации или распараллеливание циклов может привести к резкому снижению
- 20. Отказ от векторизации Отказ от векторизации может повысить производительность в следующих ситуациях: Циклы с небольшим числом
- 21. Отказ от векторизации Разветвление типа «выбор». Если в каждом цикле выбирается одна из нескольких возможных ветвей,
- 22. Можно отказаться от распараллеливания циклов, в которых большая часть кода не может быть оптимизирована вследствие зависимостей
- 23. Зависимость данных Зависимость данных между итерациями цикла (она также называется рекурсией данных, или обратной связью по
- 24. Рекурсивное использование скалярных переменных Скалярная переменная, на которую в теле цикла есть ссылка и значение которой
- 25. Исключение рекурсивное используемых скалярных переменных В определенных ситуациях рекурсивно используемые скалярные переменные могут быть исключены. Например
- 26. Исключение рекурсивное используемых скалярных переменных Или (альтернативная запись предыдущего примера): C(1) = A(1) * B(1) DO
- 27. Исключение рекурсивное используемых скалярных переменных Рекурсивные вычисления могут быть заменены явными не рекурсивными вычислениями, которые не
- 28. Исключение рекурсивное используемых скалярных переменных В следующей программе при обращении к диагональным элементам матрицы A(J) используется
- 29. Обратные ссылки на элементы массива: Обратная ссылка на элемент массива происходит тогда, когда элемент массива определяется
- 30. Обратные ссылки на элементы массива: Например: Часто для достижения того же результата могут быть использованы не
- 31. Обратные ссылки на элементы массива: Для присваивания нужного значения можно использовать следующий цикл: DO I =
- 32. Обратные ссылки на элементы массива: Присваивание одному элементу массива значения другого элемента массива не обязательно приводят
- 33. Обратные ссылки на элементы массива: DO I = 1,N,2 A(I+1) = A(I) CONTINUE где А =
- 34. Обратные ссылки на элементы массива: В некоторых ситуациях обратные ссылки могут возникать или не возникать во
- 35. Обратные ссылки на элементы массива: Однако те же самые действия можно выполнить с использованием двух циклов,
- 36. Повторная запись в элемент массива Распараллеливание (но не векторизация) запрещается, если существует возможность записи нескольких значений
- 37. Синхронизация параллельных операций Потенциально работа в векторно-параллельном и скалярно-параллельном режимах при последовательной записи значений в массивы
- 38. Условное присваивание значений скалярным и индексным переменным Если в цикле есть скалярная переменная, значение которой изменяется
- 39. Условное присваивание значений скалярным и индексным переменным Если изменение скалярной переменной и ее последующее использование производится
- 40. Параллельные независимые подпрограммы Цикл DO может использоваться для выполнения отдельных подпрограмм или независимых вызовов подпрограмм параллельно,
- 41. Внешние процедуры По умолчанию векторизуемые или распараллеливаемые циклы не могут содержать вызовы внешних процедур, поскольку в
- 42. Предостережения Необходимо уделять большое внимание обработке нелокальных данных в подпрограммах, вызываемых в параллельном цикле, поскольку такая
- 44. Скачать презентацию