CPU2017 Flag Description
Compal Electronics, Inc. SR224-2A AMD EPYC 9755

Test sponsored by Compal Inc.

Compilers: AMD Optimizing C/C++ Compiler Suite


Base Compiler Invocation

C benchmarks

Fortran benchmarks

Benchmarks using both Fortran and C

Benchmarks using Fortran, C, and C++


Peak Compiler Invocation

C benchmarks

Fortran benchmarks

Benchmarks using both Fortran and C

Benchmarks using Fortran, C, and C++


Base Portability Flags

603.bwaves_s

607.cactuBSSN_s

619.lbm_s

621.wrf_s

627.cam4_s

628.pop2_s

638.imagick_s

644.nab_s

649.fotonik3d_s

654.roms_s


Peak Portability Flags

603.bwaves_s

607.cactuBSSN_s

619.lbm_s

621.wrf_s

627.cam4_s

628.pop2_s

638.imagick_s

644.nab_s

649.fotonik3d_s

654.roms_s


Base Optimization Flags

C benchmarks

Fortran benchmarks

Benchmarks using both Fortran and C

Benchmarks using Fortran, C, and C++


Peak Optimization Flags

C benchmarks

619.lbm_s

638.imagick_s

644.nab_s

Fortran benchmarks

603.bwaves_s

649.fotonik3d_s

654.roms_s

Benchmarks using both Fortran and C

621.wrf_s

627.cam4_s

628.pop2_s

Benchmarks using Fortran, C, and C++


Base Other Flags

C benchmarks

Fortran benchmarks

Benchmarks using both Fortran and C

Benchmarks using Fortran, C, and C++


Peak Other Flags

C benchmarks

Fortran benchmarks

Benchmarks using both Fortran and C

Benchmarks using Fortran, C, and C++


Implicitly Included Flags

This section contains descriptions of flags that were included implicitly by other flags, but which do not have a permanent home at SPEC.


Commands and Options Used to Submit Benchmark Runs

Using numactl to bind processes and memory to cores

For multi-copy runs or single copy runs on systems with multiple sockets, it is advantageous to bind a process to a particular core. Otherwise, the OS may arbitrarily move your process from one core to another. This can affect performance. To help, SPEC allows the use of a "submit" command where users can specify a utility to use to bind processes. We have found the utility 'numactl' to be the best choice.

numactl runs processes with a specific NUMA scheduling or memory placement policy. The policy is set for a command and inherited by all of its children. The numactl flag "--physcpubind" specifies which core(s) to bind the process. "-l" instructs numactl to keep a process's memory on the local node while "-m" specifies which node(s) to place a process's memory. For full details on using numactl, please refer to your Linux documentation, 'man numactl'

Note that some older versions of numactl incorrectly interpret application arguments as its own. For example, with the command "numactl --physcpubind=0 -l a.out -m a", numactl will interpret a.out's "-m" option as its own "-m" option. To work around this problem, we put the command to be run in a shell script and then run the shell script using numactl. For example: "echo 'a.out -m a' > run.sh ; numactl --physcpubind=0 bash run.sh"


Shell, Environment, and Other Software Settings

numactl --interleave=all runcpu

numactl --interleave=all runcpu executes the SPEC CPU command runcpu so that memory is consumed across NUMA nodes rather than consumed from a single node. This helps prevent local node out-of-memory conditions which can occur when runcpu is executed without interleaving. For full details on using numactl, please refer to your Linux documentation, 'man numactl'

Transparent Huge Pages (THP)

THP is an abstraction layer that automates most aspects of creating, managing, and using huge pages. It is designed to hide much of the complexity in using huge pages from system administrators and developers. Huge pages increase the memory page size from 4 kilobytes to 2 megabytes. This provides significant performance advantages on systems with highly contended resources and large memory workloads. If memory utilization is too high or memory is badly fragmented which prevents huge pages being allocated, the kernel will assign smaller 4k pages instead. Most recent Linux OS releases have THP enabled by default.

THP usage is controlled by the sysfs setting /sys/kernel/mm/transparent_hugepage/enabled. Possible values:

The SPEC CPU benchmark codes themselves never explicitly request huge pages, as the mechanism to do that is OS-specific and can change over time. Libraries such as amdalloc which are used by the benchmarks may explicitly request huge pages, and use of such libraries can make the "madvise" setting relevant and useful.

When no huge pages are immediately available and one is requested, how the system handles the request for THP creation is controlled by the sysfs setting /sys/kernel/mm/transparent_hugepage/defrag. Possible values:

An application that "always" requests THP often can benefit from waiting for an allocation until those huge pages can be assembled.
For more information see the Linux transparent hugepage documentation.

ulimit -s <n>

Sets the stack size to n kbytes, or unlimited to allow the stack size to grow without limit.

ulimit -l <n>

Sets the maximum size of memory that may be locked into physical memory.

powersave -f (on SuSE)

Makes the powersave daemon set the CPUs to the highest supported frequency.

/etc/init.d/cpuspeed stop (on Red Hat)

Disables the cpu frequency scaling program in order to set the CPUs to the highest supported frequency.

LD_LIBRARY_PATH

An environment variable that indicates the location in the filesystem of bundled libraries to use when running the benchmark binaries.

LIBOMP_NUM_HIDDEN_HELPER_THREADS

target nowait is supported via hidden helper task, which is a task not bound to any parallel region. A hidden helper team with a number of threads is created when the first hidden helper task is encountered.

The number of threads can be configured via the environment variable LIBOMP_NUM_HIDDEN_HELPER_THREADS. The default is 8. If LIBOMP_NUM_HIDDEN_HELPER_THREADS is 0, the hidden helper task is disabled and support falls back to a regular OpenMP task. The hidden helper task can also be disabled by setting the environment variable LIBOMP_USE_HIDDEN_HELPER_TASK=OFF.

sysctl -w vm.dirty_ratio=8

Limits dirty cache to 8% of memory.

sysctl -w vm.swappiness=1

Limits swap usage to minimum necessary.

sysctl -w vm.zone_reclaim_mode=1

Frees local node memory first to avoid remote memory usage.

kernel/numa_balancing

This OS setting controls automatic NUMA balancing on memory mapping and process placement. NUMA balancing incurs overhead for no benefit on workloads that are already bound to NUMA nodes.

Possible settings:

For more information see the numa_balancing entry in the Linux sysctl documentation.

kernel/randomize_va_space (ASLR)

This setting can be used to select the type of process address space randomization. Defaults differ based on whether the architecture supports ASLR, whether the kernel was built with the CONFIG_COMPAT_BRK option or not, or the kernel boot options used.

Possible settings:

Disabling ASLR can make process execution more deterministic and runtimes more consistent. For more information see the randomize_va_space entry in the Linux sysctl documentation.

vm/drop_caches

The two commands are equivalent: echo 3> /proc/sys/vm/drop_caches and sysctl -w vm.drop_caches=3 Both must be run as root. The commands are used to free up the filesystem page cache, dentries, and inodes.

Possible settings:

MALLOC_CONF

The amdalloc library is a variant of jemalloc library. The amdalloc library has tunable parameters, many of which may be changed at run-time via several mechanisms, one of which is the MALLOC_CONF environment variable. Other methods, as well as the order in which they're referenced, are detailed in the jemalloc documentation's TUNING section.

The options that can be tuned at run-time are everything in the jemalloc documentation's MALLCTL NAMESPACE section that begins with "opt.".

The options that may be encountered in SPEC CPU 2017 results are detailed here:

PGHPF_ZMEM

An environment variable used to initialize the allocated memory. Setting PGHPF_ZMEM to "Yes" has the effect of initializing all allocated memory to zero.

GOMP_CPU_AFFINITY

This environment variable is used to set the thread affinity for threads spawned by OpenMP.

OMP_DYNAMIC

This environment variable is defined as part of the OpenMP standard. Setting it to "false" prevents the OpenMP runtime from dynamically adjusting the number of threads to use for parallel execution.

For more information, see chapter 4 ("Environment Variables") in the OpenMP 4.5 Specification.

OMP_SCHEDULE

This environment variable is defined as part of the OpenMP standard. Setting it to "static" causes loop iterations to be assigned to threads in round-robin fashion in the order of the thread number.

For more information, see chapter 4 ("Environment Variables") in the OpenMP 4.5 Specification.

OMP_STACKSIZE

This environment variable is defined as part of the OpenMP standard and controls the size of the stack for threads created by OpenMP.

For more information, see chapter 4 ("Environment Variables") in the OpenMP 4.5 Specification.

OMP_THREAD_LIMIT

This environment variable is defined as part of the OpenMP standard and limits the maximum number of OpenMP threads that can be created.

For more information, see chapter 4 ("Environment Variables") in the OpenMP 4.5 Specification.


Operating System Tuning Parameters

OS Tuning

ulimit:

is a command used to set or check user limits on system resources such as memory, CPU, and the number of open files. Below are common usages of ulimit:

irqbalance:

irqbalance is a Linux background service that distributes hardware interrupts across multiple CPU cores to prevent overloading a single core and improve system performance.

Performance Governors (Linux):

Performance governors are part of Linux's CPU frequency scaling mechanisms, used to determine how the CPU frequency should be managed. Simply put, they control "how fast the CPU should run under different conditions." Common CPU governors include:

--governor, -g:

When set to performance, the CPU will always operate at its maximum frequency to deliver the highest computing performance. This will improve overall system performance.

Many companies execute the following command when conducting system performance testing to ensure that the CPU operates at its maximum frequency:

tuned-adm:

is a command-line tool used to manage performance tuning settings on Linux systems. It allows users to select predefined tuning profiles that automatically adjust CPU, power saving, I/O, and network parameters according to the system’s intended usage, optimizing either performance or energy efficiency. The following four are the most commonly used profiles:

drop_caches:

To clear the Linux filesystem cache during testing or prior to benchmarking, the following command is used:


Firmware / BIOS / Microcode Settings

SMT Control (Default = Auto):

SMT Control is a setting that enables or disables Simultaneous Multithreading (SMT), allowing each CPU core to execute one or more threads concurrently to improve multitasking performance or ensure thread isolation. Values for this BIOS option can be:

Power Profile Selection (Default = Efficiency Mode):

This setting controls how the system balances power efficiency and performance across CPU, memory, and I/O subsystems. Values for this BIOS option can be:

Performance Mode (Default = Balance):

Performance Mode forces the system to operate at its highest performance level, sacrificing power efficiency for maximum speed. Values for this BIOS option can be:

ASPM Control (Default = Auto):

ASPM (Active State Power Management) is a PCI Express power-saving feature that reduces power consumption by placing links into lower power states when idle. Values for this BIOS option can be:

CPPC (Default = Auto):

CPPC (Collaborative Processor Performance Control) allows the OS and processor to work together to optimize performance and power efficiency by selecting appropriate performance levels dynamically. Values for this BIOS option can be:

Memory Interleaving (Default = Auto):

Allows for disabling memory interleaving. Note that NUMA nodes per socket will be honored regardless of this setting. Values for this BIOS option can be:

SVM Mode (Default = Enable):

SVM (Secure Virtual Machine) Mode is a BIOS setting that enables or disables hardware-assisted virtualization on AMD processors. When enabled, it allows the use of virtualization technologies such as AMD-V, which are required by hypervisors (e.g., VMware, Hyper-V, KVM) to run virtual machines with hardware-level isolation and improved performance. Values for this BIOS option can be:

SR-IOV Support (Default = Enabled):

SR-IOV (Single Root I/O Virtualization) is a hardware-assisted virtualization technology that allows a single physical PCIe device (such as a network interface card) to present multiple virtual functions (VFs) to the operating system or hypervisor. This enables more efficient and direct access to hardware for virtual machines, reducing I/O overhead and improving performance in virtualized environments. Values for this BIOS option can be:

SEV Control (Default = Enabled):

SEV (Secure Encrypted Virtualization) is an AMD security technology that encrypts the memory of virtual machines, protecting guest data from being accessed or tampered with by the hypervisor or other VMs. It enhances data confidentiality in cloud or multi-tenant environments by isolating VMs at the hardware level. Values for this BIOS option can be:

BoostFmaxEn (Default = Auto):

BoostFmaxEn determines whether the CPU's maximum frequency (Fmax) is set automatically by the system or manually by the user. Values for this BIOS option can be:

BoostFmax (Default = 0):

BoostFmax defines the maximum frequency (in MHz) the CPU is allowed to reach when frequency boosting is enabled.

Determinism Control (Default = Auto):

Determinism Control is a BIOS setting used on AMD EPYC processors to influence how the system behaves in terms of frequency and performance consistency across cores and sockets. It ensures predictable performance, which is especially useful in multi-socket or multi-node systems where workloads must remain consistent across processors. Values for this BIOS option can be:

Determinism Enable (Default = Power):

Determinism Enable is a setting that determines whether a system prioritizes consistent power behavior or peak performance when determinism is manually controlled. It works in conjunction with the Determinism Control setting to fine-tune system response across cores and sockets. Values for this BIOS option can be:

TDP Control (Default = Auto):

TDP Control determines how the processor’s Thermal Design Power (TDP) is managed — either automatically by the system or manually by user-defined limits. This setting affects CPU power consumption and thermal behavior. Values for this BIOS option can be:

TDP (Default = 0):

TDP (Thermal Design Power) sets a power consumption target for the CPU in watts, helping manage thermal output and power limits during operation — especially relevant when TDP Control is set to Manual.

PPT Control (Default = Auto):

PPT Control (Package Power Tracking Control) determines whether the maximum allowable CPU package power (PPT limit) is automatically set by the system or manually defined by the user to control CPU power usage. Values for this BIOS option can be:

PPT (Default = 0):

PPT defines the upper limit of total power consumption (in watts) for the CPU package, including cores, cache, and SoC components, to ensure thermal and electrical safety.

ACPI CST C2 Latency (Default = 100):

ACPI CST C2 Latency defines the response time (in microseconds) for the processor to exit the C2 low-power state and return to full operation. This setting influences how quickly the CPU can resume tasks after being in power-saving mode.

Memory Target Speed (Default = Auto):

Memory Target Speed sets the desired memory (DRAM) operating frequency for the system, affecting overall memory bandwidth and latency performance. Values for this BIOS option can be:

NUMA Nodes Per Socket (Default = Auto):

NUMA Nodes Per Socket (NPS) determines how many NUMA (Non-Uniform Memory Access) domains are created per CPU socket, impacting memory locality, bandwidth, and latency for multi-threaded workloads. Values for this BIOS option can be:

DRAM Scrub Time (Default = 24hr):

DRAM Scrub Time defines the periodic interval for background memory error correction (memory scrubbing), which helps detect and repair soft errors (bit flips) in DRAM to improve system reliability. Values for this BIOS option can be:

L1 Stride Prefetcher (Default = Auto):

L1 Stride Prefetcher is a processor feature that attempts to pre-load data into the L1 cache by predicting memory access patterns with regular strides, helping improve performance by reducing cache miss latency. Values for this BIOS option can be:

APBDIS (Default = 0):

APBDIS (Application Power Brake Disable) is a BIOS setting that controls whether the CPU’s internal power throttling feature (Application Power Brake, APB) is enabled or disabled. APB dynamically reduces performance under certain conditions to meet power or thermal constraints. Values for this BIOS option can be:

ACPI SRAT L3 Cache As NUMA Domain (Default = Auto):

This BIOS setting defines whether each L3 cache segment is treated as a separate NUMA (Non-Uniform Memory Access) domain by reporting it in the ACPI SRAT (System Resource Affinity Table). This can affect how the OS and applications schedule memory and threads. Values for this BIOS option can be:

Last updated Aug 8, 2025.


Flag description origin markings:

[user] Indicates that the flag description came from the user flags file.
[suite] Indicates that the flag description came from the suite-wide flags file.
[benchmark] Indicates that the flag description came from a per-benchmark flags file.

The flags files that were used to format this result can be browsed at
http://www.spec.org/cpu2017/flags/aocc500-flags.2024-10-10.html,
http://www.spec.org/cpu2017/flags/Compal-Platform-Flags-Linux-AMD_V1.1.html.

You can also download the XML flags sources by saving the following links:
http://www.spec.org/cpu2017/flags/aocc500-flags.2024-10-10.xml,
http://www.spec.org/cpu2017/flags/Compal-Platform-Flags-Linux-AMD_V1.1.xml.


For questions about the meanings of these flags, please contact the tester.
For other inquiries, please contact info@spec.org
Copyright 2017-2025 Standard Performance Evaluation Corporation
Tested with SPEC CPU2017 v1.1.9.
Report generated on 2025-08-12 15:47:46 by SPEC CPU2017 flags formatter v5178.