The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Каталог документации / Раздел "Программирование, языки" / Оглавление документа
next up previous contents
Next: Привязки к языкам программирования Up: Примеры Previous: Двойная буферизация при коллективном   Contents

Конструктор типа ''субмассив''

\includegraphics[scale=1.0]{pic/9.4.eps}


Рисунок 9.4. Пример раскладки файла с массивом

\includegraphics[scale=1.0]{pic/9.5.eps}


Рисунок 9.5. Пример файлового типа для локального массива процесса 1

Предположим, что мы выписываем двумерный $100 \times 100$ массив чисел с двойной точностью, которые распределяется между четырьмя процессами, так, что кажый процесс имеет блок из 25 колонок (процесс 0 отвечает за колонки 0-24, процесс 1 - за 25-49 и т.д.), как это показано на рис. 7.4. Чтобы создать файловые типы для каждого из процессов, можно использовать следующую программу на Си:

   double subarray[100][25]; 

   MPI_Datatype filetype; 
   int sizes[2], subsizes[2], starts[2]; 
   int rank; 
 
   MPI_Comm_rank(MPI_COMM_WORLD, &rank); 
   sizes[0]=100; sizes[1]=100; 
   subsizes[0]=100; subsizes[1]=25; 
   starts[0]=0; starts[1]=rank*subsizes[1]; 

   MPI_Type_create_subarray(2, sizes, subsizes, starts,
                            MPI_ORDER_C, MPI_DOUBLE, 
                            &filetype);

Или, что эквивалентно, на ФОРТРАНe:

   double precision subarray(100,25) 
      integer filetype, rank, ierror 
      integer sizes(2), subsizes(2), starts(2) 
 
      call MPI_COMM_RANK(MPI_COMM_WORLD, rank, ierror) 
      sizes(1)=100 
      sizes(2)=100 
      subsizes(1)=100 
      subsizes(2)=25 
      starts(1)=0 
      starts(2)=rank*subsizes(2) 
 
      call MPI_TYPE_CREATE_SUBARRAY(2, sizes, subsizes, starts, & 
                 MPI_ORDER_FORTRAN, MPI_DOUBLE_PRECISION,       & 
                 filetype, ierror)

Сгенерированные файловые типы будут описывать части, содержащиеся в внутри подмассивов каждого процесса с дырками для места, которое занимают пождмассивы других процессов. Рис. 9.5 демонстрирует файловый тип, созданный для процесса 1.



Alex Otwagin 2002-12-10



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру