Skip to content

Commit 68a1b77

Browse files
authored
Fix bug in performance printing (#561)
1 parent bc847bf commit 68a1b77

File tree

3 files changed

+22
-17
lines changed

3 files changed

+22
-17
lines changed

docs/documentation/expectedPerformance.md

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,9 @@ This case is located in `examples/3D_performance_test`.
1313
Results are for MFC v4.9.3 (July 2024 release), though numbers have not changed meaningfully since then.
1414
All results are for the compiler that gave the best performance.
1515
Note:
16-
* CPU results may be performed on CPUs with more cores than reported in the table; we report results for the best performance given the full processor die by checking the performance for different core counts on that device.
16+
* CPU results may be performed on CPUs with more cores than reported in the table; we report results for the best performance given the full processor die by checking the performance for different core counts on that device. CPU results are for the best performance we achieved using a single socket (or die).
1717
These are reported as (X/Y cores), where X is the used cores, and Y is the total on the die.
18-
* GPU results on single-precision (SP) GPUs performed computation in double-precision via conversion in compiler/software; these numbers are _not_ for single-precision computation.
19-
AMD MI250X GPUs have two graphics compute dies (GCDs) per MI250X device; we report results for one GCD, though one can quickly estimate full MI250X runtime by halving the single GCD grind time number.
18+
* GPU results are for a single GPU device. For single-precision (SP) GPUs, we performed computation in double-precision via conversion in compiler/software; these numbers are _not_ for single-precision computation. AMD MI250X GPUs have two graphics compute dies (GCDs) per MI250X device; we report results for one GCD, though one can quickly estimate full MI250X runtime by halving the single GCD grind time number.
2019

2120
| Hardware | | Grind Time | Compiler | Computer |
2221
| ---: | ----: | ----: | :--- | :--- |
@@ -30,18 +29,24 @@ AMD MI250X GPUs have two graphics compute dies (GCDs) per MI250X device; we repo
3029
| NVIDIA P100 | 1 GPU | 2.35 | NVHPC 23.5 | GT CSE Internal |
3130
| NVIDIA A40 (SP GPU) | 1 GPU | 3.3 | NVHPC 22.11 | NCSA Delta |
3231
| NVIDIA RTX6000 (SP GPU) | 1 GPU | 3.9 | NVHPC 22.11 | GT Phoenix |
33-
| Apple M1 Max | 8/10 cores | 72 | GNU 14.1.0 | N/A |
34-
| AMD EPYC 9534 (Genoa) | 64/64 cores | 96 | GNU 12.3.0 | GT Phoenix |
35-
| AMD EPYC 7763 (Milan) | 24/64 cores | 108 | GNU 11.4.0 | NCSA Delta |
36-
| Intel Xeon Platinum 8462Y+ (Sapphire Rapids) | 16/32 cores | 110 | GNU 12.3.0 | GT ICE |
37-
| Intel Xeon Gold 6454S (Sapphire Rapids) | 16/32 cores | 111 | NVHPC 24.5 | GT Rogues Gallery |
38-
| NVIDIA Grace CPU (Arm, Neoverse V2) | 18/72 cores | 116 | NVHPC 24.1 | GT Rogues Gallery |
39-
| AMD EPYC 7452 (Rome) | 16/32 cores | 126 | GNU 12.3.0 | GT ICE |
40-
| Intel Xeon Platinum 8352Y (Ice Lake) | 12/32 cores | 128 | NVHPC 24.5 | GT Rogues Gallery |
41-
| AMD EPYC 7713 (Milan) | 32/64 cores | 137 | GNU 12.1.0 | GT Phoenix |
42-
| Intel Xeon Gold 6226 (Cascade Lake) | 12/12 cores | 152 | Intel oneAPI 2022.1 | GT Phoenix |
43-
| Ampere Altra Max (Arm, Neoverse-N1) | 8/80 cores | 183 | GNU 12.2.0 | OLCF Wombat |
44-
| Intel Xeon E5-2650V4 (Broadwell) | 8/12 cores | 230 | NVHPC 23.5 | GT CSE Internal |
32+
| Apple M1 Max | 8/10 cores | 14.3 | GNU 14.1.0 | N/A |
33+
| IBM Power9 | 20/21 cores | 21.2 | GNU 9.1.0 | OLCF Summit |
34+
35+
Processors To-do:
36+
37+
| Hardware | | Grind Time | Compiler | Computer |
38+
| ---: | ----: | ----: | :--- | :--- |
39+
| AMD EPYC 9534 (Genoa) | 64/64 cores | n/a | GNU 12.3.0 | GT Phoenix |
40+
| AMD EPYC 7763 (Milan) | 24/64 cores | n/a | GNU 11.4.0 | NCSA Delta |
41+
| Intel Xeon Platinum 8462Y+ (Sapphire Rapids) | 16/32 cores | n/a | GNU 12.3.0 | GT ICE |
42+
| Intel Xeon Gold 6454S (Sapphire Rapids) | 16/32 cores | n/a | NVHPC 24.5 | GT Rogues Gallery |
43+
| NVIDIA Grace CPU (Arm, Neoverse V2) | 18/72 cores | n/a | NVHPC 24.1 | GT Rogues Gallery |
44+
| AMD EPYC 7452 (Rome) | 16/32 cores | n/a | GNU 12.3.0 | GT ICE |
45+
| Intel Xeon Platinum 8352Y (Ice Lake) | 12/32 cores | n/a | NVHPC 24.5 | GT Rogues Gallery |
46+
| AMD EPYC 7713 (Milan) | 32/64 cores | n/a | GNU 12.1.0 | GT Phoenix |
47+
| Intel Xeon Gold 6226 (Cascade Lake) | 12/12 cores | n/a | Intel oneAPI 2022.1 | GT Phoenix |
48+
| Ampere Altra Max (Arm, Neoverse-N1) | 8/80 cores | n/a | GNU 12.2.0 | OLCF Wombat |
49+
| Intel Xeon E5-2650V4 (Broadwell) | 8/12 cores | n/a | NVHPC 23.5 | GT CSE Internal |
4550

4651
__All grind times are in nanoseconds (ns) per grid point (gp) per equation (eq) per right-hand side (rhs) evaluation, so X ns/gp/eq/rhs. Lower is better.__
4752

src/simulation/m_rhs.fpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1028,7 +1028,7 @@ contains
10281028
end if
10291029
call cpu_time(t_finish)
10301030
if (t_step >= 4) then
1031-
time_avg = (abs(t_finish - t_start)/((ix%end - ix%beg)*(iy%end - iy%beg)*(iz%end - iz%beg)) + (t_step - 4)*time_avg)/(t_step - 3)
1031+
time_avg = (abs(t_finish - t_start) + (t_step - 4)*time_avg)/(t_step - 3)
10321032
else
10331033
time_avg = 0d0
10341034
end if

src/simulation/m_start_up.fpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1152,7 +1152,7 @@ contains
11521152
time_final = maxval(proc_time)
11531153
io_time_final = maxval(io_proc_time)
11541154
end if
1155-
print *, "Performance: ", time_final*1.0d9/sys_size, " ns/gp/eq/rhs"
1155+
print *, "Performance: ", time_final*1.0d9/(sys_size*maxval((/1,m_glb/))*maxval((/1,n_glb/))*maxval((/1,p_glb/))), " ns/gp/eq/rhs"
11561156
inquire (FILE='time_data.dat', EXIST=file_exists)
11571157
if (file_exists) then
11581158
open (1, file='time_data.dat', position='append', status='old')

0 commit comments

Comments
 (0)