Основы параллельного программирования с использованием MPI: учебное пособие [Р. К. Газизов] (doc) читать постранично, страница - 2

Книга в формате doc! Изображения и текст могут не отображаться!


 [Настройки текста]  [Cбросить фильтры]

обработка высококачественного видеоизображения и многое другое. При этом цена кластера может составлять всего 10-20 тысяч долларов.
Однако существуют факторы, сдерживающие повсеместное внедрение МВС кластерного типа. Наиболее существенными из них следует, пожалуй, признать малое количество прикладного программного обеспечения и его высокую стоимость. Дело в том, что программы, выполняющиеся на МВС, являются в большинстве своем программами параллельными, осуществляющими обработку различных данных одновременно на нескольких (часто всех) процессорах системы. Написание таких программ – процесс значительно более трудоемкий, чем программирование для обычных однопроцессорных компьютеров, поэтому и стоимость параллельного программного обеспечения оказывается значительно выше. Но стоимость профессиональных параллельных пакетов определяется не только и не столько стоимостью их разработки, сколько теми целевыми группами, на которые они ориентированы. А именно, основными потребителями такого программного обеспечения являются крупные корпорации, способные заплатить десятки и даже сотни тысяч долларов за одну лицензию. Поэтому и цена параллельных пакетов оказывается соответствующей. Например, если пакет конечно-элементного моделирования ANSYS, широко используемый в промышленности при разработке новой техники, для однопроцессорных систем стоит порядка десяти тысяч долларов, то цена его параллельной версии приближается к ста тысячам. Естественно, что использовать такой пакет может позволить себе только достаточно крупная компания. Поэтому нередко возникает ситуация, когда многопроцессорная система есть, а программного обеспечения для нее очень мало и большую часть времени система простаивает.
Выход из сложившегося положения может быть только один: снижение стоимости параллельного программного обеспечения. А для этого необходимо, чтобы параллельных программных продуктов было много, чтобы была здоровая конкуренция. В свою очередь, это требует как большого количества профессиональных программистов, владеющих навыками параллельного программирования, так и еще большего количества квалифицированных пользователей, способных грамотно использовать параллельный программный продукт. Именно на подготовку таких пользователей и ориентировано, прежде всего, настоящее пособие.
Первая глава данного пособия посвящена основам параллельного программирования. На примере простейшей параллельной программы рассматриваются основные принципы программирования для многопроцессорных вычислительных систем. В этой же главе рассматриваются наиболее важные вопросы, касающиеся оценки эффективности параллельной программы, и приводятся факторы, влияющие на эту эффективность.
Во второй главе пособия излагаются базовые принципы параллельного программирования с использованием технологии передачи сообщений MPI (Message Passing Interface), ставшей в настоящее время стандартом параллельного программирования для кластерных систем. Приводится синтаксис и описание ряда основных функций MPI, а также простейшие примеры их использования.
Третья глава содержит примеры стандартных учебных параллельных программ, написанных с использованием MPI. Программы снабжены необходимыми комментариями и будут, на наш взгляд, весьма полезны для людей, приступающих к изучению параллельного программирования.
Наконец, в приложениях собраны практические рекомендации по работе с конкретной МВС – Alpha-кластером Башкирского регионального центра высокопроизводительных вычислений, установленным в Уфимском государственном авиационном техническом университете, а также приведены некоторые наиболее часто используемые команды операционной системы Linux.
Пособие не требует каких-либо специальных знаний в области многопроцессорной техники или программирования. Однако поскольку при изложении функций MPI за основу был принят язык C, знакомство читателя с этим языком программирования является необходимым условием успешного усвоения материала пособия.













1. ВВЕДЕНИЕ
В ПАРАЛЛЕЛЬНОЕ ПРОГРАММИРОВАНИЕ

1.1. Простейшая параллельная программа

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

#include
int main(int argc, char **argv)
{
int S=0; /* искомая сумма */
int k; /* переменная цикла */

/* вычисление суммы */
for (k=1; k