Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Методичка третья по MATLAB

.pdf
Скачиваний:
181
Добавлен:
19.03.2015
Размер:
1.28 Mб
Скачать

31

5.Список литературы

1.The MathWorks. Parallel Computing Toolbox User’s Guide. 2008

2.Parallel MATLAB: Doing it Right Ron Choy, Alan Edelman Massachusetts Institute of Technology, Cambridge, MA 02139

3.Н.Н. Оленев, Р.В. Печенкин, А.М.Чернецов Параллельное про­ граммирование в MATLAB и его приложения. М.: ВЦ РАН, 2007. 120 с.

4.В.П. Гергель, Р.Г. Стронгин Основы параллельных вычислений для многопроцессорных вычислительных систем. Нижний Новгород, 2003

5.C. Moler. Why there isn’t a parallel matlab. Cleve’s corner , Mathworks Newsletter, 1995.

6.Parallel MATLAB Survey. http://www.interactivesupercomputing.com/reference/parallelMatlabsurvey.php

7.B. Barney. Introduction to Parallel Computing

https://computing.llnl.gov/tutorials/parallel_comp/ , 2009

8.http://www.mathworks.com/

9.http://matlab.exponenta.ru/

10.http://wikimedia.org/

11.http://www.wikiznanie.ru

32

6.Приложение

1.Пример последовательного и параллельного циклов Последовательный цикл:

for i=1:1024

A(i) = sin(i*2*pi/1024); end

plot(A)

Параллельный цикл

matlabpool open local 2 parfor i=1:1024

A(i) = sin(i*2*pi/1024); end

plot(A) matlabpool close

2. Пример цикла с независимыми друг от друга итерациями

Последовательный цикл:

clear A for i = 1:8

A(i) = i;

end A

Параллельный цикл

matlabpool open local 2 clear A

parfor i = 1:8 A(i) = i;

end

matlabpool close

3. Последовательность Фибоначчи. Пример не параллелизуемого цикла.

f = zeros(1,50); f(1) = 1;

f(2) = 2; parfor n = 3:50

33

f(n) = f(n­1) + f(n­2);

end

4. Работа с Parallel Command Window

pmode start local 2 help magic

x = pi

x = labindex all = numlabs

segment = [1 2; 3 4; 5 6] segment = segment + 10*labindex F = @(x) 4./(1 + x.^2)

a = (labindex ­ 1)/numlabs; b = labindex/numlabs;

[a, b]

myIntegral = quadl(F, a, b) piApprox = gplus(myIntegral) piApprox ­ pi

pmode exit

5. Последовательное и параллельное перемножение матриц

Последовательный цикл:

clear; n = 10; tic;

parfor i = 1:n

M = magic(n); R = rand(n);

A(i) = sum(M(i,:).*R(n+1­i,:));

end toc

Параллельный цикл

matlabpool open local 2 clear;

n = 10; tic;

for i = 1:n

M = magic(n); R = rand(n);

A(i) = sum(M(i,:).*R(n+1­i,:));

34

end toc

matlabpool close

6.Поиск суммы, произведения и максимального члена ряда в параллельном цикле

matlabpool open local 2 clear;

n = 10;

x = rand(n, 1); total = 0.0; big = ­Inf; fact = 1;

for i = 1:n

total = total + x(i); big = max(big, x(i)); fact = fact*x(i);

end

matlabpool close

7. Неверное задание индексации параллельного цикла

>> parfor i=1:2:10

% не

последовательная

индексация

>>

parfor i=­5.1:10.3

%

не

целые индексы

 

>>

parfor i=[5;6;7;8]

%

индексы не образуют

ряд

35