Slepc計算矩陣特徵值時間測試
注:
(1)GPU集羣介紹:
該集羣有一個登錄節點(ustcgpu)和100個計算節點(node1~node100)。各計算節點配置2 顆4核的IntelE5520 CPU,16GB內存,通過20GbsInfiniBand互聯。
(2)測試採用Krylov-Schur算法
-
計算速度
這裏採用Slepc計算稀疏度約爲1%矩陣的一半特徵值。
下面的表格表示的是計算1000×1000、2000×2000、5000×5000、10000×10000矩陣各自一半的特徵值,所需要的時間。
時間(s) |
1000 |
2000 |
5000 |
10000 |
Write_time |
0 |
1 |
30 |
449 |
Compute_time |
24 |
91 |
650 |
3184 |
Total_time |
24 |
92 |
680 |
3633 |
Write_time/Compute_time |
0 |
0.01 |
0.04 |
0.14 |
根據上圖進行二次曲線擬合(藍線表示),預測10W規模稀疏矩陣的特徵值求解時間,4.6109e+005s,約爲128小時。
-
結論:
-
Slepc計算少量特徵值的時間很快,與矩陣規模的關係不大。如果計算大量的特徵值(至少一半),則計算時間呈指數增加。而TB程序需要的特徵值對至少是一半,因此,Slepc中的算法針對大規模矩陣的多特徵值對的求解,需要進行改進。
-
如果在GPU集羣上,若Slepc能夠讓求解速度加快,則效果會比較理想。現在Slepc已經有單GPU版本,需要更多的測試。