Увага! Всі конференції починаючи з 2014 року публікуються на новому сайті: conferences.neasmo.org.ua
Наукові конференції
 

ПАРАЛЛЕЛЬНЫЕ ВЫЧИСЛЕНИЯ В СРЕДЕ MATLAB, КАК СОДЕРЖАТЕЛЬНАЯ ЧАСТЬ ИНФОРМАЦИОННО-ДИДАКТИЧЕСКОЙ СИСТЕМЫ

Автор: 
Меруерт Серік, Мурат Бакиев, Жандос Зулпыхар (Астана, Казахстан)

Работая в области внедрения новых информационных технологий в систему образования, основным аспектом нашей трудовой деятельности является постоянное повышение качества образования [1, c.91].

Информационно-дидактическая система – это системно организованная совокупность информационного, технического, учебно-методического обеспечения, неразрывно связанная с обучаемым, как субъектом образовательного процесса [2, c.19].

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

В учебном процессе специальности «Информатика» у магистрантов первого курса ведется спецкурс «Параллельное программирование». На основе операционной системы Windows Server настроен MatLab(R2011b) кластер.

Целью данной работы является выявить преимущество параллельного умножения матриц в сравнении с последовательным умножением матриц.

В качестве примера берем магический квадрат A(n*n) и матрицу Z(n).

Для выполнения данного задания надо:

  1. повторить алгоритм умножения матриц размерностью n.

  2. составить программы последовательного и параллельного умножения матриц.

  3. проверить время выполнения кода при различных значениях n.

При выполнении заданий после проверки рабочих состояний всех worker-ов (!admincenter), создаем m-файл (matr1.m):

clear;

n = 1000;

tic;

for k= 1:n

D = magic(n);

Z = rand(n);

A(k) = sum(D(k,:).*Z(n+1-k,:));

end

toc

где, tic – запускает таймер;

toc – останавливает таймер.

В результате с помощью вышеуказанных двух команд получаем время выполнения соответствующего участка кода.

Также создаем файл под названием matr2.m c кодом:

matlabpool open mpc 4

clear;

n = 1000;

tic;

parfor k = 1:n

D = magic(n);

Z = rand(n);

A(k) = sum(D(k,:).*Z(n+1-k,:));

end

toc

matlabpool close

Пул (MATLABpool) – несколько лабораторий (labs), зарезервированных клиентом для выполнения параллельных вычислений.

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

Можно контролировать выполнение своей программы через систему запуска как в окне системы Matlab (версия R2011b и выше) с помощью JobMonitor (с помощью меню Parallel), так и из командной строки с помощью команд системы.

Явное задание пула возможно при работе в командном окне Matlab с помощью команды matlabpool [3, c.32]. Время и число выделенных процессов, которые доступны пользователю, зависят от заданной параллельной конфигурации. В данный момент в нашем случае название конфигурации будет mpc, а количество процессов - 4 (по 2 ядра в каждом процессоре). Для эксперимента нами были выбраны 2 компьютера: Pentium(R) Dual-Core CPU 2.8 GHz и Pentium(R) Dual-Core CPU 3.5 GHz.

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

Следующим этапом является использование Core i7 CPU 2.20 GHz с графическим процессором NVIDIA, т.е. с дополнительной вычислительной мощью GPU Computing.

Таблица 1 – Данные для сравнения последовательного и параллельного умножения матриц при количестве workers равным 4 (в нашем случае количество workers совпадает с количеством ядер)

N

Последовательное

Умножение

Параллельное

умножение

300

3.617402

1.319166

1000

147.087110

48.551099

При запуске m-файла matr2.m при количестве workers равным восьми и при разных значениях n получены улучшенные результаты:

>> matr2

Starting matlabpool using the 'local' configuration ... connected to 8 labs.

Elapsed time is 25.433397 seconds.

Sending a stop signal to all the labs ... stopped.

>>

Следующая таблица отражает сравнение последовательного и параллельного умножения матриц при количестве workers равным 8 (таблица 2).

Таблица 2 – Данные для сравнения последовательного и параллельного умножения матриц при количестве workers равным 8

N

Последовательное

Умножение

Параллельное

умножение

300

1.396600

0.787286

1000

60.864665

25.433397

Как показывал результат, чем больше значение n, тем меньше времени затрачивается в параллельном варианте умножения по сравнению с последовательным вариантом.

Литература:

  1. Серик М., Керимбаев Н., Ликерова А. Информационно-дидактическая система как важное звено в интеграции образования // Международный журнал экспериментального образования. – М.: РАЕ, 2012. - №12(1). - С.91-93.

  2. Малибекова М.С. (Серік М.) Информационно-дидактическая система как средство повышения качества образования // Телематика-2009: XVI Всероcсийская науч.-метод. конф. Санкт-Петербург: Санкт-Петербургский гос.университет информационных технологий, механики и оптики, 2009. -С.19-20.

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