SPEC(R) CPU2017 Floating Point Rate Result Lenovo Global Technology ThinkSystem SR950 (2.70 GHz, Intel Xeon Platinum 8270) CPU2017 License: 9017 Test date: May-2019 Test sponsor: Lenovo Global Technology Hardware availability: Apr-2019 Tested by: Lenovo Global Technology Software availability: Dec-2018 Base Base Base Peak Peak Peak Benchmarks Copies Run Time Rate Copies Run Time Rate --------------- ------- --------- --------- ------- --------- --------- 503.bwaves_r 416 1971 2120 * 503.bwaves_r 416 1965 2120 S 503.bwaves_r 416 1972 2110 S 507.cactuBSSN_r 416 563 936 S 507.cactuBSSN_r 416 564 934 S 507.cactuBSSN_r 416 563 936 * 508.namd_r 416 396 997 S 508.namd_r 416 395 1000 S 508.namd_r 416 396 999 * 510.parest_r 416 2125 512 S 510.parest_r 416 2115 514 S 510.parest_r 416 2123 513 * 511.povray_r 416 657 1480 * 511.povray_r 416 657 1480 S 511.povray_r 416 659 1470 S 519.lbm_r 416 850 516 S 519.lbm_r 416 850 516 S 519.lbm_r 416 850 516 * 521.wrf_r 416 984 947 S 521.wrf_r 416 980 951 S 521.wrf_r 416 982 949 * 526.blender_r 416 494 1280 S 526.blender_r 416 494 1280 * 526.blender_r 416 495 1280 S 527.cam4_r 416 528 1380 S 527.cam4_r 416 527 1380 S 527.cam4_r 416 528 1380 * 538.imagick_r 416 347 2980 * 538.imagick_r 416 340 3040 S 538.imagick_r 416 348 2970 S 544.nab_r 416 313 2240 S 544.nab_r 416 314 2230 * 544.nab_r 416 314 2230 S 549.fotonik3d_r 416 2372 684 S 549.fotonik3d_r 416 2374 683 * 549.fotonik3d_r 416 2374 683 S 554.roms_r 416 1607 411 S 554.roms_r 416 1608 411 * 554.roms_r 416 1614 410 S ================================================================================= 503.bwaves_r 416 1971 2120 * 507.cactuBSSN_r 416 563 936 * 508.namd_r 416 396 999 * 510.parest_r 416 2123 513 * 511.povray_r 416 657 1480 * 519.lbm_r 416 850 516 * 521.wrf_r 416 982 949 * 526.blender_r 416 494 1280 * 527.cam4_r 416 528 1380 * 538.imagick_r 416 347 2980 * 544.nab_r 416 314 2230 * 549.fotonik3d_r 416 2374 683 * 554.roms_r 416 1608 411 * SPECrate2017_fp_base 1070 SPECrate2017_fp_peak Not Run HARDWARE -------- CPU Name: Intel Xeon Platinum 8270 Max MHz.: 4000 Nominal: 2700 Enabled: 208 cores, 8 chips, 2 threads/core Orderable: 2,3,4,6,8 chips Cache L1: 32 KB I + 32 KB D on chip per core L2: 1 MB I+D on chip per core L3: 35.75 MB I+D on chip per chip Other: None Memory: 3 TB (96 x 32 GB 2Rx4 PC4-2933Y-R) Storage: 960 GB tmpfs Other: None SOFTWARE -------- OS: SUSE Linux Enterprise Server 12 SP4 (x86_64) Kernel 4.12.14-94.41-default Compiler: C/C++: Version 19.0.0.117 of Intel C/C++ Compiler for Linux; Fortran: Version 19.0.0.117 of Intel Fortran Compiler for Linux Parallel: No Firmware: Lenovo BIOS Version PSE121C 1.50 released Jan-2019 File System: tmpfs System State: Run level 3 (multi-user) Base Pointers: 64-bit Peak Pointers: Not Applicable Other: None Submit Notes ------------ The numactl mechanism was used to bind copies to processors. The config file option 'submit' was used to generate numactl commands to bind each copy to a specific processor. For details, please see the config file. Operating System Notes ---------------------- Stack size set to unlimited using "ulimit -s unlimited" Tmpfs filesystem can be set with: mount -t tmpfs -o size=960g tmpfs /home Process tuning setting: echo 50000 > /proc/sys/kernel/sched_cfs_bandwidth_slice_us echo 240000000 > /proc/sys/kernel/sched_latency_ns echo 5000000 > /proc/sys/kernel/sched_migration_cost_ns echo 100000000 > /proc/sys/kernel/sched_min_granularity_ns echo 150000000 > /proc/sys/kernel/sched_wakeup_granularity_ns General Notes ------------- Environment variables set by runcpu before the start of the run: LD_LIBRARY_PATH = "/home/cpu2017-1.0.5-ic19/lib/intel64" Binaries compiled on a system with 1x Intel Core i9-799X CPU + 32GB RAM memory using Redhat Enterprise Linux 7.5 Transparent Huge Pages enabled by default Prior to runcpu invocation Filesystem page cache synced and cleared with: sync; echo 3> /proc/sys/vm/drop_caches runcpu command invoked through numactl i.e.: numactl --interleave=all runcpu NA: The test sponsor attests, as of date of publication, that CVE-2017-5754 (Meltdown) is mitigated in the system as tested and documented. Yes: The test sponsor attests, as of date of publication, that CVE-2017-5753 (Spectre variant 1) is mitigated in the system as tested and documented. Yes: The test sponsor attests, as of date of publication, that CVE-2017-5715 (Spectre variant 2) is mitigated in the system as tested and documented. Yes: The test sponsor attests, as of date of publication, that CVE-2018-3640 (Spectre variant 3a) is mitigated in the system as tested and documented. Yes: The test sponsor attests, as of date of publication, that CVE-2018-3639 (Spectre variant 4) is mitigated in the system as tested and documented. Platform Notes -------------- BIOS configuration: Choose Operating Mode set to Maximum Performance Choose Operating Mode set to Custom Mode MONITOR/MWAIT set to Enable SNC set to Enable Patrol Scrub set to Disable Stale AtoS set to Enable LLC dead line alloc set to Disable Sysinfo program /home/cpu2017-1.0.5-ic19/bin/sysinfo Rev: r5974 of 2018-05-19 9bcde8f2999c33d61f64985e45859ea9 running on sles12sp4 Wed May 1 04:40:27 2019 SUT (System Under Test) info as seen by some common utilities. For more information on this section, see https://www.spec.org/cpu2017/Docs/config.html#sysinfo From /proc/cpuinfo model name : Intel(R) Xeon(R) Platinum 8270 CPU @ 2.70GHz 8 "physical id"s (chips) 416 "processors" cores, siblings (Caution: counting these is hw and system dependent. The following excerpts from /proc/cpuinfo might not be reliable. Use with caution.) cpu cores : 26 siblings : 52 physical 0: cores 0 1 2 3 4 5 6 8 9 10 11 12 13 16 17 18 19 20 21 22 24 25 26 27 28 29 physical 1: cores 0 1 2 3 4 5 6 8 9 10 11 12 13 16 17 18 19 20 21 22 24 25 26 27 28 29 physical 2: cores 0 1 2 3 4 5 6 8 9 10 11 12 13 16 17 18 19 20 21 22 24 25 26 27 28 29 physical 3: cores 0 1 2 3 4 5 6 8 9 10 11 12 13 16 17 18 19 20 21 22 24 25 26 27 28 29 physical 4: cores 0 1 2 3 4 5 6 8 9 10 11 12 13 16 17 18 19 20 21 22 24 25 26 27 28 29 physical 5: cores 0 1 2 3 4 5 6 8 9 10 11 12 13 16 17 18 19 20 21 22 24 25 26 27 28 29 physical 6: cores 0 1 2 3 4 5 6 8 9 10 11 12 13 16 17 18 19 20 21 22 24 25 26 27 28 29 physical 7: cores 0 1 2 3 4 5 6 8 9 10 11 12 13 16 17 18 19 20 21 22 24 25 26 27 28 29 From lscpu: Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 416 On-line CPU(s) list: 0-415 Thread(s) per core: 2 Core(s) per socket: 26 Socket(s): 8 NUMA node(s): 16 Vendor ID: GenuineIntel CPU family: 6 Model: 85 Model name: Intel(R) Xeon(R) Platinum 8270 CPU @ 2.70GHz Stepping: 6 CPU MHz: 2700.000 CPU max MHz: 4000.0000 CPU min MHz: 1000.0000 BogoMIPS: 5400.00 Virtualization: VT-x L1d cache: 32K L1i cache: 32K L2 cache: 1024K L3 cache: 36608K NUMA node0 CPU(s): 0-3,7-9,13-15,20-22,208-211,215-217,221-223,228-230 NUMA node1 CPU(s): 4-6,10-12,16-19,23-25,212-214,218-220,224-227,231-233 NUMA node2 CPU(s): 26-29,33-35,39-41,46-48,234-237,241-243,247-249,254-256 NUMA node3 CPU(s): 30-32,36-38,42-45,49-51,238-240,244-246,250-253,257-259 NUMA node4 CPU(s): 52-55,59-61,65-67,72-74,260-263,267-269,273-275,280-282 NUMA node5 CPU(s): 56-58,62-64,68-71,75-77,264-266,270-272,276-279,283-285 NUMA node6 CPU(s): 78-81,85-87,91-93,98-100,286-289,293-295,299-301,306-308 NUMA node7 CPU(s): 82-84,88-90,94-97,101-103,290-292,296-298,302-305,309-311 NUMA node8 CPU(s): 104-107,111-113,117-119,124-126,312-315,319-321,325-327,332-334 NUMA node9 CPU(s): 108-110,114-116,120-123,127-129,316-318,322-324,328-331,335-337 NUMA node10 CPU(s): 130-133,137-139,143-145,150-152,338-341,345-347,351-353,358-360 NUMA node11 CPU(s): 134-136,140-142,146-149,153-155,342-344,348-350,354-357,361-363 NUMA node12 CPU(s): 156-159,163-165,169-171,176-178,364-367,371-373,377-379,384-386 NUMA node13 CPU(s): 160-162,166-168,172-175,179-181,368-370,374-376,380-383,387-389 NUMA node14 CPU(s): 182-185,189-191,195-197,202-204,390-393,397-399,403-405,410-412 NUMA node15 CPU(s): 186-188,192-194,198-201,205-207,394-396,400-402,406-409,413-415 Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb cat_l3 cdp_l3 invpcid_single ssbd mba ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm cqm mpx rdt_a avx512f avx512dq rdseed adx smap clflushopt clwb intel_pt avx512cd avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local dtherm ida arat pln pts pku ospke avx512_vnni flush_l1d arch_capabilities /proc/cpuinfo cache data cache size : 36608 KB From numactl --hardware WARNING: a numactl 'node' might or might not correspond to a physical chip. available: 16 nodes (0-15) node 0 cpus: 0 1 2 3 7 8 9 13 14 15 20 21 22 208 209 210 211 215 216 217 221 222 223 228 229 230 node 0 size: 193120 MB node 0 free: 192255 MB node 1 cpus: 4 5 6 10 11 12 16 17 18 19 23 24 25 212 213 214 218 219 220 224 225 226 227 231 232 233 node 1 size: 193530 MB node 1 free: 192795 MB node 2 cpus: 26 27 28 29 33 34 35 39 40 41 46 47 48 234 235 236 237 241 242 243 247 248 249 254 255 256 node 2 size: 193530 MB node 2 free: 192853 MB node 3 cpus: 30 31 32 36 37 38 42 43 44 45 49 50 51 238 239 240 244 245 246 250 251 252 253 257 258 259 node 3 size: 193530 MB node 3 free: 192851 MB node 4 cpus: 52 53 54 55 59 60 61 65 66 67 72 73 74 260 261 262 263 267 268 269 273 274 275 280 281 282 node 4 size: 193530 MB node 4 free: 176181 MB node 5 cpus: 56 57 58 62 63 64 68 69 70 71 75 76 77 264 265 266 270 271 272 276 277 278 279 283 284 285 node 5 size: 193530 MB node 5 free: 192855 MB node 6 cpus: 78 79 80 81 85 86 87 91 92 93 98 99 100 286 287 288 289 293 294 295 299 300 301 306 307 308 node 6 size: 193530 MB node 6 free: 192858 MB node 7 cpus: 82 83 84 88 89 90 94 95 96 97 101 102 103 290 291 292 296 297 298 302 303 304 305 309 310 311 node 7 size: 193530 MB node 7 free: 192859 MB node 8 cpus: 104 105 106 107 111 112 113 117 118 119 124 125 126 312 313 314 315 319 320 321 325 326 327 332 333 334 node 8 size: 193530 MB node 8 free: 192852 MB node 9 cpus: 108 109 110 114 115 116 120 121 122 123 127 128 129 316 317 318 322 323 324 328 329 330 331 335 336 337 node 9 size: 193530 MB node 9 free: 192854 MB node 10 cpus: 130 131 132 133 137 138 139 143 144 145 150 151 152 338 339 340 341 345 346 347 351 352 353 358 359 360 node 10 size: 193530 MB node 10 free: 192854 MB node 11 cpus: 134 135 136 140 141 142 146 147 148 149 153 154 155 342 343 344 348 349 350 354 355 356 357 361 362 363 node 11 size: 193501 MB node 11 free: 192829 MB node 12 cpus: 156 157 158 159 163 164 165 169 170 171 176 177 178 364 365 366 367 371 372 373 377 378 379 384 385 386 node 12 size: 193530 MB node 12 free: 192856 MB node 13 cpus: 160 161 162 166 167 168 172 173 174 175 179 180 181 368 369 370 374 375 376 380 381 382 383 387 388 389 node 13 size: 193530 MB node 13 free: 192860 MB node 14 cpus: 182 183 184 185 189 190 191 195 196 197 202 203 204 390 391 392 393 397 398 399 403 404 405 410 411 412 node 14 size: 193530 MB node 14 free: 192859 MB node 15 cpus: 186 187 188 192 193 194 198 199 200 201 205 206 207 394 395 396 400 401 402 406 407 408 409 413 414 415 node 15 size: 193527 MB node 15 free: 192859 MB node distances: node 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0: 10 11 21 21 31 31 21 21 21 21 31 31 31 31 31 31 1: 11 10 21 21 31 31 21 21 21 21 31 31 31 31 31 31 2: 21 21 10 11 21 21 31 31 31 31 21 21 31 31 31 31 3: 21 21 11 10 21 21 31 31 31 31 21 21 31 31 31 31 4: 31 31 21 21 10 11 21 21 31 31 31 31 21 21 31 31 5: 31 31 21 21 11 10 21 21 31 31 31 31 21 21 31 31 6: 21 21 31 31 21 21 10 11 31 31 31 31 31 31 21 21 7: 21 21 31 31 21 21 11 10 31 31 31 31 31 31 21 21 8: 21 21 31 31 31 31 31 31 10 11 21 21 21 21 31 31 9: 21 21 31 31 31 31 31 31 11 10 21 21 21 21 31 31 10: 31 31 21 21 31 31 31 31 21 21 10 11 31 31 21 21 11: 31 31 21 21 31 31 31 31 21 21 11 10 31 31 21 21 12: 31 31 31 31 21 21 31 31 21 21 31 31 10 11 21 21 13: 31 31 31 31 21 21 31 31 21 21 31 31 11 10 21 21 14: 31 31 31 31 31 31 21 21 31 31 21 21 21 21 10 11 15: 31 31 31 31 31 31 21 21 31 31 21 21 21 21 11 10 From /proc/meminfo MemTotal: 3170352592 kB HugePages_Total: 0 Hugepagesize: 2048 kB From /etc/*release* /etc/*version* SuSE-release: SUSE Linux Enterprise Server 12 (x86_64) VERSION = 12 PATCHLEVEL = 4 # This file is deprecated and will be removed in a future service pack or release. # Please check /etc/os-release for details about this release. os-release: NAME="SLES" VERSION="12-SP4" VERSION_ID="12.4" PRETTY_NAME="SUSE Linux Enterprise Server 12 SP4" ID="sles" ANSI_COLOR="0;32" CPE_NAME="cpe:/o:suse:sles:12:sp4" uname -a: Linux sles12sp4 4.12.14-94.41-default #1 SMP Wed Oct 31 12:25:04 UTC 2018 (3090901) x86_64 x86_64 x86_64 GNU/Linux Kernel self-reported vulnerability status: CVE-2017-5754 (Meltdown): Not affected CVE-2017-5753 (Spectre variant 1): Mitigation: __user pointer sanitization CVE-2017-5715 (Spectre variant 2): Mitigation: Indirect Branch Restricted Speculation, IBPB, IBRS_FW run-level 3 Apr 30 17:28 SPEC is set to: /home/cpu2017-1.0.5-ic19 Filesystem Type Size Used Avail Use% Mounted on tmpfs tmpfs 960G 11G 950G 2% /home Additional information from dmidecode follows. WARNING: Use caution when you interpret this section. The 'dmidecode' program reads system data which is "intended to allow hardware to be accurately determined", but the intent may not be met, as there are frequent changes to hardware, firmware, and the "DMTF SMBIOS" standard. BIOS Lenovo -[PSE121C-1.50]- 01/16/2019 Memory: 96x Samsung M393A4K40CB2-CVF 32 GB 2 rank 2933 (End of data from sysinfo program) Compiler Version Notes ---------------------- ============================================================================== CC 519.lbm_r(base) 538.imagick_r(base) 544.nab_r(base) ------------------------------------------------------------------------------ Intel(R) C Intel(R) 64 Compiler for applications running on Intel(R) 64, Version 19.0.0.117 Build 20180804 Copyright (C) 1985-2018 Intel Corporation. All rights reserved. ------------------------------------------------------------------------------ ============================================================================== CXXC 508.namd_r(base) 510.parest_r(base) ------------------------------------------------------------------------------ Intel(R) C++ Intel(R) 64 Compiler for applications running on Intel(R) 64, Version 19.0.0.117 Build 20180804 Copyright (C) 1985-2018 Intel Corporation. All rights reserved. ------------------------------------------------------------------------------ ============================================================================== CC 511.povray_r(base) 526.blender_r(base) ------------------------------------------------------------------------------ Intel(R) C++ Intel(R) 64 Compiler for applications running on Intel(R) 64, Version 19.0.0.117 Build 20180804 Copyright (C) 1985-2018 Intel Corporation. All rights reserved. Intel(R) C Intel(R) 64 Compiler for applications running on Intel(R) 64, Version 19.0.0.117 Build 20180804 Copyright (C) 1985-2018 Intel Corporation. All rights reserved. ------------------------------------------------------------------------------ ============================================================================== FC 507.cactuBSSN_r(base) ------------------------------------------------------------------------------ Intel(R) C++ Intel(R) 64 Compiler for applications running on Intel(R) 64, Version 19.0.0.117 Build 20180804 Copyright (C) 1985-2018 Intel Corporation. All rights reserved. Intel(R) C Intel(R) 64 Compiler for applications running on Intel(R) 64, Version 19.0.0.117 Build 20180804 Copyright (C) 1985-2018 Intel Corporation. All rights reserved. Intel(R) Fortran Intel(R) 64 Compiler for applications running on Intel(R) 64, Version 19.0.0.117 Build 20180804 Copyright (C) 1985-2018 Intel Corporation. All rights reserved. ------------------------------------------------------------------------------ ============================================================================== FC 503.bwaves_r(base) 549.fotonik3d_r(base) 554.roms_r(base) ------------------------------------------------------------------------------ Intel(R) Fortran Intel(R) 64 Compiler for applications running on Intel(R) 64, Version 19.0.0.117 Build 20180804 Copyright (C) 1985-2018 Intel Corporation. All rights reserved. ------------------------------------------------------------------------------ ============================================================================== CC 521.wrf_r(base) 527.cam4_r(base) ------------------------------------------------------------------------------ Intel(R) Fortran Intel(R) 64 Compiler for applications running on Intel(R) 64, Version 19.0.0.117 Build 20180804 Copyright (C) 1985-2018 Intel Corporation. All rights reserved. Intel(R) C Intel(R) 64 Compiler for applications running on Intel(R) 64, Version 19.0.0.117 Build 20180804 Copyright (C) 1985-2018 Intel Corporation. All rights reserved. ------------------------------------------------------------------------------ Base Compiler Invocation ------------------------ C benchmarks: icc -m64 -std=c11 C++ benchmarks: icpc -m64 Fortran benchmarks: ifort -m64 Benchmarks using both Fortran and C: ifort -m64 icc -m64 -std=c11 Benchmarks using both C and C++: icpc -m64 icc -m64 -std=c11 Benchmarks using Fortran, C, and C++: icpc -m64 icc -m64 -std=c11 ifort -m64 Base Portability Flags ---------------------- 503.bwaves_r: -DSPEC_LP64 507.cactuBSSN_r: -DSPEC_LP64 508.namd_r: -DSPEC_LP64 510.parest_r: -DSPEC_LP64 511.povray_r: -DSPEC_LP64 519.lbm_r: -DSPEC_LP64 521.wrf_r: -DSPEC_LP64 -DSPEC_CASE_FLAG -convert big_endian 526.blender_r: -DSPEC_LP64 -DSPEC_LINUX -funsigned-char 527.cam4_r: -DSPEC_LP64 -DSPEC_CASE_FLAG 538.imagick_r: -DSPEC_LP64 544.nab_r: -DSPEC_LP64 549.fotonik3d_r: -DSPEC_LP64 554.roms_r: -DSPEC_LP64 Base Optimization Flags ----------------------- C benchmarks: -xCORE-AVX512 -ipo -O3 -no-prec-div -qopt-prefetch -ffinite-math-only -qopt-mem-layout-trans=3 C++ benchmarks: -xCORE-AVX512 -ipo -O3 -no-prec-div -qopt-prefetch -ffinite-math-only -qopt-mem-layout-trans=3 Fortran benchmarks: -xCORE-AVX512 -ipo -O3 -no-prec-div -qopt-prefetch -ffinite-math-only -qopt-mem-layout-trans=3 -auto -nostandard-realloc-lhs -align array32byte Benchmarks using both Fortran and C: -xCORE-AVX512 -ipo -O3 -no-prec-div -qopt-prefetch -ffinite-math-only -qopt-mem-layout-trans=3 -auto -nostandard-realloc-lhs -align array32byte Benchmarks using both C and C++: -xCORE-AVX512 -ipo -O3 -no-prec-div -qopt-prefetch -ffinite-math-only -qopt-mem-layout-trans=3 Benchmarks using Fortran, C, and C++: -xCORE-AVX512 -ipo -O3 -no-prec-div -qopt-prefetch -ffinite-math-only -qopt-mem-layout-trans=3 -auto -nostandard-realloc-lhs -align array32byte The flags files that were used to format this result can be browsed at http://www.spec.org/cpu2017/flags/Intel-ic19.0-official-linux64.2019-01-15.html http://www.spec.org/cpu2017/flags/Lenovo-Platform-SPECcpu2017-Flags-V1.2-CLX-A.html You can also download the XML flags sources by saving the following links: http://www.spec.org/cpu2017/flags/Intel-ic19.0-official-linux64.2019-01-15.xml http://www.spec.org/cpu2017/flags/Lenovo-Platform-SPECcpu2017-Flags-V1.2-CLX-A.xml SPEC is a registered trademark of the Standard Performance Evaluation Corporation. All other brand and product names appearing in this result are trademarks or registered trademarks of their respective holders. ----------------------------------------------------------------------------------------------------- For questions about this result, please contact the tester. For other inquiries, please contact info@spec.org. Copyright 2017-2019 Standard Performance Evaluation Corporation Tested with SPEC CPU2017 v1.0.5 on 2019-04-30 16:40:27-0400. Report generated on 2019-05-29 15:47:08 by CPU2017 ASCII formatter v6067. Originally published on 2019-05-29.