Cтраница 2
Еще одна область программирования, в которой возможно изменение явно указанного порядка выполнения операторов, - это область параллельных вычислений. С появлением недорогих ПК с несколькими процессорами возникла возможность распараллеливания программы - одновременного выполнения ее независимых частей на разных процессорах, что теоретически позволяет получить выигрыш в быстродействии, линейно зависящий от числа процессоров. Однако на практике это очень сложная задача, которая требует правильного выделения независимых модулей кода ( так называемых процессов), выполнение которых не скажется на результатах работы других процессов. Так как момент окончания работы того или иного процесса заранее неизвестен, то в программе надо предусмотреть действия, связанные с синхронизацией обработки получаемых результатов. Их выполнение может потребоваться в самые неожиданные моменты, поэтому изменение линейной последовательности работы операторов неизбежно. [16]
Из сказанного следует, что мультипрограммирование является также средством уменьшения времени выполнения заданного набора программ. Более того, если обрабатывается всего одна программа, то за счет распараллеливания программы и мультипрограммной обработки удается сократить время - ее выполнения. [17]
Из сказанного следует, что Мультипрограммирование является также средством уменьшения времени выполнения заданного набора программ. Более того, если обрабатывается всего одна программа, то за счет распараллеливания программы и мультипрограммной обработки удается сократить время ее выполнения. [18]
Рассмотренный способ конвейерной обработки команд без блокировок является аппаратурно реализуемым механизмом динамического распараллеливания участка программы, проходящего через УУ в текущий момент времени. Это динамическое распараллеливание приводит к уточнению параллелизма команд по отношению друг к другу, выявленного при статическом распараллеливании программы, по событиям реального завершения команд. При этом отсутствует необходимость какого-либо описания спусковых функций команд в программе. Анализ готовности команд к выполнению реализуется аппаратурными средствами, незаметными для программиста. [19]
Однако в настоящее время накоплен огромный объем программ, написанных для последовательных ЭВМ; переосмысливание и ручное перепрограммирование этих программ для МВС потребовало бы неприемлемых затрат времени и труда программистов. Поэтому, наряду с раз / - работкой и исследованиями языков и методов параллельного программирования, вызванных появлением МВС, с разработкой параллельных численных методов и алгоритмов, продолжает оставаться острым вопрос об автоматическом распараллеливании программ. Имея в виду направленность данной книги, затронем этот вопрос лишь в плане алгоритмических средств и аппаратурной поддержки типовых процедур распараллеливания ( в частности, на ветви), о влиянии этих средств на скорость выполнения параллельных программ в МВС. [20]
Они включают в свой состав оптимизирующие компиляторы F77, F90 / 95 и C / C, интегрированную среду, ориентированную на программистов на языке Фортран. Стандартный пакет Pro Fortran Standard Release предназначен для однопроцессорных систем, работающих под управлением операционных систем Microsoft Windows. Пакет Pro FortranMP дополнительно содержит средства параллельного программирования для двухпроцессорных систем, в том числе препроцессор VAST-F / Parallel для автоматического распараллеливания программ. Программы, оптимизированные для двухпроцессорной конфигурации, могут выполняться только под управлением ОС WinNT / 2000 / XP. [21]
В этой главе мы расскажем о расширениях Фортрана для многопроцессорных вычислительных систем, к которым относятся суперкомпьютеры различной архитектуры и специализированные сетевые объединения персональных компьютеров - кластеры. Основным побудительным мотивом для создания параллельных расширений стандартных языков является стремление упростить пользователю переход от последовательной программы к параллельной. Поэтому разработчики расширений, как правило, стремятся добавить к стандартным операторам минимальное число максимально лаконичных директив, позволяющих получить оптимальный выигрыш от распараллеливания программы. Все производители суперкомпьютеров были вынуждены разрабатывать расширения стандартных языков программирования для своих компьютеров; необходимость стандарта была очевидной. Работы по созданию новых расширений продолжаются, так как совершенства нет, да оно и не возможно. [22]