Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
!!Экзаменационные вопросы_003.rtf
Скачиваний:
9
Добавлен:
19.09.2019
Размер:
17.62 Mб
Скачать
  1. Fortran 90 и hpf. Параллельные расширения f90. Основные понятия и директивы hpf. Примеры.

F90 вкл мех-мы орг одновр вып-я, а HPF – доп пар констр и директивы разм-я данных.

FORTRAN имеет давн историю. За вр его разв-я язык сильно изм-ся, приобрел много черт, св-х совр языкам пр-я. В частн, в F90 введ такие воз-сти, как ук-ли, польз типы, модули, опер с масс-ми, рекурс проц-ры и др. Мы ост-ся на тех св-вах, к-е наиб важны для пар пр-я – оп присв-я массивов и встр-е (intrinsic) ф-ции, отн к масс-м.

F90 доп-ет исп-е ряда скал оп-й в д-ях с масс-ми. При этом оп вып-ся над кажд эл-м массива. Уч-е в таких оп-ях мас-вы д б совместимыми, т.е. иметь один рази и «форму». Практ все втр-е оп-ции языка м б прим-ны к массивам.

Вм всего массива в оп может уч-ть секция, опр-я тройкой нач инд:кон инд: черед

Может исп-ся констр WHERE: WHERE(X /= 0) X = 1.0/X. Все встр ф-ции F90 м б прим к массивам (к кажд эл-ту). MAXVAL, MINVAL, SUM, and PRODUCT вып-ют оп-ю редукции. Хотя эти ф-ции дост мощны, они не реал многих необх для пар прогр возм.

HPF предост пр-ту директивы распр данных, к-е дают пр-ту возм упр-ть лок-ю.

Дир PROCESSORS исп для ук-я формы и разм массива абст пр-ров. Дир ALIGN исп-ся для выр-я эл-тов массивов дл отн друга, ук-я что они д б распр один образом. Дир DISTRIBUTE исп для распр об-та (и др об-тов, выр-х по нему) по массиву абстр пр-ров. Распр абст пр-ров по физ зав от реал и не опр-ся в языке, хотя как прав исп=ся 1 физ пр-р на 1 абстр.

Дир распр данных оч сильно вл на эфф-сть пар пр-мы, но не вл на ее корректность. В этом см онисх с «комм-ми распр-я», исп в FM. Одн на деле они б глуб вл-ют на стр-ру пр-мы – вл на все 4 стадии. Эти дир явл лишь рек-ми комп-ру; он может проигн их, если это улучшит пр-сть. Дир PROCESSORS объявл имен-ю конф-ю абстр пр-ров. Пример:

!HPF$ PROCESSORS P(32)

!HPF$ PROCESSORS Q(4,8)

опр-ет 32 пр-ра.

Дир ALIGHN указ эл-ты массива, к-е д б при возм разм-ны совместно (на 1 физ пр-ре). Пример:

!HPF$ ALIGN array WITH target

Директива DISTRIBUTE исп-ся для того, чтобы ук-ть распр-е дан м у проц-ми. Для кажд измерения массива она ук-ет распр-е эл-тов массива по абстр пр-рам. Можно ук-ть 3 способа распр-я:

* : No distribution

BLOCK(n) : Block distribution (default: n= N/P)

CYCLIC(n) : Cyclic distribution (default: n=1))

Специф-р ONTO указ опр массив проц-ров. Дир прим-ся ко всем мас-вам, выровн вместе с ук-м. Т о дир не м б прим непоср к выр-м мас-вам .

HPF добавляет к оп-рам, раб с мас-ми, им-ся в F90, доп констр, обесп б шир возм реал алг-мов, исп-х пар-м данных. Это опер-р FORALL и дир-ва INDEPENDENT.

FORALL ( triplet, ..., triplet, mask ) assignment

где triplet – это:

subscript = lower-bound : upper-bound : stride

Примеры:

FORALL (i=1:m, j=1:n) X(i,j) = i+j

FORALL (i=1:n, j=1:n, i<j) Y(i,j) = 0.0

FORALL (i=1:n) Z(i,i) = 0.0

Дир INDEPENDENT

Утв-ет, что все оп-ры, вып-е с в цикле do while, могут вып-ся в любом порядке и пар-но.

Должна непоср предш-ть циклу, к к-му относится.