[地球流体電脳倶楽部]
[dcmodel |
dcmodel-tools]
[numexp]
[spmodel]
SPMODEL 球面浅水モデルを用いた
山岳応答問題の計算
このページには SPMODEL 球面浅水モデル を用いた山岳応答問題
(Grose and Hoskins (1979) の剛体回転帯状流の場合に相当)の計算結果を示している.
並列計算用にプログラムを書きかえ,spml2 で計算出来ることを確認する.
spml1 の非並列計算, 並列計算, spml2 の非並列計算, 並列計算で比較する.
- 計算に使用した計算機
- nozomi
- CPU : Intel(R) Core(TM) i7-9700K CPU @ 3.60GHz
spml1 の非並列計算
spml1 の並列計算
- T42 (時間ステップ幅: dt=100, 積分回数: nt=100, 出力ステップ: ndisp=1)
- 2並列, 4並列, 8並列
並列数 |
2 |
4 |
8 |
cput(ジョブの使用CPU時間) |
00:00:00 |
00:00:00 |
00:00:03 |
walltime(ジョブの経過時間) |
00:00:01 |
00:00:01 |
00:00:01 |
mem (ジョブの物理メモリ使用量の瞬間最大値) [kb] |
0 |
0 |
0 |
vmem(ジョブの仮想メモリ使用量の瞬間最大値) [kb] |
0 |
0 |
0 |
- T170 (時間ステップ幅: dt=100, 積分回数: nt=3000, 出力ステップ: ndisp=10)
- 2並列, 4並列, 8並列, 16並列, 32並列
並列数 |
2 |
4 |
8 |
16 |
32 |
cput(ジョブの使用CPU時間) |
00:01:44 |
00:03:00 |
00:05:00 |
00:09:16 |
00:10:32 |
walltime(ジョブの経過時間) |
00:01:09 |
00:00:58 |
00:00:52 |
00:01:20 |
00:01:32 |
mem (ジョブの物理メモリ使用量の瞬間最大値) [kb] |
128184 |
209960 |
365128 |
375348 |
395144 |
vmem(ジョブの仮想メモリ使用量の瞬間最大値) [kb] |
1212472 |
2109136 |
4014896 |
4153544 |
4305072 |
- T170 (時間ステップ幅: dt=100, 積分回数: nt=3000, 出力ステップ: ndisp=3000)
- 2並列, 4並列, 8並列, 16並列, 32並列
並列数 |
2 |
4 |
8 |
16 |
32 |
cput(ジョブの使用CPU時間) |
00:01:37 |
00:02:22 |
00:03:55 |
00:07:10 |
00:08:18 |
walltime(ジョブの経過時間) |
00:00:50 |
00:00:37 |
00:00:30 |
00:00:55 |
00:01:04 |
mem (ジョブの物理メモリ使用量の瞬間最大値) [kb] |
127524 |
206924 |
362824 |
372008 |
393300 |
vmem(ジョブの仮想メモリ使用量の瞬間最大値) [kb] |
1208184 |
2109136 |
4014868 |
4153480 |
4304888 |
ISPACK1 APTIME を用いて計測[s] |
48 |
35 |
29 |
54 |
62 |
spml2 の非並列計算
spml2 の並列計算
- T42 (時間ステップ幅: dt=100, 積分回数: nt=100, 出力ステップ: ndisp=1)
- w_*((nm+1)*(nm+1)) 2並列, 4並列, 8並列 (OMP_NUM_THREADS=1)
並列数 |
2 |
4 |
8 |
cput(ジョブの使用CPU時間) |
00:00:00 |
00:09:45 |
00:21:23 |
walltime(ジョブの経過時間) |
00:00:01 |
00:01:14 |
00:02:41 |
mem (ジョブの物理メモリ使用量の瞬間最大値) [kb] |
0 |
154212 |
271944 |
vmem(ジョブの仮想メモリ使用量の瞬間最大値) [kb] |
0 |
5240916 |
10290788 |
- w_*(nc) 2並列, 4並列, 8並列 (OMP_NUM_THREADS=1)
並列数 |
2 |
4 |
8 |
cput(ジョブの使用CPU時間) |
00:00:00 |
00:00:00 |
00:00:03 |
walltime(ジョブの経過時間) |
00:00:01 |
00:00:01 |
00:00:02 |
mem (ジョブの物理メモリ使用量の瞬間最大値) [kb] |
0 |
0 |
0 |
vmem(ジョブの仮想メモリ使用量の瞬間最大値) [kb] |
0 |
0 |
0 |
- T170 (時間ステップ幅: dt=100, 積分回数: nt=3000, 出力ステップ: ndisp=10)
- 2並列, 4並列, 8並列, 16並列, 32並列 (OMP_NUM_THREADS=1)
並列数 |
2 |
4 |
8 |
16 |
32 |
cput(ジョブの使用CPU時間) |
00:00:55 |
00:01:25 |
00:02:24 |
00:09:53 |
00:09:23 |
walltime(ジョブの経過時間) |
00:00:49 |
00:00:41 |
00:00:35 |
00:01:23 |
00:01:21 |
mem (ジョブの物理メモリ使用量の瞬間最大値) [kb] |
115176 |
177680 |
297680 |
314648 |
338556 |
vmem(ジョブの仮想メモリ使用量の瞬間最大値) [kb] |
1244272 |
2183412 |
4134088 |
4286544 |
4440060 |
- 2並列でスレッド数を変化させる
スレッド数 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
cput(ジョブの使用CPU時間) |
00:00:55 |
00:07:41 |
00:35:02 |
00:41:13 |
00:47:01 |
00:53:29 |
00:58:56 |
01:04:31 |
walltime(ジョブの経過時間) |
00:00:47 |
00:03:59 |
00:17:34 |
00:20:39 |
00:23:32 |
00:26:45 |
00:29:30 |
00:32:17 |
mem (ジョブの物理メモリ使用量の瞬間最大値) [kb] |
113060 |
112152 |
111256 |
113424 |
117224 |
113144 |
114028 |
111444 |
vmem(ジョブの仮想メモリ使用量の瞬間最大値) [kb] |
1243000 |
1383600 |
1522892 |
1662048 |
1801456 |
1940316 |
2080040 |
2219120 |
- T170 (時間ステップ幅: dt=100, 積分回数: nt=3000, 出力ステップ: ndisp=3000)
- 2並列, 4並列, 8並列, 16並列, 32並列 (OMP_NUM_THREADS=1)
並列数 |
2 |
4 |
8 |
16 |
32 |
cput(ジョブの使用CPU時間) |
00:00:50 |
00:01:02 |
00:01:27 |
00:07:58 |
00:07:22 |
walltime(ジョブの経過時間) |
00:00:26 |
00:00:16 |
00:00:12 |
00:01:02 |
00:00:57 |
mem (ジョブの物理メモリ使用量の瞬間最大値) [kb] |
106868 |
175752 |
302524 |
306412 |
318612 |
vmem(ジョブの仮想メモリ使用量の瞬間最大値) [kb] |
1242552 |
2175136 |
4133844 |
4269716 |
4423760 |
ISPACK3 MXTIME を用いて計測[s] |
25 |
15 |
11 |
60 |
55 |
まとめ
- spml2 の計算が spml1 に比べて最大2.6倍(T170 : dt=100, nt=3000, ndisp=3000, 並列数=8) はやくなった.
- 8並列の実行が,一番はやい.
-->