Средства разработки приложений



              

Язык параллельного программирования mpC


Язык параллельного программирования mpC был разработан в конце 90х в Институте системного программирования РАН. В языке mpC, который является расширением языка С, вводится понятие вычислительного пространства, которое определяется как некоторое доступное для управления множество виртуальных процессоров. Основным понятием mpC является понятие сетевого объекта или просто сети. Сеть является областью вычислительного пространства, которая может быть использована для вычисления выражений и выполнения операторов.

Размещение и освобождение сетевых объектов в вычислительном пространстве выполняется аналогично размещению и освобождению объектов данных в памяти. Концептуально, создание новой сети инициируется процессором уже существующей сети. Этот процессор называется родителем создаваемой сети. Родитель всегда принадлежит создаваемой сети. Единственным виртуальным процессором, определенным от начала и до конца выполнения программы, является предопределенный виртуальный хост-процессор.

Любой сетевой объект, объявленный в программе, имеет тип. Тип специфицирует число и производительности процессоров. Например, объявление

nettype SimpleNet(n) { coord I=n; };

вводит параметризованный сетевой тип с именем SimpleNet, соответствующий сетям, состоящим из n виртуальных процессоров. Виртуальные процессоры сети связаны с координатной переменной I, значение которой изменяется от 0 до n-1. Родитель сети имеет по умолчанию координату равную 0. Это простейшая сеть, определение которой содержится в стандартном файле mpc.h.

Пример 2. Рассмотрим mpC-программу эквивалентную MPI-программе, приведенной в примере 1.

/* 0*/ #include "mpc.h" /* 1*/ int [*]main(int argc, char **argv) { /* 2*/ net SimpleNet(2) w; /* 3*/ int [w]i; /* 4*/ [host]i=0; /* 5*/ [w:I==1]i=[host]i; /* 6*/ return 0; /* 7*/ }

Имея объявление сетевого типа, можно объявить идентификатор сетевого объекта этого типа. Например, объявление в строке 2 вводит идентификатор w сетевого объекта состоящего из 2 виртуальных процессоров.




Содержание  Назад  Вперед