Параллельное программирование: Учебное пособие, страница 24

SEQ – sequential (последовательный), то есть выполнение проходов тела цикла должно происходить согласно индексному множеству в его лексикографическом порядке, что соответствует развертке вычислительного процесса по программе, написанной для одного процессора. Лексикографический порядок – это выборка индексируемых переменных, предписанная списком, алфавитом или другой последовательностью, отождествляемой с натуральным рядом. Кстати, последовательность операторов в тексте программы для машины фон-неймановского типа является в этом смысле лексикографически упорядоченной.

CONC – concurrent (конкурентный), то есть каждая параллельная ветвь независимо выполняется одновременно с другими на одном или нескольких процессорах, взаимодействуя через посредство разделяемых переменных. Изменение и использование общей переменной многими параллельно идущими процессами может нарушить требуемый алгоритм обработки данных. Поэтому этот тип параллельности допустим тогда, когда каждой параллельной ветви, согласно алгоритму обработки, разрешено вносить в общую переменную свои добавки независимо от времени и очередности возникновения этих актов. Примером таких алгоритмов могут служить многомерные задачи, решаемые методами Монте-Карло, смысл которых состоит в том, чтобы подсчитать число попаданий в ту или иную точку заданной области некоррелированным множеством случайных процессов.

AUTON – autonomous (автономный), то есть параллельные ветви выполняют вычисления независимо друг от друга только с переменными, локализованными в своих ветвях. Например, некоторые переменные, обозначенные в каждой ветви как x, для всей параллельной программы являются переменными с разными именами. В (2.20) такой переменной является р. Обмен информацией между ветвями осуществляется специальными операторами. Процессы в ветвях могут быть асинхронными.

SYNCH(J) – synchronous (синхронный). Этот тип параллельности может потребоваться в том случае, если все множество итераций цикла включает такие проходы тела цикла, которые должны начинаться в один и тот же момент времени на всех процессорах. Такая потребность, как правило, возникает тогда, когда между индексами существует линейная зависимость, позволяющая выделить одновременно выполняемые блоки (кортежи). Появление частично подобных блоков уже рассматривалось выше, где два (2.14) и четыре (2.15) процессора синхронно и последовательно выполняют свои циклически повторяющиеся вычисления и обмены данными, представляя соответственно два кортежа с нечетными и четными индексами (2.14) и четыре кортежа, индексы которых меняются с шагом четыре. Обычно в кортежи объединяют итерации, индексы которых связаны линейно:

.

SIM – simultaneous (одновременно), то есть строго по одной и той же программе, представленной в одинаковых машинах со строго одинаковыми последовательностями машинных команд. Это ключевое слово предписывает транслятору один и тот же семантический блок из машинных команд или одну машинную команду посылать в каждую параллельную ветвь и одновременно их выполнять. При этом исключается присвоение результата вычислений общей или общим (разделяемым) переменным. Описанная семантика характерна для вычислительных структур с единым потоком команд и множественным потоком данных: SIMD.

EXCL – exclusive (исключительный), то есть определяет параллельное выполнение ограниченного числа итераций из множества готовых к выполнению в произвольном порядке. В случае параллельных вычислений этот тип параллельности можно использовать для целей взаимного исключения одновременного доступа ветвей к разделяемым данным или конкуренции между ветвями за обладание общими системными ресурсами.

Перечисленными ключевыми словами, определяющими тип параллельности, естественно не исчерпывается все их множество. Каждая оригинальная параллельная вычислительная система, каждая операционная среда и программное обеспечение этих систем на протяжении нескольких десятков лет использовали, изменяли, добавляли или удаляли не только ключевые слова в параллельных конструкциях циклов, но и сами языковые конструкции описания параллельных процессов.