Lanczos, C++, MPI, 3
Перейти к навигации
Перейти к поиску
Содержание
1 Ссылки
Исследовалась реализация на языке C++ с использованием MPI.
2 Локальность данных и вычислений
2.1 Локальность реализации алгоритма
2.1.1 Структура обращений в память и качественная оценка локальности
2.1.2 Количественная оценка локальности
3 Масштабируемость алгоритма и его реализации
3.1 Масштабируемость алгоритма
3.2 Масштабируемость реализации алгоритма
Исследование проводилось на суперкомпьютере "Ломоносов". Компилятор GCC 5.2.1; версия MPI 1.8.4.
Для компиляции и запуска использовались следующие команды:
$ mpic++ -std=c++0x -O2 <CPP_FILE> -lm -static-libstdc++ -o <EXE_FILE> $ mpirun -np <N_PROCESSORS> <EXE_FILE>
- Число процессоров: 2, 4, 8, 16, 32, 64, 128.
- Размерность матрицы [math]N[/math] от 5 000 до 50 000, шаг 5 000.
- Количество итераций алгоритма Ланцоша для всех экспериментов 200.
Результаты:
2 | 4 | 8 | 16 | 32 | 48 | 64 | 96 | 128 | |
---|---|---|---|---|---|---|---|---|---|
5000 | 1,5243 | 1,0951 | 0,9334 | 0,6631 | 0,7456 | 0,7038 | 0,7989 | 0,9985 | 0,985 |
10 000 | 5,667 | 4,2625 | 2,7502 | 3,6762 | 3,4435 | 3,6192 | 3,5194 | 3,8486 | 3,2956 |
15 000 | 12,5207 | 6,5995 | 7,2897 | 8,5086 | 8,539 | 9,0018 | 8,9427 | 15,0132 | 7,7088 |
20 000 | 23,8143 | 15,851 | 10,6313 | 13,7241 | 12,8051 | 14,3183 | 13,2946 | 14,0864 | 13,7499 |
25 000 | 37,5419 | 17,9436 | 15,5451 | 18,3944 | 19,6076 | 18,5444 | 19,1347 | 21,8366 | 21,4454 |
30 000 | 55,014 | 26,2702 | 22,3943 | 26,4935 | 25,5618 | 29,6784 | 28,0853 | 27,8872 | 31,2415 |
35 000 | 71,3969 | 37,4811 | 30,2274 | 34,0041 | 38,1028 | 38,4912 | 38,0174 | 37,1407 | 40,4463 |
40 000 | 100,326 | 47,4248 | 40,2295 | 44,0332 | 50,0015 | 52,9428 | 46,2961 | 51,4372 | 49,7504 |
45 000 | 142,93 | 66,4829 | 52,1382 | 55,4683 | 62,3042 | 65,0885 | 60,0512 | 57,8891 | 64,3764 |
Ниже приведен график зависимости времени выполнения программы от числа процессоров и размера исходной матрицы.