Загрузка типа static

Вся совокупность загружаемых процессов разбивается на равные порции размера chunk, и эти порции последовательно распределяются между процессорами (или потоками, которые затем и выполняются на этих процессорах) с первого до последнего и т. д.

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

void TestSchedule()

{

array<int^>^ a = gcnew array<int^>(10);

array<int^,2>^ b = gcnew array<int^,2>(10,10);

int i=0, j= 0;

 

#pragma omp parallel default(shared) private(i,j)

{

#pragma omp for

for (i = 0; i < 10; i++)

a[i] = (Int32)0;

 

 

#pragma omp for

for (i = 0; i < 10; i++)

for (j = 0; j < 10; j++)

b[i,j] = i+j;

 

#pragma omp single

for (i = 0; i < 10; i++)

{

for(j = 0; j<10; j++)

{

printf("b[%d,%d] = %d\t ", i, j, (int)b[i,j]);

}

printf("\n");

}

 

#pragma omp for schedule(static,2)

for (i = 0; i < 10; i++)

for(j=0; j < 10; j++)

a[i] = (int)a[i] + (int)b[i,j];

 

} //end of region

 

for (i = 0; i < 10; i++)

printf_s("a[%d] = %d\n", i, (int)a[i]);

}

На схеме (рис.2.2.2.1) показано распределение загрузки процессов по процессорам (или потокам (threads), которые затем выполняются на процессорах) для обработки 12000 элементов массива. Число нитей 4. Как видно из этой схемы, все 12000 процессов разбиты на 12 порций по 1000 процессов (chunk=1000).

Загрузка порций в потоки (threads) происходит последовательно. Сначала порции в порядке нумерации загружаются в первый, второй, третий и четвертый потоки, а затем загрузка производится опять в том же порядке, начиная с первого потока и т. д.


Рис. 2.2.2.1. Схема загрузки процессоров








Дата добавления: 2015-02-03; просмотров: 782;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.005 сек.