SPEC(R) CPU2017 Floating Point Rate Result Lenovo Global Technology ThinkSystem SR950 (2.10 GHz, Intel Xeon Platinum 8170) CPU2017 License: 9017 Test date: Oct-2017 Test sponsor: Lenovo Global Technology Hardware availability: Sep-2017 Tested by: Lenovo Global Technology Software availability: Sep-2017 Base Base Base Peak Peak Peak Benchmarks Copies Run Time Rate Copies Run Time Rate --------------- ------- --------- --------- ------- --------- --------- 503.bwaves_r 208 2168 962 S 208 2171 961 S 503.bwaves_r 208 2171 961 S 208 2167 963 S 503.bwaves_r 208 2169 962 * 208 2167 962 * 507.cactuBSSN_r 208 617 427 * 208 624 422 * 507.cactuBSSN_r 208 618 426 S 208 624 422 S 507.cactuBSSN_r 208 616 428 S 208 623 422 S 508.namd_r 208 510 387 S 208 507 390 S 508.namd_r 208 512 386 S 208 509 388 S 508.namd_r 208 512 386 * 208 508 389 * 510.parest_r 208 2266 240 S 208 2294 237 S 510.parest_r 208 2287 238 * 208 2288 238 S 510.parest_r 208 2297 237 S 208 2292 237 * 511.povray_r 208 798 609 S 208 673 722 * 511.povray_r 208 795 611 * 208 671 724 S 511.povray_r 208 794 612 S 208 676 719 S 519.lbm_r 208 934 235 * 208 935 235 * 519.lbm_r 208 934 235 S 208 935 235 S 519.lbm_r 208 933 235 S 208 935 235 S 521.wrf_r 208 1100 424 S 208 1131 412 S 521.wrf_r 208 1114 418 S 208 1130 412 * 521.wrf_r 208 1109 420 * 208 1129 413 S 526.blender_r 208 590 537 * 208 585 541 S 526.blender_r 208 592 535 S 208 584 543 S 526.blender_r 208 589 538 S 208 584 542 * 527.cam4_r 208 733 496 S 208 725 502 S 527.cam4_r 208 734 495 S 208 722 504 S 527.cam4_r 208 734 496 * 208 722 504 * 538.imagick_r 208 643 805 S 208 644 803 S 538.imagick_r 208 643 804 S 208 644 804 * 538.imagick_r 208 643 804 * 208 643 804 S 544.nab_r 208 490 715 * 208 482 727 S 544.nab_r 208 488 717 S 208 482 726 S 544.nab_r 208 493 710 S 208 482 727 * 549.fotonik3d_r 208 2590 313 * 208 2590 313 S 549.fotonik3d_r 208 2590 313 S 208 2588 313 S 549.fotonik3d_r 208 2588 313 S 208 2589 313 * 554.roms_r 208 1578 209 S 208 1561 212 S 554.roms_r 208 1570 211 S 208 1561 212 * 554.roms_r 208 1577 210 * 208 1557 212 S ================================================================================= 503.bwaves_r 208 2169 962 * 208 2167 962 * 507.cactuBSSN_r 208 617 427 * 208 624 422 * 508.namd_r 208 512 386 * 208 508 389 * 510.parest_r 208 2287 238 * 208 2292 237 * 511.povray_r 208 795 611 * 208 673 722 * 519.lbm_r 208 934 235 * 208 935 235 * 521.wrf_r 208 1109 420 * 208 1130 412 * 526.blender_r 208 590 537 * 208 584 542 * 527.cam4_r 208 734 496 * 208 722 504 * 538.imagick_r 208 643 804 * 208 644 804 * 544.nab_r 208 490 715 * 208 482 727 * 549.fotonik3d_r 208 2590 313 * 208 2589 313 * 554.roms_r 208 1577 210 * 208 1561 212 * SPECrate2017_fp_base 439 SPECrate2017_fp_peak 446 HARDWARE -------- CPU Name: Intel Xeon Platinum 8170 Max MHz.: 3700 Nominal: 2100 Enabled: 104 cores, 4 chips, 2 threads/core Orderable: 2,4 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: 1536 GB (48 x 32 GB 2Rx4 PC4-2666V-R) Storage: 800 GB tmpfs Other: None SOFTWARE -------- OS: SUSE Linux Enterprise Server 12 SP2 (x86_64) Kernel 4.4.21-69-default Compiler: C/C++: Version 18.0.0.128 of Intel C/C++ Compiler for Linux; Fortran: Version 18.0.0.128 of Intel Fortran Compiler for Linux Parallel: No Firmware: Lenovo BIOS Version PSE105X 1.00 released Aug-2017 File System: tmpfs System State: Run level 3 (multi-user) Base Pointers: 64-bit Peak Pointers: 64-bit 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=800g 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 echo 0 > /proc/sys/kernel/numa_balancing General Notes ------------- Environment variables set by runcpu before the start of the run: LD_LIBRARY_PATH = "/home/cpu2017.1.0.2.ic18.0/lib/ia32:/home/cpu2017.1.0.2.ic18.0/lib/intel64" LD_LIBRARY_PATH = "$LD_LIBRARY_PATH:/home/cpu2017.1.0.2.ic18.0/je5.0.1-32:/home/cpu2017.1.0.2.ic18.0/je5.0.1-64" OMP_STACKSIZE = "192M" Binaries compiled on a system with 1x Intel Core i7-4790 CPU + 32GB RAM memory using Redhat Enterprise Linux 7.4 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 Platform Notes -------------- BIOS configuration: Choose Operating Mode set to Maximum Performance SNC set to Enable Hardware Prefetcher set to Disable MONITORMWAIT set to Enable Execute Disable Bit set to Disable Intel Virtualization Technology set to Disable DCA set to Enable XPT Prefetcher set to Enable Sysinfo program /home/cpu2017.1.0.2.ic18.0/bin/sysinfo Rev: r5797 of 2017-06-14 96c45e4568ad54c135fd618bcc091c0f running on Proton4S-SUSE12SP2 Sat Oct 21 06:28:40 2017 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 8170 CPU @ 2.10GHz 4 "physical id"s (chips) 208 "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 From lscpu: Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 208 On-line CPU(s) list: 0-207 Thread(s) per core: 2 Core(s) per socket: 26 Socket(s): 4 NUMA node(s): 8 Vendor ID: GenuineIntel CPU family: 6 Model: 85 Model name: Intel(R) Xeon(R) Platinum 8170 CPU @ 2.10GHz Stepping: 4 CPU MHz: 2095.078 BogoMIPS: 4190.15 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,104-107,111-113,117-119,124-126 NUMA node1 CPU(s): 4-6,10-12,16-19,23-25,108-110,114-116,120-123,127-129 NUMA node2 CPU(s): 26-29,33-35,39-41,46-48,130-133,137-139,143-145,150-152 NUMA node3 CPU(s): 30-32,36-38,42-45,49-51,134-136,140-142,146-149,153-155 NUMA node4 CPU(s): 52-55,59-61,65-67,72-74,156-159,163-165,169-171,176-178 NUMA node5 CPU(s): 56-58,62-64,68-71,75-77,160-162,166-168,172-175,179-181 NUMA node6 CPU(s): 78-81,85-87,91-93,98-100,182-185,189-191,195-197,202-204 NUMA node7 CPU(s): 82-84,88-90,94-97,101-103,186-188,192-194,198-201,205-207 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 aperfmperf eagerfpu 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 ida arat epb pln pts dtherm intel_pt tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm cqm mpx avx512f avx512dq rdseed adx smap clflushopt clwb avx512cd avx512bw avx512vl xsaveopt xsavec xgetbv1 cqm_llc cqm_occup_llc /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: 8 nodes (0-7) node 0 cpus: 0 1 2 3 7 8 9 13 14 15 20 21 22 104 105 106 107 111 112 113 117 118 119 124 125 126 node 0 size: 192978 MB node 0 free: 192367 MB node 1 cpus: 4 5 6 10 11 12 16 17 18 19 23 24 25 108 109 110 114 115 116 120 121 122 123 127 128 129 node 1 size: 193521 MB node 1 free: 192918 MB node 2 cpus: 26 27 28 29 33 34 35 39 40 41 46 47 48 130 131 132 133 137 138 139 143 144 145 150 151 152 node 2 size: 193521 MB node 2 free: 192566 MB node 3 cpus: 30 31 32 36 37 38 42 43 44 45 49 50 51 134 135 136 140 141 142 146 147 148 149 153 154 155 node 3 size: 193521 MB node 3 free: 192972 MB node 4 cpus: 52 53 54 55 59 60 61 65 66 67 72 73 74 156 157 158 159 163 164 165 169 170 171 176 177 178 node 4 size: 193521 MB node 4 free: 187967 MB node 5 cpus: 56 57 58 62 63 64 68 69 70 71 75 76 77 160 161 162 166 167 168 172 173 174 175 179 180 181 node 5 size: 193521 MB node 5 free: 192988 MB node 6 cpus: 78 79 80 81 85 86 87 91 92 93 98 99 100 182 183 184 185 189 190 191 195 196 197 202 203 204 node 6 size: 193521 MB node 6 free: 192894 MB node 7 cpus: 82 83 84 88 89 90 94 95 96 97 101 102 103 186 187 188 192 193 194 198 199 200 201 205 206 207 node 7 size: 193516 MB node 7 free: 184475 MB node distances: node 0 1 2 3 4 5 6 7 0: 10 11 21 21 21 21 21 21 1: 11 10 21 21 21 21 21 21 2: 21 21 10 11 21 21 21 21 3: 21 21 11 10 21 21 21 21 4: 21 21 21 21 10 11 21 21 5: 21 21 21 21 11 10 21 21 6: 21 21 21 21 21 21 10 11 7: 21 21 21 21 21 21 11 10 From /proc/meminfo MemTotal: 1584765780 kB HugePages_Total: 0 Hugepagesize: 2048 kB From /etc/*release* /etc/*version* SuSE-release: SUSE Linux Enterprise Server 12 (x86_64) VERSION = 12 PATCHLEVEL = 2 # 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-SP2" VERSION_ID="12.2" PRETTY_NAME="SUSE Linux Enterprise Server 12 SP2" ID="sles" ANSI_COLOR="0;32" CPE_NAME="cpe:/o:suse:sles:12:sp2" uname -a: Linux Proton4S-SUSE12SP2 4.4.21-69-default #1 SMP Tue Oct 25 10:58:20 UTC 2016 (9464f67) x86_64 x86_64 x86_64 GNU/Linux run-level 3 Oct 21 06:23 SPEC is set to: /home/cpu2017.1.0.2.ic18.0 Filesystem Type Size Used Avail Use% Mounted on tmpfs tmpfs 800G 11G 790G 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 -[PSE105X-1.00]- 08/17/2017 Memory: 48x NO DIMM NO DIMM 48x Samsung M393A4K40BB2-CTD 32 GB 2 rank 2666 (End of data from sysinfo program) Compiler Version Notes ---------------------- ============================================================================== CC 519.lbm_r(base) 538.imagick_r(base, peak) 544.nab_r(base) ------------------------------------------------------------------------------ icc (ICC) 18.0.0 20170811 Copyright (C) 1985-2017 Intel Corporation. All rights reserved. ------------------------------------------------------------------------------ ============================================================================== CC 519.lbm_r(peak) 544.nab_r(peak) ------------------------------------------------------------------------------ icc (ICC) 18.0.0 20170811 Copyright (C) 1985-2017 Intel Corporation. All rights reserved. ------------------------------------------------------------------------------ ============================================================================== CXXC 508.namd_r(base) 510.parest_r(base) ------------------------------------------------------------------------------ icpc (ICC) 18.0.0 20170811 Copyright (C) 1985-2017 Intel Corporation. All rights reserved. ------------------------------------------------------------------------------ ============================================================================== CXXC 508.namd_r(peak) 510.parest_r(peak) ------------------------------------------------------------------------------ icpc (ICC) 18.0.0 20170811 Copyright (C) 1985-2017 Intel Corporation. All rights reserved. ------------------------------------------------------------------------------ ============================================================================== CC 511.povray_r(base) 526.blender_r(base) ------------------------------------------------------------------------------ icpc (ICC) 18.0.0 20170811 Copyright (C) 1985-2017 Intel Corporation. All rights reserved. icc (ICC) 18.0.0 20170811 Copyright (C) 1985-2017 Intel Corporation. All rights reserved. ------------------------------------------------------------------------------ ============================================================================== CC 511.povray_r(peak) 526.blender_r(peak) ------------------------------------------------------------------------------ icpc (ICC) 18.0.0 20170811 Copyright (C) 1985-2017 Intel Corporation. All rights reserved. icc (ICC) 18.0.0 20170811 Copyright (C) 1985-2017 Intel Corporation. All rights reserved. ------------------------------------------------------------------------------ ============================================================================== FC 507.cactuBSSN_r(base) ------------------------------------------------------------------------------ icpc (ICC) 18.0.0 20170811 Copyright (C) 1985-2017 Intel Corporation. All rights reserved. icc (ICC) 18.0.0 20170811 Copyright (C) 1985-2017 Intel Corporation. All rights reserved. ifort (IFORT) 18.0.0 20170811 Copyright (C) 1985-2017 Intel Corporation. All rights reserved. ------------------------------------------------------------------------------ ============================================================================== FC 507.cactuBSSN_r(peak) ------------------------------------------------------------------------------ icpc (ICC) 18.0.0 20170811 Copyright (C) 1985-2017 Intel Corporation. All rights reserved. icc (ICC) 18.0.0 20170811 Copyright (C) 1985-2017 Intel Corporation. All rights reserved. ifort (IFORT) 18.0.0 20170811 Copyright (C) 1985-2017 Intel Corporation. All rights reserved. ------------------------------------------------------------------------------ ============================================================================== FC 503.bwaves_r(base, peak) 549.fotonik3d_r(base, peak) 554.roms_r(base) ------------------------------------------------------------------------------ ifort (IFORT) 18.0.0 20170811 Copyright (C) 1985-2017 Intel Corporation. All rights reserved. ------------------------------------------------------------------------------ ============================================================================== FC 554.roms_r(peak) ------------------------------------------------------------------------------ ifort (IFORT) 18.0.0 20170811 Copyright (C) 1985-2017 Intel Corporation. All rights reserved. ------------------------------------------------------------------------------ ============================================================================== CC 521.wrf_r(base) 527.cam4_r(base) ------------------------------------------------------------------------------ ifort (IFORT) 18.0.0 20170811 Copyright (C) 1985-2017 Intel Corporation. All rights reserved. icc (ICC) 18.0.0 20170811 Copyright (C) 1985-2017 Intel Corporation. All rights reserved. ------------------------------------------------------------------------------ ============================================================================== CC 521.wrf_r(peak) 527.cam4_r(peak) ------------------------------------------------------------------------------ ifort (IFORT) 18.0.0 20170811 Copyright (C) 1985-2017 Intel Corporation. All rights reserved. icc (ICC) 18.0.0 20170811 Copyright (C) 1985-2017 Intel Corporation. All rights reserved. ------------------------------------------------------------------------------ Base Compiler Invocation ------------------------ C benchmarks: icc C++ benchmarks: icpc Fortran benchmarks: ifort Benchmarks using both Fortran and C: ifort icc Benchmarks using both C and C++: icpc icc Benchmarks using Fortran, C, and C++: icpc icc ifort 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-AVX2 -ipo -O3 -no-prec-div -qopt-prefetch -ffinite-math-only -qopt-mem-layout-trans=3 C++ benchmarks: -xCORE-AVX2 -ipo -O3 -no-prec-div -qopt-prefetch -ffinite-math-only -qopt-mem-layout-trans=3 Fortran benchmarks: -xCORE-AVX2 -ipo -O3 -no-prec-div -qopt-prefetch -ffinite-math-only -qopt-mem-layout-trans=3 -nostandard-realloc-lhs -align array32byte Benchmarks using both Fortran and C: -xCORE-AVX2 -ipo -O3 -no-prec-div -qopt-prefetch -ffinite-math-only -qopt-mem-layout-trans=3 -nostandard-realloc-lhs -align array32byte Benchmarks using both C and C++: -xCORE-AVX2 -ipo -O3 -no-prec-div -qopt-prefetch -ffinite-math-only -qopt-mem-layout-trans=3 Benchmarks using Fortran, C, and C++: -xCORE-AVX2 -ipo -O3 -no-prec-div -qopt-prefetch -ffinite-math-only -qopt-mem-layout-trans=3 -nostandard-realloc-lhs -align array32byte Base Other Flags ---------------- C benchmarks: -m64 -std=c11 C++ benchmarks: -m64 Fortran benchmarks: -m64 Benchmarks using both Fortran and C: -m64 -std=c11 Benchmarks using both C and C++: -m64 -std=c11 Benchmarks using Fortran, C, and C++: -m64 -std=c11 Peak Compiler Invocation ------------------------ C benchmarks: icc C++ benchmarks: icpc Fortran benchmarks: ifort Benchmarks using both Fortran and C: ifort icc Benchmarks using both C and C++: icpc icc Benchmarks using Fortran, C, and C++: icpc icc ifort Peak Portability Flags ---------------------- Same as Base Portability Flags Peak Optimization Flags ----------------------- C benchmarks: 519.lbm_r: -prof-gen(pass 1) -prof-use(pass 2) -ipo -xCORE-AVX2 -O3 -no-prec-div -qopt-prefetch -ffinite-math-only -qopt-mem-layout-trans=3 538.imagick_r: -xCORE-AVX2 -ipo -O3 -no-prec-div -qopt-prefetch -ffinite-math-only -qopt-mem-layout-trans=3 544.nab_r: Same as 519.lbm_r C++ benchmarks: -prof-gen(pass 1) -prof-use(pass 2) -ipo -xCORE-AVX2 -O3 -no-prec-div -qopt-prefetch -ffinite-math-only -qopt-mem-layout-trans=3 Fortran benchmarks: 503.bwaves_r: -xCORE-AVX2 -ipo -O3 -no-prec-div -qopt-prefetch -ffinite-math-only -qopt-mem-layout-trans=3 -nostandard-realloc-lhs -align array32byte 549.fotonik3d_r: Same as 503.bwaves_r 554.roms_r: -prof-gen(pass 1) -prof-use(pass 2) -ipo -xCORE-AVX2 -O3 -no-prec-div -qopt-prefetch -ffinite-math-only -qopt-mem-layout-trans=3 -nostandard-realloc-lhs -align array32byte Benchmarks using both Fortran and C: -prof-gen(pass 1) -prof-use(pass 2) -ipo -xCORE-AVX2 -O3 -no-prec-div -qopt-prefetch -ffinite-math-only -qopt-mem-layout-trans=3 -nostandard-realloc-lhs -align array32byte Benchmarks using both C and C++: -prof-gen(pass 1) -prof-use(pass 2) -ipo -xCORE-AVX2 -O3 -no-prec-div -qopt-prefetch -ffinite-math-only -qopt-mem-layout-trans=3 Benchmarks using Fortran, C, and C++: -prof-gen(pass 1) -prof-use(pass 2) -ipo -xCORE-AVX2 -O3 -no-prec-div -qopt-prefetch -ffinite-math-only -qopt-mem-layout-trans=3 -nostandard-realloc-lhs -align array32byte Peak Other Flags ---------------- C benchmarks: -m64 -std=c11 C++ benchmarks: -m64 Fortran benchmarks: -m64 Benchmarks using both Fortran and C: -m64 -std=c11 Benchmarks using both C and C++: -m64 -std=c11 Benchmarks using Fortran, C, and C++: -m64 -std=c11 The flags files that were used to format this result can be browsed at http://www.spec.org/cpu2017/flags/Intel-ic18.0-official-linux64.html http://www.spec.org/cpu2017/flags/Lenovo-Platform-Flags-V1.2-SKL-E.html You can also download the XML flags sources by saving the following links: http://www.spec.org/cpu2017/flags/Intel-ic18.0-official-linux64.xml http://www.spec.org/cpu2017/flags/Lenovo-Platform-Flags-V1.2-SKL-E.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-2018 Standard Performance Evaluation Corporation Tested with SPEC CPU2017 v1.0.2 on 2017-10-20 18:28:40-0400. Report generated on 2018-10-31 14:49:43 by CPU2017 ASCII formatter v6067. Originally published on 2017-11-22.