Новости
О Центре
Кластер
Обучение
Основной курс по параллельному программированию
Учебные курсы
Магистратура
Дополнительное образование
Работы студентов
Библиотека
Исследования
Конференции
Полезные ссылки
NVIDIA
Контакты
О сайте
Имя:
Пароль:
запомнить:
Забыли пароль? Регистрация

Ленточное умножение матриц

Постановка задачи

1. Реализовать последовательный алгоритм перемножения матриц.

2. Реализовать программу ленточного умножения матриц.

3. Провести набор тестов. Сравнить и сопоставить производительность двух алгоритмов.

Ленточный алгоритм

Алгоритм представляет собой итерационную процедуру, количество итераций которой совпадает с числом подзадач.

• На каждой итерации алгоритма каждая подзадача содержит по одинаковому количеству строк матрицы А и матрицы В.

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

• По завершении вычислений в конце каждой итерации столбцы матрицы В должны быть переданы между подзадачами с тем, чтобы в каждой подзадаче оказались новые столбцы матрицы В и могли быть вычислены новые элементы матрицы C.

• По завершении итераций строки собираются в единую матрицу C.

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

Анализ эффективности

Для анализа будем использовать следующие показатели:

T1 - оценка трудоемкости решения задачи на одном процессоре.

Tp(calc) - оценка трудоемкости решения задачи на p процессорах.

Tp(comm) - оценка трудоемкости выполняемых операций передачи данных.

S - ускорение. Ускорение определяется из отношения: S=T1/(Tp(calc)+Tp(comm))

Оценка трудоемкости последовательного алгоритма: T1=n^3

Оценка трудоемкости параллельного алгоритма: Tp(calc)=(n^3)/p

Оценка трудоемкости выполняемых операций передачи данных: Tp(comm)=(p−1)*(a+w*n*(n/p)/b), где a – латентность, b – пропускная способность сети передачи данных, а w есть размер элемента матрицы в байтах.

Ускорение: s=(n^3)/((n^3)/p+(p-1)*(a+w*n*(n/p)/b))

Результаты

Эксперимент проводился на следующем ПК:

Intel Core 2 Duo E8500, Up to 3.16 MHz

Microsoft Windows Vista Ultimate x64

Компилятор MS Visual Studio 2005

Пропускная способность: 267506473 байт/сек

Латентность: 0.000024 сек

Время, затрачиваемое на одну операцию: ~31 нс

Размер матрицы

Последовательный алгоритм

Последовательный алгоритм(теоретическое время)

Параллельный алгоритм(4 потока)

Параллельный алгоритм(4 потока)(теоретическое время)

Ускорение

Ускорение(теоретическое)

100

0.012691

0,006766

0.007269

0,003494

1.745876

1,919756

200

0.060255

0,054264

0.035815

0,027516

1.682375

1,963886

300

0.204928

0,183294

0.135160

0,092487

1.516183

1,97639

400

0.480475

0,434656

0.301263

0,218806

1.594870

1,982404

500

0.949451

0,84915

0.628690

0,426873

1.510204

1,98596

600

1.631549

1,467576

0.940577

0,737088

1.734625

1,988315

700

2.596448

2,330734

1.732621

1,169852

1.4985675

1,98999

800

3.873000

3,479424

2.355052

1,745563

1.644550

1,991245

900

5.717707

4,954446

3.400358

2,484624

1.681501

1,992219

1000

7.902827

6,7966

4.835743

3,407432

1.634253

1,992998

Размер матрицы

Последовательный алгоритм

Параллельный алгоритм(2 потока)

Ускорение

100

0.007497

0.004711

1.591361

200

0.060409

0.049961

1.209127

300

0.201906

0.137908

1.464065

400

0.480734

0.309894

1.551284

500

0.943268

0.599591

1.573185

600

1.631433

1.037070

1.573118

700

2.593723

1.627808

1.593384

800

3.868340

2.453623

1.576583

900

5.610638

3.527647

1.590476

1000

7.603838

4.847480

1.568617

Размер матрицы

Последовательный алгоритм

Параллельный алгоритм(1 поток)

100

0.011897

0.014926

200

0.060766

0.093259

300

0.201848

0.252131

400

0.479810

0.609116

500

0.936974

1.165074

600

1.618121

2.007215

700

2.567468

3.196951

800

3.842222

4.781128

900

5.536666

6.877959

1000

7.638913

9.476469

Автор: Удалова Татьяна 8409

Новости

22.10.2012
04.09.2012
05.04.2012
06.03.2012
02.03.2012