Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Программирование для многопроцессорных структур



Мультипроцессорные комплексы позволяют воспользоваться преимуществами параллелизма. Вычислительные системы получа­ют больше пользы от параллельной обработки благодаря мультипро­граммному выполнению нескольких процессов, чем используя парал­лелизм в рамках одного процесса. Обнаружение параллелизма (рас­параллеливание), выполняемое программистами, языковыми транс­ляторами, аппаратными средствами или операционными системами — это сложная проблема. Независимо от того, каким образом в кон­це концов будет обнаруживаться параллелизм, мультипроцессорные системы позволяют с успехом использовать его, одновременно вы­полняя параллельные ветви вычислений.

Параллелизм в программах может быть либо явным, либо неяв­ным (скрытым). Явный параллелизм программист указывает в сво­ей программе при помощи специальной конструкции, обозначающей параллельное вычисление, например COBEGIN/COEND.

В мультипроцессорной системе, рассчитанной на реализацию па­раллелизма, каждый из программных операторов может выполнять отдельный процессор, с тем, чтобы все вычисления завершались бы­стрее, чем при чисто последовательной работе.

Явное указание параллелизма налагает определённую ответ­ственность на программиста. Это достаточно трудоёмкая процедура, причём в ряде случаев программист может ошибочно указать, что определённые операции можно выполнять параллельно, в то время как в действительности этого делать нельзя. Программист может упустить многие ситуации, допускающие распараллеливание. Весь­ма вероятно, что программист обнаружит параллелизм и закодирует его явным образом в наиболее очевидных ситуациях. Однако многие случаи параллелизма вручную в алгоритмах обнаружить трудно, по­этому они будут просто пропускаться.

Одно из довольно неприятных последствий явного указания па­раллелизма заключается в том, что программы могут оказаться более сложными для модификации. При внесении изменений в программу, имеющую большое число явных параллельных конструкций, легко можно допустить ошибки, причём, вообще говоря, довольно тонкие.

Реально, на что можно надеяться при решении подобной пробле­мы, — это на автоматическое обнаружение неявного параллелизма, т. е. параллелизма, присущего алгоритму, но не указанного явно про­граммистом. В компиляторы, операционные системы и аппаратные средства компьютеров необходимо включать специальные механиз­мы распараллеливания. Это с гораздо большей вероятностью, чем явное указание параллелизма, обеспечит создание быстро выполня­ющихся и корректных программ.

Два распространённых способа, реализуемых в компиляторах для использования неявного параллелизма программ, — это расщеп­ление цикла и редукция высоты дерева.

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

времени выполнения, затрачиваемого на данное вычисление, прихо­дится платить увеличенными затратами времени и ресурсов в период компиляции. Такую взаимосвязь необходимо учитывать, тщательно оценивая необходимые затраты и возможные выгоды в каждом ин­дивидуальном случае. Например, для производственного счета целе­сообразно добиваться минимального времени выполнения программ. Однако в условиях разработки, когда программа, возможно, будет выполняться всего один или два раза до внесения очередных изме­нений и повторной компиляции, затраты на оптимизацию могут зна­чительно превысить получаемые выгоды.

В некоторых случаях целесообразно, чтобы процессоры выпол­няли вычисления, результаты которых могут так и не потребовать­ся, если в действительности существует вероятность того, что эти результаты все же будут использованы и ускорят вычисления. Луч­ше поручить некоторому процессору работу, которая то ли будет, то ли не будет использована в дальнейшем, чем оставить этот процессор бездействующим. Идея состоит в том, что если всё же результаты по­надобятся, то вычисления можно будет выполнить гораздо быстрее.





Дата публикования: 2015-02-03; Прочитано: 407 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...