C jqif=1 if xxxz > yyyz else jqif = 0 JQIF(XXXZ,YYYZ)=NINT(((XXXZ-YYYZ)/ + (ZEPS+ABS(XXXZ-YYYZ))+1.)*0.5-1.e-7)(met ZEPS gelijk aan 1.e-20). Dit werkt niet voor alle drijvende komma getallen. Het is beter dit als volgt te formuleren, zoals gerepareerd op 23 augustus 2019 (mogelijk gemaakt in Fortran 2008):
JQIF(XXXZ,YYYZ)=FINDLOC([.FALSE.,.TRUE.],XXXZ>YYYZ,DIM=1)-1
Intel Skylake machine | ARM ThunderX machine | |
---|---|---|
Semiconductor technology | 14 nm | 28 nm |
Cores | 10 (x2 Hyperthreads) | 48 |
Clock Frequency | 3.3 GHz | 2.0 GHz |
Memory Frequency | 2133 MHz | 1866 MHz |
Memory Layout | 4x32 Gbyte | 8x16 Gbyte |
Twee volkomen verschillende ongeparallelliseerde hulppprogramma's in het verwachtingssysteem laten een snelheidsverhoging met een factor 1,6 zien: een van 1 minuut 15 seconden naar 45 seconden doorlooptijd (gebruikt 5 Gbyte geheugen), een andere van 35 naar 21 seconden (gebruikt 1,5 Gbyte).
Maar voor de weersverwachtingsprogammatuur zelf is de nieuwe computer maar ongeveer 35 % sneller dan zijn voorganger en verbazingwekkend genoeg vermindert het rekenvermogen indien ik de hyperthreads inzet voor extra MPI processen:
CPU | Jaar aanschaf | CPU Mhz (max) | Geheugen Mhz | Cores | Hyperthreads | MPI processen | Tijdstaplengte (s) |
Skylake | 2017 | 4000 | 2133 | 10 | 2 | 20 | 21,0 +/- 0,3 |
Ryzen 9 | 2022 | 4500 | 2400 (!) | 16 | 2 | 32 | 16,9 +/- 0,3 |
Ryzen 9 | 2022 | 4500 | 2400 (!) | 16 | 2 | 16 | 16,0 +/- 0,3 |
Ryzen 9 | 2022 | 4500 | 2400 (!) | 16 | 2 | 8 | 17,6 +/- 0,3 |
Ryzen 9 | 2022 | 4500 | 3600 | 16 | 2 | 32 | 16,6 +/- 0,3 |
Ryzen 9 | 2022 | 4500 | 3600 | 16 | 2 | 16 | 15,6 +/- 0,3 |
En dit is wat het operating system er eerst van vond:
root@moene:~# lshw -short -C memory H/W path Device Class Description ============================================================= /0/0 memory 64KiB BIOS /0/37 memory 128GiB System Memory /0/37/0 memory 32GiB DIMM DDR4 Synchronous Unbuffered (Unregistered) 2400 MHz (0.4 ns) /0/37/1 memory 32GiB DIMM DDR4 Synchronous Unbuffered (Unregistered) 2400 MHz (0.4 ns) /0/37/2 memory 32GiB DIMM DDR4 Synchronous Unbuffered (Unregistered) 2400 MHz (0.4 ns) /0/37/3 memory 32GiB DIMM DDR4 Synchronous Unbuffered (Unregistered) 2400 MHz (0.4 ns) /0/3a memory 1MiB L1 cache /0/3b memory 8MiB L2 cache /0/3c memory 64MiB L3 cache