
- •108 Сурак
- •3. 3 Өлшемді Лаплас теңдеуін 2-өлшемді декомпозиция тәсілімен программалау.
- •208 Сурак
- •1. Флинна таксономиясы. Мisd, мimd архитектуралары.
- •2. Mpi программасын компиляциялау, жинау және орындау.
- •308 Сурак
- •1. Жарыс күі. Синхронизация. Философтар есебі.
- •2. Коллективті мәлімет алмасу функциялары. Редукция мысалдары.
- •3. Параллельді векторларды скаляр көбейту программасын жазыңыз
- •408 Сурак
- •1. Қазіргі параллель архитектуралы компьютерлер. Аппараттық бөлімі.
- •5 08 Сурак
- •3. 3 Өлшемді Лаплас теңдеуін 2-өлшемді декомпозиция тәсілімен программалау.
- •1. Қазіргі параллель архитектуралы компьютерлер. Программалық бөлімі.
- •2. Mpi_Dims_create() функциясын қолдану мысалы.
- •608 Сурак
- •3. Санды полиномдылыққа тексеру параллельді программасын жазыңыз.
- •1. Shared & distributed memory архитектуралары.
- •2. Нүкте-нүкте коммуникациялары. Mpi_Bsend(), mpi_Brecv функцияларын қолдану мысалдары.
- •7 08 Сурак
- •1. Таксономия Флинна. Архитектуры sisd, simd.
- •2 Что такое mpi ? Основные концепции и возможности.
- •3. Напишите программу параллельного вычисления числа pi.
- •808 Сурак
- •1 Состояние гонки. Алгоритм с конкуренцией. Синхронизация. Задача обедающих философов.
- •2. Коллективные операции обмена сообщениями
- •3. Напишите программу параллельного поиска максимального числа в массиве.
- •9 08 Сурак
- •1.Структура mpi программы в стиле spmd. Приведите пример.
- •2. Коммуникации точка/точка. Примеры использования фукнцииMpi_Send(), mpi_Recv.
- •3. Напишите программу параллельного вычисления определенного интеграла от фукнции 2*cos(X) в интервале [0,1].
- •1 Сурак
- •1 .Современные архитектуры параллельных компьютеров. Программная часть.
- •2. Декартова топология. Пример использования периодических соседей.
- •3. 3 Өлшемді Лаплас теңдеуін 2-өлшемді декомпозиция тәсілімен программалау.
- •181 Сурак
- •1. Примеры программ в стиле spmd и mpmd
- •2. Структура mpi программ в стиле mpmd. Приведите пример.
- •3. Напишите программу параллельного вычисления числа e.
- •21 Сурак
- •1.Таксономия Флинна. Архитектуры sisd, simd.
- •2.Отличия mpi и pvm.
- •3. Напишите программу параллельного вычисления числа e.
- •31 Сурак
- •1. Распределенная и разделяемая конфигурация памяти. Архитектура numa.
- •2. Пользовательские типы данных. Тип mpi_type_struct. Примеры.
- •41 Сурак
- •1.Суперскалярные и векторные процессоры.
- •2. Группы и коммуникаторы mpi. Создание новых групп (коммуникаторов).
- •51 Сурак
- •2. Как можно вычислить время, которое тратится на расчет определенного участка кода в mpi?
- •3. Параллельная модификация метода Гаусса-Зейделя. Решение 2-мерного уравнения Лапласа 1 мерной декомпозицией (параллельный метод Гаусса-Зейделя).
- •61 Сурак
- •71 Сурак
- •81 Сурак
- •91 Сурак
- •1.Numa архитектурасы.
- •2.Қолданушы мәлімет типтері. Mpi_type_struct. Мысалдар.
- •2 Сурак
- •1.Shared and distributed memory архитектурлары.
- •2.Mpi_White(), mpi_Probeфункциялары.
- •3.Санды полиномдылыққа тексеру параллельді программасын жазыңыз.
- •12 Сурак
- •1.Процесс дегеніміз не? Ағын дегеніміз не? Прцесс пен ағын айырмашылығы.
- •3. 3 Өлшемді Лаплас теңдеуін 1 –өлшемді тәсілімен программалау.
- •282 Сурак
- •1.Суперскаляр және векторлы процессорлар.
- •2.Виртуалды топология. Декарт және граф топологиясы. Қандай жағдайларда оларды қолдану керек. Декарт топологиясын құру кезеңдері.
- •3.2 Өлшемді Лаплас теңдеуін 1-өлшемді декомпозиция тәсілімен программалау.
- •32 Сурак
- •1.Есепті декомпозициялау және аймақты декомпозициялау тәсілі. Мысалдар.
- •2.Қолданушы мәлімет типтері. Мәліметтер үшін жады көлемі. Жадыны босату.
- •42 Сурак
- •Есепті декомпозициялау және аймақты декомпозициялау тәсілі. Мысалдар.
- •Қолданушы мәлімет типтері. Mpi_type_contiguous. Мысалдар.
- •Символдық массивте жолды табудың параллельді программасын жазыңыз.
- •52 Сурак
- •1. Распределенная и разделяемая конфигурация памяти. Архитектура numa.
- •2. ФункцииMpi_Wait(), mpi_Probe
- •62 Сурак
- •1. Параллелизация с декомпозицией задачи и декомпозицией области. Примеры.
- •2.Пользовательские типы данных. Тип mpi_type_vector (hvector). Примеры
- •3. Напишите программу параллельного поиска минимального числа в массиве.
- •72 Сурак
- •1. Закон Амдала с учетом сети. Ускорение. Эффективность.
- •2.Коммуникации точка/точка. Примеры использования фукнции mpi_Isend(), mpi_Irecv.
- •3. Напишите параллельную программу проверки простого числа.
- •82 Сурак
- •92 Сурак
- •3 Сурак
- •13 Сурак
- •1. Состояние гонки. Алгоритм с конкуренцией. Синхронизация. Задача обедающих философов.
- •2. Функции mpi_Gather, mpi_scatter, mpi_allgather, mpi_alltoall, mpi_allreduce. Их различия. Примеры.
- •3. Напишите программу параллельного скалярного умножения векторов.
- •23 Сурак
- •1. Можно ли запустить программу simd на современных процессорах семейства x86.
- •2.Пользовательские типы данных. Тип mpi_type_contiguous. Примеры.
- •3.Напишите программу параллельного поиска минимального числа в массиве.
- •383 Сурак
- •1.В каких случаях эффективно использование параллельных методик программирования ?
- •2. Есть мнение, что для написания программ mpi достаточно лишь 5-ти основых функций. Назовите их. Как Вы относитесь к данному высказыванию ?
- •3. Решение 3-мерного уравнения Лапласа методом 1-мерной декомпозиции.
- •43 Сурак
- •1. Суперскалярные и векторные процессоры.
- •2. Виртуальные топологии. Декартова и графовая топологии. В каких случаях их следует использовать. Основные шаги для создания декартовой топологии.
- •3. Параллельное умножение матрицы и вектора в mpi.
- •53 Сурак
- •7 Состояние гонки. Алгоритм с конкуренцией. Синхронизация. Задача обедающих философов.
- •2.Коллективные операции обмена сообщениями. Редукция. Примеры.
- •3. Напишите программу параллельного скалярного умножения векторов.
- •63 Сурак
- •1. Современные архитектуры параллельных компьютеров. Аппаратная часть.
- •2.Группы и коммуникаторы mpi. Создание новых групп (коммуникаторов).
- •3. Параллельное умножение матриц в mpi.
- •73 Сурак
- •1 Таксономия Флинна. Архитектуры sisd, simd.
- •2.Что такое mpi ? Основные концепции и возможности.
- •3.Напишите программу параллельного вычисления числа pi.
- •83 Сурак
- •1.Закон Амдала. Ускорение. Эффективность.
- •3. Напишите параллельную программу проверки простого числа.
- •93 Сурак
- •1.Современные архитектуры параллельных компьютеров. Программная часть.
- •2.Пример использования фукнции mpi_Dims_create
- •3. Решение 3-мерного уравнения Лапласа методом 1-мерной декомпозиции.
- •4 Сурак
- •1.Примеры программ в стиле spmd и mpmd
- •2.Коммуникации точка/точка. Примеры использования фукнции mpi_Send(), mpi_Recv.
- •3.Напишите программу параллельного вычисления определенного интеграла от функции
- •14 Сурак
- •1. Таксономия Флинна. Архитектуры sisd, simd.
- •2.Что такое mpi ? Основные концепции и возможности.
- •3.Напишите программу параллельного вычисления числа pi.
- •24 Сурак
- •1.Что такое процесс ? Отличия процесса от потока.
- •2.Пример использования фукнции mpi_Cart_create
- •3.Решение 3-мерного уравнения Лапласа методом 1-мерной декомпозиции.
- •34 Сурак
- •1.Современные архитектуры параллельных компьютеров. Программная часть.
- •2.Есть мнение, что для написания программ mpi достаточно лишь 5-ти основых функций. Назовите их. Как Вы относитесь к данному высказыванию ?
- •3.Решение 3-мерного уравнения Лапласа методом 3-мерной декомпозиции.
- •484 Сурак
- •1.Современные архитектуры параллельных компьютеров. Аппаратная часть.
- •2.Пример использования фукнции mpi_cart_coords
- •3. 2 Өлшемді Лаплас теңдеуін 2-өлшемді декомпозиция тәсілімен программалау.
- •54 Сурак
- •1.Таксономия Флинна. Архитектуры misd, mimd.
- •2.Структура mpi программы в стиле spmd. Приведите пример.
- •3. 2*Sin(X) функциясының интегралын [0,1] аймақта параллельді есептеңіз.
- •64 Сурак
- •1.Закон Амдала с учетом сети. Ускорение. Эффективность.
- •2.Типы данных в mpi. Для чего они нужны
- •3.Напишите параллельную программу проверки совершенного числа.
- •74 Сурак
- •1.Таксономия Флинна. Архитектуры sisd, simd.
- •2.Структура mpi программ в стиле mpmd. Приведите пример.
- •3.Параллельная модификация метода Гаусса-Зейделя. Решение 2-мерного уравнения Лапласа 1 мерной декомпозицией (параллельный метод Гаусса-Зейделя).
- •84 Сурак
- •1.Суперскалярные и векторные процессоры.
- •2.Пользовательские типы данных. Размеры памяти для данных. Освобождение памяти.
- •3.Напишите программу параллельного поиска максимального числа в массиве.
- •94 Сурак
- •1.Архитектура numa.
- •2.Виртуальные топологии. Декартова и графовая топологии. В каких случаях их следует использовать. Основные шаги для создания декартовой топологии.
- •3.Параллельное умножение матрицы и вектора в mpi.
- •5 Сурак
- •1.Таксономия Флинна. Архитектуры misd, mimd.
- •2.Примеры программ в стиле spmd и mpmd
- •3.Напишите программу параллельного вычисления определенного интеграла от фукнции 2*sin(X) в интервале [0,1].
- •15 Сурак
- •1.В каких случаях эффективно использование параллельных методик программирования ?
- •25 Сурак
- •1. Можно ли запустить программу simd на современных процессорах семейства x86.
- •2. Пользовательские типы данных. Тип mpi_type_indexed (hindexed). Примеры.
- •3.Параллельное умножение матриц в mpi.
- •35 Сурак
- •1.Распределенная и разделяемая конфигурация памяти. Архитектура numa.
- •2. Пример использования фукнцииMpi_Cart_shift()
- •3.. Напишите параллельную программу проверки простого числа.
- •45 Сурак
- •1.Закон Амдала. Ускорение. Эффективность.
- •585 Сурак
- •1. Можно ли запустить программу simd на современных процессорах семейства x86.
- •65 Сурак
- •1.Spmd, mpmd стилінде программалау мысалдары.
- •2.Топтар мен коммуникаторлар. Ранг.
- •3 . 2*Cos(X) функциясының интегралын [0,1] аймақта параллельді есептеңіз.
- •75 Сурак
- •1.Амдал заны. Үдеу. Тиімділік.
- •2.Mpi мәлімет типтері. Олар не үшін керек ? Қолдану мысалдары.
- •3.Санды қарапайымдылықа тексеру параллельді программасын жазыңыз.
- •85 Сурак
- •1.Қазіргі параллель архитектуралы компьютерлер. Аппараттық бөлімі.
- •2.Mpi_cart_coords()функциясын қолдану мысалы.
- •3.2 ӨлшемдіЛапластеңдеуін 2-өлшемді декомпозициятәсіліменпрограммалау.
- •95 Сурак
- •1.Есепті декомпозициялау және аймақты декомпозициялау тәсілі. Мысалдар.
- •2.Mpi_Gather, mpi_scatter, mpi_allgather, mpi_alltoall, mpi_allreduce функциялары. Олардың айырмашылығы. Мысалдар.
- •3.Массивтемаксималсандыесептеупараллельдіпрограммасынжазыңыз.
- •6 Сурак
- •1.Флинна таксономиясы. Мisd, мimd архитектуралары.
- •2.Mpi программасын компиляциялау, жинау және орындау.
- •3.Гаусс-Зейдель тәсілінің параллельді түрі. 2 өлшемді Лаплас теңдеуін 1 өлшемді декомпозициялау (Параллельді Гаусс-Зейдель тәсілі).
- •16 Сурак
- •1.Процесс дегеніміз не? Ағын дегеніміз не? Прцесс пен ағын айырмашылығы.
- •3.3 Өлшемді Лаплас теңдеуін 3-өлшемді декомпозиция тәсілімен программалау.
- •26 Сурак
- •36 Сурак
- •2. Spmd стилінде mpi. Мысал келтіріңіз.
81 Сурак
1. Суперскалярные и векторные процессоры.
Скалярный процессор — это простейший класс микропроцессоров. Скалярный процессор обрабатывает один элемент данных за одну инструкцию (SISD, Single Instruction Single Data), типичными элементами данных могут быть целые или числа с плавающей запятой. В векторных процессорах (SIMD, Single Instruction Multiple Data), в отличие от скалярных, одна инструкция работает с несколькими элементами данных.
Суперскалярность — архитектура вычислительного ядра, использующая несколько декодеров команд, которые могут загружать работой множество исполнительных блоков. Планирование исполнения потока команд является динамическим и осуществляется самим вычислительным ядром.
Если в процессе работы команды, обрабатываемые конвейером, не противоречат друг другу, и одна не зависит от результата другой, то такое устройство (ядро) может осуществить параллельное выполнение команд. В суперскалярных системах решение о запуске инструкции на исполнение принимает сам вычислительный модуль, что требует много ресурсов.
Векторный процессор — это процессор, в котором операндами некоторых команд могут выступать упорядоченные массивы данных — векторы. Отличается от скалярных процессоров, которые могут работать только с одним операндом в единицу времени. Абсолютное большинство процессоровявляются скалярными или близкими к ним.
2. Пример использования фукнции MPI_Cart_shift()
Функция MPI_Cart_shift обеспечивает получение рангов процессов, с которыми текущий процесс (процесс, вызвавший функцию MPI_Cart_shift) должен выполнить обмен данными : int MPI_Card_shift(MPI_Comm comm, int dir, int disp, int *source, int *dst). 1. comm – коммуникатор с топологией решетки. 2. dir - номер измерения, по которому выполняется сдвиг. 3.disp - величина сдвига (<0 – сдвиг к началу измерения). 4. source – ранг процесса, от которого должны быть получены данные. 5. dst - ранг процесса которому должны быть отправлены данные.
MPI_Cart_shift(cartcomm,0,1,&nbrs[LEFT], &nbrs[RIGHT]);
3. Решение 2-мерного уравнения Лапласа методом 1-мерной декомпозиции.
constint N=100;
float P[N][N],
h=0.01, //шаг сетки
eps=0.01, //точность
max, //норма
**p, //текущая итерация
**pp, //предыдущая итерация
a[N],b[N]; //вспомогательные векторы
inti,j,
c, //кол-во строк матрицы на каждом процессоре
stop = 1; //условие заверщения цикла
intrank,size;
MPI_Init(&argc,&argv);
MPI_Status status;
MPI_Comm_rank(MPI_COMM_WORLD,&rank);
MPI_Comm_size(MPI_COMM_WORLD,&size);
if(rank<N%size)
{
c=N/size+1;
}else
{
c=N/size;
}
p=newfloat*[c];
pp=newfloat*[c];
for(i=0;i<c;i++)
{
p[i]=newfloat[N];
pp[i]=newfloat[N];
p[i][0]=1;
pp[i][0]=1;
for(int j=1;j<N;j++)
{
p[i][j]=0;
pp[i][j]=0;
}
}
if(rank==0)
{
do
{
if(size>1)
{
MPI_Send(&p[c-1][0],N,MPI_FLOAT,rank+1,
0,MPI_COMM_WORLD);
MPI_Recv(a,N,MPI_FLOAT,rank+1,size,
MPI_COMM_WORLD, &status);
}
max=0.0;
for(i=1;i<c-1;i++)
{
for(j=1;j<N-1;j++)
{
p[i][j]=(pp[i+1][j]+pp[i-1][j]+pp[i][j+1]+pp[i][j-1])/4;
if(max<fabs(p[i][j]-pp[i][j]))
{
max=fabs(p[i][j]-pp[i][j]);
}
}
}
if(size>1)
{
for(j=1;j<N-1;j++)
{
p[c-1][j]=(pp[c-2][j]+a[j]+pp[c-1][j+1]+pp[c-1][j-1])/4;
if(max<fabs(p[c-1][j]-pp[c-1][j]))
{
max=fabs(p[c-1][j]-pp[c-1][j]);
}
}
floatmaxx;
for(i=1;i<size;i++)
{
MPI_Recv(&maxx,1,MPI_FLOAT,i,2*size,MPI_COMM_WORLD,&status);
if(maxx>max)
{
max=maxx;
}
}
}
if(max<=eps)
{
stop=0;
}
if(size>1)
{
for(i=1;i<size;i++)
{
MPI_Send(&stop,1,MPI_INT,i,3*size,MPI_COMM_WORLD);
}
}
for(i=0;i<c;i++)
{
for(j=0;j<N;j++)
{
pp[i][j]=p[i][j];
}
}
}while(stop==1);
for(i=0;i<c;i++)
{
for(int j=0;j<N;j++)
{
P[i][j]=p[i][j];
}
}
if(size>1)
{
intjj=c-1;
for(i=1;i<size;i++)
{
MPI_Recv(&c,1,MPI_INT,i,4*size,MPI_COMM_WORLD,&status);
for(j=0;j<c;j++)
{
jj++;
MPI_Recv(&P[jj][0],100,MPI_FLOAT,i,5*size,MPI_COMM_WORLD,&status);
}
}
}
ofstream out("result.txt");
for(i=0;i<N;i++)
{
for(int j=0;j<N;j++)
{
out<<P[i][j]<<'\t'; //вывожу в результаты в фаил
}
out<<'\n';
}
}
if(rank==size-1&&size>1)
{
do
{
MPI_Recv(b,N,MPI_FLOAT,rank-1,0,MPI_COMM_WORLD,&status);
MPI_Send(&p[0][0],N,MPI_FLOAT,rank-1,size,MPI_COMM_WORLD);
max=0;
for(i=1;i<c-1;i++)
{
for(j=1;j<N-1;j++)
{
p[i][j]=(pp[i+1][j]+pp[i-1][j]+pp[i][j+1]+pp[i][j-1])/4;
if(max<fabs(pp[i][j]-p[i][j]))
{
max=fabs(pp[i][j]-p[i][j]);
}
}
}
for(j=1;j<N-1;j++)
{
p[0][j]=(pp[1][j]+b[j]+pp[0][j+1]+pp[0][j-1])/4;
if(max<fabs(pp[0][j]-p[0][j]))
{
max=fabs(pp[0][j]-p[0][j]);
}
}
MPI_Send(&max,1,MPI_FLOAT,0,2*size,MPI_COMM_WORLD);
for(i=0;i<c;i++)
{
for(j=0;j<N;j++)
{
pp[i][j]=p[i][j];
}
}
MPI_Recv(&stop,1,MPI_INT,0,3*size,MPI_COMM_WORLD,&status);
}while(stop==1);
MPI_Send(&c,1,MPI_INT,0,4*size,MPI_COMM_WORLD);
for(i=0;i<c;i++)
{
MPI_Send(&p[i][0],N,MPI_FLOAT,0,5*size,MPI_COMM_WORLD);
}
}
if(rank>0&&rank<size-1)
{
do
{
MPI_Recv(b,N,MPI_FLOAT,rank-1,0,MPI_COMM_WORLD,&status);
MPI_Send(&p[c-1][0],N,MPI_FLOAT,rank+1,0,MPI_COMM_WORLD);
MPI_Recv(a,N,MPI_FLOAT,rank+1,size,MPI_COMM_WORLD,&status);
MPI_Send(&p[0][0],N,MPI_FLOAT,rank-1,size,MPI_COMM_WORLD);
max=0;
int ii;
if(rank<N%size||100%size==0)
{
ii=rank*c;
}
if(rank>N%size&&100%size!=0)
{
ii=(N%size)*(c+1)+(rank-N%size)*c;
}
for(i=1;i<c-1;i++)
{
for(j=1;j<N-1;j++)
{
p[i][j]=(pp[i+1][j]+pp[i-1][j]+pp[i][j+1]+pp[i][j-1])/4;
if(max<fabs(pp[i][j]-p[i][j]))
{
max=fabs(pp[i][j]-p[i][j]);
}
}
}
for(j=1;j<N-1;j++)
{
p[0][j]=(pp[1][j]+b[j]+pp[0][j+1]+pp[0][j-1])/4;
if(max<fabs(pp[0][j]-p[0][j]))
{
max=fabs(pp[0][j]-p[0][j]);
}
p[c-1][j]=(pp[c-2][j]+a[j]+pp[c-1][j+1]+pp[c-1][j-1])/4;
if(max<fabs(pp[c-1][j]-p[c-1][j]))
{
max=fabs(pp[c-1][j]-p[c-1][j]);
}
}
MPI_Send(&max,1,MPI_FLOAT,0,2*size,MPI_COMM_WORLD);
for(i=0;i<c;i++)
{
for(j=0;j<N;j++)
{
pp[i][j]=p[i][j];
}
}
MPI_Recv(&stop,1,MPI_INT,0,3*size,MPI_COMM_WORLD,&status);
}while(stop==1);
MPI_Send(&c,1,MPI_INT,0,4*size,MPI_COMM_WORLD);
for(i=0;i<c;i++)
{
MPI_Send(&p[i][0],N,MPI_FLOAT,0,5*size,MPI_COMM_WORLD);
}
}