Результаты экспериментов
Эксперименты
проводились на двухпроцессорном вычислительном узле на базе двухядерных
процессоров Intel Core
2 Duo E6550, 2.33 ГГц,
4 Гб RAM, под управлением операционной системы Microsoft Windows 7 Enterprise
2010. Узлы соединены по сети 1 Gigabit Ethernet. Разработка программ проводилась в среде Microsoft Visual Studio
2008, для компиляции использовался стандартный компилятор, предоставляемый
средой, с включенной полной оптимизацией.
Параметры
теоретических зависимостей в данной вычислительной системе имеют значения:
–
2.25 нсек, латентность α – 44 мкс, пропускная способности β
– 39,73 Мбайт/с и величина w равна 8 байт.
Умножение матрицы на вектор с ленточным разделением данных по строкам (Debug)< p>
Размер матрицы |
Последоваетльный алгоритм / Параллельный алгоритм в один
процесс, с |
Параллельный алгоритм |
2 процесса |
4 процесса |

|

|

|

|

|

|
1000 |
0,0074/0,0101 |
0,5473 |
0,0067 |
0,0122 |
0,3738 |
0,0100 |
0,0263 |
2000 |
0,0297/0,0415 |
1,3833 |
0,0135 |
0,0097 |
1,3695 |
0,0135 |
0,0098 |
3000 |
0,0688/0,0941 |
3,3022 |
0,0249 |
0,0075 |
3,2061 |
0,0193 |
0,0060 |
4000 |
0,1222/0,1668 |
5,5237 |
0,0407 |
0,0073 |
5,4761 |
0,0273 |
0,0049 |
5000 |
0,1911/0,2604 |
8,9452 |
0,0611 |
0,0068 |
8,8108 |
0,0376 |
0,0042 |
Умножение матрицы на вектор с ленточным разделением данных по строкам (Release)< p>
Размер матрицы |
Последоваетльный алгоритм / Параллельный алгоритм в один
процесс, с |
Параллельный алгоритм |
2 процесса |
4 процесса |

|

|

|

|

|

|
1000 |
0,0022/0,0069 |
0,2784 |
0,0067 |
0,0079 |
0,2444 |
0,0100 |
0,0090 |
2000 |
0,0087/0,0281 |
0,3429 |
0,0135 |
0,0253 |
0,3896 |
0,0135 |
0,0224 |
3000 |
0,0195/0,0626 |
1,1239 |
0,0249 |
0,0173 |
0,7271 |
0,0193 |
0,2681 |
4000 |
0,0346/0,1114 |
1,6815 |
0,0407 |
0,0205 |
1,1834 |
0,0273 |
0,0292 |
5000 |
0,0541/0,1734 |
2,3380 |
0,0611 |
0,0231 |
1,9773 |
0,0376 |
0,0273 |
Умножение матрицы на вектор с ленточным разделением данных по строкам (Debug)< p>
Размер матрицы |
Последоваетльный алгоритм / Параллельный алгоритм в один
процесс, с |
Параллельный алгоритм |
2 процесса |
4 процесса |

|

|

|

|

|

|
1000 |
0,0074/0,0199 |
0,3517 |
0,0112 |
0,0341 |
0,3456 |
0,0146 |
0,0422 |
2000 |
0,0297/0,0796 |
1,3917 |
0,0181 |
0,0129 |
1,3704 |
0,0182 |
0,0132 |
3000 |
0,0688/0,1859 |
3,1365 |
0,0296 |
0,0094 |
3,0781 |
0,0241 |
0,0078 |
4000 |
0,1222/0,3389 |
5,5768 |
0,0455 |
0,0081 |
5,4756 |
0,0323 |
0,0058 |
5000 |
0,1911/0,5544 |
8,7234 |
0,0660 |
0,0075 |
8,5521 |
0,0427 |
0,0049 |
Умножение матрицы на вектор с ленточным разделением данных по строкам (Release)< p>
Размер матрицы |
Последоваетльный алгоритм / Параллельный алгоритм в один
процесс, с |
Параллельный алгоритм |
2 процесса |
4 процесса |

|

|

|

|

|

|
1000 |
0,0022/0,0121 |
0,0926 |
0,0112 |
0,0237 |
0,0924 |
0,0146 |
0,0238 |
2000 |
0,0087/0,0534 |
0,3472 |
0,0181 |
0,0250 |
0,2916 |
0,0182 |
0,0293 |
3000 |
0,0195/0,1277 |
0,7987 |
0,0296 |
0,0244 |
0,6617 |
0,0241 |
0,0294 |
4000 |
0,0346/0,2566 |
1,4229 |
0,0455 |
0,0243 |
1,1090 |
0,0323 |
0,0311 |
5000 |
0,0541/0,3898 |
2,2891 |
0,0660 |
0,0236 |
1,7586 |
0,0427 |
0,0307 |
Умножение матрицы на вектор с блочным разделением данных (Debug)< p>
Размер матрицы |
Последоваетльный алгоритм / Параллельный алгоритм в один
процесс, с |
Параллельный алгоритм |
4 процесса |
9 процессов |

|

|

|

|

|

|
1200 |
0,0074/0,0234 |
0,5101 |
0,0061 |
0,0119 |
1,0632 |
0,0052 |
0,0048 |
2400 |
0,0297/0,0941 |
2,1781 |
0,0111 |
0,0051 |
3,0569 |
0,0075 |
0,0024 |
3600 |
0,0688/0,2099 |
4,3112 |
0,0193 |
0,0044 |
5,4981 |
0,0112 |
0,0021 |
4800 |
0,1222/0,3724 |
9,4124 |
0,0307 |
0,0032 |
9,8787 |
0,0164 |
0,0016 |
6000 |
0,1911/0,5823 |
15,0529 |
0,0454 |
0,0031 |
15,3326 |
0,0230 |
0,0015 |
Умножение матрицы на вектор с блочным разделением данных (Release)< p>
Размер матрицы |
Последоваетльный алгоритм / Параллельный алгоритм в один
процесс, с |
Параллельный алгоритм |
4 процесса |
9 процессов |

|

|

|

|

|

|
1200 |
0,0022/0,0126 |
0,1621 |
0,0061 |
0,0135 |
0,7250 |
0,0052 |
0,0030 |
2400 |
0,0087/0,0485 |
0,7173 |
0,0111 |
0,0121 |
1,1002 |
0,0075 |
0,0079 |
3600 |
0,0195/0,1082 |
1,6934 |
0,0193 |
0,0115 |
1,6064 |
0,0112 |
0,0121 |
4800 |
0,0346/0,1992 |
3,6657 |
0,0307 |
0,0094 |
2,8770 |
0,0164 |
0,0120 |
6000 |
0,0541/0,2992 |
7,6920 |
0,0454 |
0,0070 |
5,5284 |
0,0230 |
0,0097 |
Проанализировав
данные экспериментов, можно заметить их некоторое различие с теоретическими оценками выполнения
параллельных алгоритмов. Одной из причин
такой разницы являются пересылки данных между процессами вычислительной
системы на этапах рассылки и сбора данных.
|