Програмне забезпечення систем (ПЗС)
ТЕКСТ № 1
В то время как многие параллельные процессоры требуют от пользователя явного указания того, какие вычисления в программе должны производиться параллельно, компилятор Allian FX/Fortran активно обнаруживает параллелизм в обычной последовательной программе. Даже если эти программы написаны без ориентации на параллельную обработку, компилятор автоматически вырабатывает объективную программу, которая эффективно выполняется на многопроцессорной ЭВМ. Принципы компиляции основаны на работе Кука и его студентов из Иллинойского университета (Urbana-Champaign) [2]. Этот подход должен доказать свою привлекательность многим научным работникам, имеющим готовые программы и не желающим переписывать их, чтобы достичь ускорения выполнения программ, которое даёт параллельная обработка.
Слова і словосполучення
· пользователь = користувач
· параллельная обработка = паралельне опрацювання
ТЕКСТ № 2
В аппаратуре имеются два основных средства для поддержки параллельной обработки. Восемь ВЭ позволяют целым секциям программы выполняться параллельно (по одной секции на процессор). Кроме того, конвейерные векторные устройства, имеющиеся в каждом ВЭ, позволяют обрабатывать пары операндов с перекрытием во времени функционирования устройств сложения и умножения с плавающей запятой. Такая конвейеризация может привести к очень высокой скорости вычислений, однако для этого требуется в качестве операндов применять достаточно длинные векторы. Чтобы использовать обе эти формы параллелизма, компилятор пытается выделить программные сегменты для параллельного выполнения программы на восьми процессорах и векторные операнды, для обработки которых требуется применять одну и ту же комбинацию арифметических операций. Поскольку обе формы параллелизма связаны с циклами DO языка Фортран, эти циклы и являются основным объектом анализа, выполняемого компилятором.
|
|
_________________________________________________________
* Література: Р. Бэбб "Программирование на параллельных вычислительных системах". - М.:"Мир", 1991
Слова і словосполучення
· сложение = додавання
· плавающая запятая = плавальна кома
ТЕКСТ № 3
Когда компилятор обнаруживает некоторое препятствие для распараллеливания, он генерирует параллельную программу, пока гарантируется корректность результатов выполнения программы. В большинстве случаев компилятор в этом отношении очень консервативен. Его решения основываются на анализе типов операторов тела цикла и способа использования переменных, так как последний часто влияет на то, в какой степени итерации цикла могут быть перекрыты при параллельном выполнении.
|
|
Режим параллельного выполнения циклов DO осуществляется посредством реализации различных итераций цикла разными ВЭ. Так как имеется восемь процессоров, одновременно может выполняться до восьми итераций. Если необходимо, компилятор включает в объектную программу средства синхронизации, чтобы обеспечить правильный порядок изменения и использования переменных в цикле и гарантировать, что операторы программы, следующие за циклом, не будут выполняться до тех пор, пока не завершатся все итерации цикла.
Слова і словосполучення
· препятствие = перешкода
· помеха = завада
· переменные = змінні (прикметник), мінянок (іменник), мінянки
ТЕКСТ № 4
Отметим, что если пользователь по ошибке поместит в программу директиву, говорящую компилятору "продолжай распараллеливать", когда это делать недопустимо, программа, вероятно, будет вести себя непредсказуемо (например, недетерминированно) как ошибочная параллельная программа. Если причина действительно в этом, то очень важно, чтобы пользователь мог убедиться, что программа ведёт себя странно, посредством отказа от всех оптимизирующих действий и возвращения к последовательной программе. Если программа продолжает вести себя странно, в ней есть обычная программная ошибка. Если такой ошибки нет, то следует с помощью директив компилятора осуществлять выборочную оптимизацию параллельных частей программы до тех пор, пока ошибка не будет обнаружена. Такой метод отладки эффективен только потому, что правильная последовательная исходная программа и исходная параллельная программа - это одно и то же.
Слова і словосполучення
· оптимизирующие действия = оптимізувальні дії
· исходная последовательная программа = вихідна послідовна програма
ТЕКСТ № 5
В фирме Alliant распараллеливание рассматривается как некоторая форма оптимизации и в отсутствии параметра –О в команде вызова компилятора не делается никаких попыток оптимизации. Оптимизация может быть ограничена (например, только векторизацией) путём добавления определённых букв после параметра – О. Если параметр –О опущен, то все директивы компилятора игнорируются.
Директивы компилятора в программе начинаются с первой колонки комбинацией символов CVD$. Это означает, что другими компиляторами для языка Фортран они будут рассматриваться как комментарии, что повышает мобильность программ. Буква, непосредственно следующая за знаком $, говорит о том, применима ли эта директива только к следующему за ней циклу DO (в этом случае используется буква L) или она относится ко всей оставшейся части исходного файла (в этом случае используется буква G). Ключевое слово, записанное начиная с седьмой колонки, определяет разрешение или запрещение оптимизации.
слова і словосполучення
· опущенный параметр = випущений параметр
· колонка = стовпчик
· исходный файл = вихідний файл
ТЕКСТ № 6
По умолчанию вызов подпрограммы внутри цикла препятствует распараллеливанию тела цикла, начиная с точки вызова. Директива CVD$L CNCALL отвергает это правило, позволяя такие циклы выполнять в параллельном режиме. Директива оказывает действие только на следующий за ней цикл, так как после знака $ записана буква L. Этой директивой программист утверждает, что данная подпрограмма может запускаться параллельно с другими выполнениями этой же подпрограммы или других подпрограмм, вызванных в том же цикле.
Параллельные задачи могут создаваться с помощью вызова подпограммы в цикле DO, которому непосредственно предшествует упомянутая выше директива CNCALL. Подпрограмме может быть передан индекс цикла, с помощью которого в ней может определяться номер соответствующей итерации, что позволяет каждой итерации выполняться независимо и, если необходимо, с использованием оператора IF и вычисляемого оператора GOTO.
|
|