Non game harness update initial (#142)

Naming Scheme rework for non-game harnesses
This commit is contained in:
j-lin-lmg
2025-05-27 11:09:21 -07:00
committed by GitHub
parent 6f47569db6
commit 9f48268433
20 changed files with 52 additions and 34 deletions

View File

@@ -0,0 +1,21 @@
# F1 22
This script navigates through in-game menus to the built in benchmark and runs it with the current settings. It then waits for a results screen, expecting the benchmark to be running 3 laps.
## Prerequisites
- Python 3.10+
- F1 22 installed
- Keras OCR service
## Options
- `kerasHost`: string representing the IP address of the Keras service. e.x. `0.0.0.0`
- `kerasPort`: string representing the port of the Keras service. e.x. `8080`
## Output
report.json
- `resolution`: string representing the resolution the test was run at, formatted as "[width]x[height]", e.x. `1920x1080`
- `start_time`: number representing a timestamp of the test's start time in milliseconds
- `end_time`: number representing a timestamp of the test's end time in milliseconds

177
zdeprecated/F1_22/f1.py Normal file
View File

@@ -0,0 +1,177 @@
"""F1 22 Test script"""
import logging
import sys
import os.path
import time
import pydirectinput as user
from f1_22_utils import get_args
from f1_22_utils import get_resolution
sys.path.insert(1, os.path.join(sys.path[0], ".."))
from harness_utils.keras_service import KerasService
from harness_utils.steam import exec_steam_run_command, get_steamapps_common_path
from harness_utils.output import (
format_resolution,
seconds_to_milliseconds,
setup_log_directory,
write_report_json,
DEFAULT_LOGGING_FORMAT,
DEFAULT_DATE_FORMAT,
)
from harness_utils.misc import remove_files
from harness_utils.process import terminate_processes
SCRIPT_DIRECTORY = os.path.dirname(os.path.realpath(__file__))
LOG_DIRECTORY = os.path.join(SCRIPT_DIRECTORY, "run")
STEAM_GAME_ID = 1692250
VIDEO_PATH = os.path.join(get_steamapps_common_path(), "videos")
intro_videos = [
os.path.join(VIDEO_PATH, "attract.bk2"),
os.path.join(VIDEO_PATH, "cm_f1_sting.bk2"),
]
def navigate_overlay():
"""Simulate inputs to navigate in-game overlay."""
# if steam in-game overlay is disabled it will be a an okay to press
if kerasService.look_for_word("okay", attempts=5, interval=1):
user.press("enter")
# if steam in-game overlay is enabled we have to press escape and enter
elif kerasService.look_for_word("please", attempts=5, interval=1):
user.press("esc")
time.sleep(0.5)
user.press("down")
time.sleep(0.5)
user.press("enter")
time.sleep(0.5)
time.sleep(3)
def navigate_menu():
"""Simulate inputs to navigate to benchmark option."""
# Enter options
user.press("down")
time.sleep(0.5)
user.press("enter")
time.sleep(0.5)
# Enter settings
user.press("enter")
time.sleep(0.5)
# Enter graphics settings
user.press("right")
time.sleep(0.5)
user.press("enter")
time.sleep(0.5)
# Enter benchmark options
user.press("down")
time.sleep(0.5)
user.press("down")
time.sleep(0.5)
user.press("down")
time.sleep(0.5)
user.press("down")
time.sleep(0.5)
user.press("enter")
# Run benchmark!
user.press("down")
time.sleep(0.5)
user.press("down")
time.sleep(0.5)
user.press("down")
time.sleep(0.5)
user.press("down")
time.sleep(0.5)
user.press("down")
time.sleep(0.5)
user.press("down")
time.sleep(0.5)
user.press("down")
time.sleep(0.5)
user.press("enter")
def run_benchmark():
"""Runs the actual benchmark."""
setup_start_time = time.time()
remove_files(intro_videos)
exec_steam_run_command(STEAM_GAME_ID)
time.sleep(20)
# press space through the warnings
for _ in range(5):
user.press("space")
time.sleep(1)
navigate_overlay()
result = kerasService.look_for_word("options", attempts=5, interval=1)
if not result:
print("Didn't land on the main menu!")
sys.exit(1)
navigate_menu()
elapsed_setup_time = round(time.time() - setup_start_time, 2)
logging.info("Setup took %f seconds", elapsed_setup_time)
test_start_time = time.time()
# sleep 3 laps
time.sleep(330)
navigate_overlay()
result = kerasService.wait_for_word("results", timeout=10)
if not result:
logging.info(
"Results screen was not found! Did harness not wait long enough? Or test was too long?"
)
sys.exit(1)
test_end_time = time.time()
elapsed_test_time = round(test_end_time - test_start_time, 2)
logging.info("Benchmark took %f seconds", elapsed_test_time)
terminate_processes("F1")
return test_start_time, test_end_time
setup_log_directory(LOG_DIRECTORY)
logging.basicConfig(
filename=f"{LOG_DIRECTORY}/harness.log",
format=DEFAULT_LOGGING_FORMAT,
datefmt=DEFAULT_DATE_FORMAT,
level=logging.DEBUG,
)
console = logging.StreamHandler()
formatter = logging.Formatter(DEFAULT_LOGGING_FORMAT)
console.setFormatter(formatter)
logging.getLogger("").addHandler(console)
args = get_args()
kerasService = KerasService(args.keras_host, args.keras_port)
try:
start_time, end_time = run_benchmark()
width, height = get_resolution()
report = {
"resolution": format_resolution(width, height),
"start_time": seconds_to_milliseconds(start_time),
"end_time": seconds_to_milliseconds(end_time),
}
write_report_json(LOG_DIRECTORY, "report.json", report)
except Exception as e:
logging.error("Something went wrong running the benchmark!")
logging.exception(e)
terminate_processes("F1")
sys.exit(1)

View File

@@ -0,0 +1,42 @@
"""Utility functions supporting F1 22 test script."""
from argparse import ArgumentParser
import os
import re
def get_resolution() -> tuple[int]:
"""Gets resolution width and height from local xml file created by game."""
username = os.getlogin()
config_path = f"C:\\Users\\{username}\\Documents\\My Games\\F1 22\\hardwaresettings"
config_filename = "hardware_settings_config.xml"
resolution = re.compile(r"<resolution width=\"(\d+)\" height=\"(\d+)\"")
cfg = f"{config_path}\\{config_filename}"
height = 0
width = 0
with open(cfg, encoding="utf-8") as file:
lines = file.readlines()
for line in lines:
height_match = resolution.search(line)
width_match = resolution.search(line)
if height_match is not None:
height = height_match.group(2)
if width_match is not None:
width = width_match.group(1)
return (width, height)
def get_args() -> any:
"""Retrieve parsed command line arguments."""
parser = ArgumentParser()
parser.add_argument(
"--kerasHost",
dest="keras_host",
help="Host for Keras OCR service",
required=True,
)
parser.add_argument(
"--kerasPort",
dest="keras_port",
help="Port for Keras OCR service",
required=True,
)
return parser.parse_args()

View File

@@ -0,0 +1,10 @@
friendly_name: "F1_22"
executable: "f1.py"
process_name: "F1_22.exe"
hidden: 0
output_dir: "run"
options:
- name: kerasHost
type: input
- name: kerasPort
type: input

View File

@@ -0,0 +1,21 @@
# F1 23
This script navigates through in-game menus to the built in benchmark and runs it with the current settings. It then waits for a results screen, expecting the benchmark to be running 3 laps.
## Prerequisites
- Python 3.10+
- F1 23 installed
- Keras OCR service
## Options
- `kerasHost`: string representing the IP address of the Keras service. e.x. `0.0.0.0`
- `kerasPort`: string representing the port of the Keras service. e.x. `8080`
## Output
report.json
- `resolution`: string representing the resolution the test was run at, formatted as "[width]x[height]", e.x. `1920x1080`
- `start_time`: number representing a timestamp of the test's start time in milliseconds
- `end_time`: number representing a timestamp of the test's end time in milliseconds

264
zdeprecated/F1_23/f1_23.py Normal file
View File

@@ -0,0 +1,264 @@
"""F1 23 test script"""
import logging
from argparse import ArgumentParser
import os.path
import re
import time
import sys
import pydirectinput as user
from f1_23_utils import get_resolution
sys.path.insert(1, os.path.join(sys.path[0], ".."))
from harness_utils.steam import exec_steam_run_command, get_app_install_location, get_build_id
from harness_utils.keras_service import KerasService
from harness_utils.misc import remove_files, press_n_times
from harness_utils.process import terminate_processes
from harness_utils.output import (
format_resolution,
seconds_to_milliseconds,
setup_log_directory,
write_report_json,
DEFAULT_LOGGING_FORMAT,
DEFAULT_DATE_FORMAT,
)
from harness_utils.artifacts import ArtifactManager, ArtifactType
SCRIPT_DIRECTORY = os.path.dirname(os.path.realpath(__file__))
LOG_DIRECTORY = os.path.join(SCRIPT_DIRECTORY, "run")
PROCESS_NAME = "F1_23"
STEAM_GAME_ID = 2108330
VIDEO_PATH = os.path.join(get_app_install_location(STEAM_GAME_ID), "videos")
username = os.getlogin()
CONFIG_PATH = f"C:\\Users\\{username}\\Documents\\My Games\\F1 23\\hardwaresettings"
CONFIG_FILENAME = "hardware_settings_config.xml"
CONFIG = f"{CONFIG_PATH}\\{CONFIG_FILENAME}"
BENCHMARK_RESULTS_PATH = f"C:\\Users\\{username}\\Documents\\My Games\\F1 23\\benchmark"
intro_videos = [
os.path.join(VIDEO_PATH, "attract.bk2"),
os.path.join(VIDEO_PATH, "cm_f1_sting.bk2")
]
def find_latest_result_file(base_path):
"""Look for files in the benchmark results path that match the pattern in the regular expression"""
pattern = r"benchmark_.*\.xml"
list_of_files = []
for filename in os.listdir(base_path):
if re.search(pattern, filename, re.IGNORECASE):
list_of_files.append(base_path + '\\' +filename)
latest_file = max(list_of_files, key=os.path.getmtime)
return latest_file
def find_settings() -> any:
"""Look for and enter settings"""
if not kerasService.look_for_word("settings", attempts=5, interval=3):
logging.info("Didn't find settings!")
sys.exit(1)
user.press("enter")
time.sleep(1.5)
def find_graphics() -> any:
"""Look for and enter graphics settings"""
if not kerasService.look_for_word("graphics", attempts=5, interval=3):
logging.info("Didn't find graphics!")
sys.exit(1)
user.press("right")
time.sleep(0.2)
user.press("enter")
time.sleep(1.5)
def navigate_startup():
"""press space through the warnings and navigate startup menus"""
result = kerasService.wait_for_word("product", timeout=40)
if not result:
logging.info("Game didn't start in time. Check settings and try again.")
sys.exit(1)
user.press("space")
time.sleep(1)
user.press("space")
time.sleep(1)
user.press("space")
time.sleep(4)
# Press enter to proceed to the main menu
result = kerasService.wait_for_word("press", interval=2, timeout=80)
if not result:
logging.info("Game didn't start in time. Check settings and try again.")
sys.exit(1)
logging.info("Hit the title screen. Continuing")
user.press("enter")
time.sleep(1)
# cancel logging into ea services
result = kerasService.wait_for_word("login", timeout=50)
if result:
logging.info("Cancelling logging in.")
user.press("enter")
time.sleep(2)
def run_benchmark():
"""Runs the actual benchmark."""
remove_files(intro_videos)
exec_steam_run_command(STEAM_GAME_ID)
am = ArtifactManager(LOG_DIRECTORY)
setup_start_time = int(time.time())
time.sleep(2)
navigate_startup()
# Navigate menus and take screenshots using the artifact manager
result = kerasService.wait_for_word("theatre", interval=3, timeout=60)
if not result:
logging.info("Didn't land on the main menu!")
sys.exit(1)
logging.info("Saw the options! we are good to go!")
time.sleep(1)
press_n_times("down", 7, 0.2)
user.press("enter")
time.sleep(2)
find_settings()
find_graphics()
# Navigate to video settings
press_n_times("down", 3, 0.2)
user.press("enter")
time.sleep(0.2)
result = kerasService.wait_for_word("vsync", interval=3, timeout=60)
if not result:
logging.info("Didn't find the keyword 'vsync'. Did the program navigate to the video mode menu correctly?")
sys.exit(1)
am.take_screenshot("video.png", ArtifactType.CONFIG_IMAGE, "screenshot of video settings menu")
user.press("esc")
time.sleep(0.2)
result = kerasService.wait_for_word("steering", interval=3, timeout=60)
if not result:
logging.info("Didn't find the keyword 'steering'. Did the program exit the video mode menu correctly?")
sys.exit(1)
# Navigate through graphics settings and take screenshots of all settings contained within
am.take_screenshot("graphics_1.png", ArtifactType.CONFIG_IMAGE, "first screenshot of graphics settings")
press_n_times("down", 30, 0.2)
result = kerasService.wait_for_word("chromatic", interval=3, timeout=60)
if not result:
logging.info("Didn't find the keyword 'chromatic'. Did we navigate the menu correctly?")
sys.exit(1)
am.take_screenshot("graphics_2.png", ArtifactType.CONFIG_IMAGE, "second screenshot of graphics settings")
press_n_times("up", 29, 0.2)
user.press("enter")
time.sleep(0.2)
# Navigate benchmark menu
if not kerasService.look_for_word("weather", attempts=5, interval=3):
logging.info("Didn't find weather!")
sys.exit(1)
am.take_screenshot("benchmark.png", ArtifactType.CONFIG_IMAGE, "screenshot of benchmark settings")
press_n_times("down", 6, 0.2)
user.press("enter")
time.sleep(2)
elapsed_setup_time = round(int(time.time()) - setup_start_time, 2)
logging.info("Setup took %f seconds", elapsed_setup_time)
result = kerasService.wait_for_word("lap", interval=0.5, timeout=90)
if not result:
logging.info("Benchmark didn't start.")
sys.exit(1)
logging.info("Benchmark started. Waiting for benchmark to complete.")
test_start_time = int(time.time()) + 8
# sleep for 3 laps
time.sleep(310)
test_end_time = None
result = kerasService.wait_for_word("loading", interval=0.5, timeout=90)
if result:
logging.info("Found the loading screen. Marking the out time.")
test_end_time = int(time.time()) - 2
time.sleep(2)
else:
logging.info("Could not find the loading screen. Could not mark end time!")
result = kerasService.wait_for_word("results", interval=3, timeout=90)
if not result:
logging.info("Results screen was not found!" +
"Did harness not wait long enough? Or test was too long?")
sys.exit(1)
logging.info("Results screen was found! Finishing benchmark.")
results_file = find_latest_result_file(BENCHMARK_RESULTS_PATH)
am.take_screenshot("result.png", ArtifactType.RESULTS_IMAGE, "screenshot of results")
am.copy_file(CONFIG, ArtifactType.CONFIG_TEXT, "config file")
am.copy_file(results_file, ArtifactType.RESULTS_TEXT, "benchmark results xml file")
if test_end_time is None:
logging.info("Loading screen end time not found. Using results screen fallback time.")
test_end_time = int(time.time())
elapsed_test_time = round(test_end_time - test_start_time, 2)
logging.info("Benchmark took %f seconds", elapsed_test_time)
terminate_processes(PROCESS_NAME)
am.create_manifest()
return test_start_time, test_end_time
setup_log_directory(LOG_DIRECTORY)
logging.basicConfig(
filename=f"{LOG_DIRECTORY}/harness.log",
format=DEFAULT_LOGGING_FORMAT,
datefmt=DEFAULT_DATE_FORMAT,
level=logging.DEBUG,
)
console = logging.StreamHandler()
formatter = logging.Formatter(DEFAULT_LOGGING_FORMAT)
console.setFormatter(formatter)
logging.getLogger("").addHandler(console)
parser = ArgumentParser()
parser.add_argument(
"--kerasHost", dest="keras_host", help="Host for Keras OCR service", required=True
)
parser.add_argument(
"--kerasPort", dest="keras_port", help="Port for Keras OCR service", required=True
)
args = parser.parse_args()
kerasService = KerasService(args.keras_host, args.keras_port)
try:
start_time, end_time = run_benchmark()
width, height = get_resolution()
report = {
"resolution": format_resolution(width, height),
"start_time": seconds_to_milliseconds(start_time),
"end_time": seconds_to_milliseconds(end_time),
"version": get_build_id(STEAM_GAME_ID)
}
write_report_json(LOG_DIRECTORY, "report.json", report)
except Exception as e:
logging.error("Something went wrong running the benchmark!")
logging.exception(e)
terminate_processes(PROCESS_NAME)
sys.exit(1)

View File

@@ -0,0 +1,24 @@
"""Utility functions supporting F1 23 test script."""
import os
import re
def get_resolution() -> tuple[int]:
"""Gets resolution width and height from local xml file created by game."""
username = os.getlogin()
config_path = f"C:\\Users\\{username}\\Documents\\My Games\\F1 23\\hardwaresettings"
config_filename = "hardware_settings_config.xml"
resolution = re.compile(r"<resolution width=\"(\d+)\" height=\"(\d+)\"")
cfg = f"{config_path}\\{config_filename}"
height = 0
width = 0
with open(cfg, encoding="utf-8") as file:
lines = file.readlines()
for line in lines:
height_match = resolution.search(line)
width_match = resolution.search(line)
if height_match is not None:
height = height_match.group(2)
if width_match is not None:
width = width_match.group(1)
return (width, height)

View File

@@ -0,0 +1,10 @@
friendly_name: "F1_23"
executable: "f1_23.py"
process_name: "F1_23.exe"
hidden: 0
output_dir: "run"
options:
- name: kerasHost
type: input
- name: kerasPort
type: input

6
zdeprecated/README.md Normal file
View File

@@ -0,0 +1,6 @@
# Deprecated Harnesses
> **NOTE:** Tests in this directory are deprecated; They are **not** guaranteed to work!
These harnesses are, as the name of directory suggests, deprecated. This means that they are not actively maintained and are not guaranteed to work. They may have bugs, unfinished code, and/or utilize approaches that we have moved away from as we continue to evolve MarkBench and explore newer and better test harnesses.
The deprecated harnesses we have placed here currently are meant for games or software that we are not actively testing, but have decided to keep around for one reason or another for the time being. They may be revisited at some point or deleted outright should we decide they no longer have value. For example, we may consider revisiting a harness in the future and would like to keep the original script as a reference for when we go back to give it an update.

View File

@@ -0,0 +1,15 @@
# Aida64 GPGPU Benchmark
This is a script which runs the GPU benchmark of Aida64 Business version.
![Alt text](aida64_gpgpu_benchmark.png)
## Prerequisites
- Python 3.10+
- Aida64 Business installed.
## Output
report.xml - The report from Aida64 in XML format.

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 KiB

View File

@@ -0,0 +1,33 @@
'''Aida64 GPGPU test script'''
import logging
import os
import subprocess
import sys
INSTALL_DIR = "C:\\Program Files\\Aida64Business\\aida64business675"
EXECUTABLE = "aida64.exe"
script_dir = os.path.dirname(os.path.realpath(__file__))
log_dir = os.path.join(script_dir, "run")
if not os.path.isdir(log_dir):
os.mkdir(log_dir)
LOGGING_FORMAT = '%(asctime)s %(levelname)-s %(message)s'
logging.basicConfig(filename=f'{log_dir}/harness.log',
format=LOGGING_FORMAT,
datefmt='%m-%d %H:%M',
level=logging.DEBUG)
console = logging.StreamHandler()
formatter = logging.Formatter(LOGGING_FORMAT)
console.setFormatter(formatter)
logging.getLogger('').addHandler(console)
executable = os.path.join(INSTALL_DIR, EXECUTABLE)
report_dest = os.path.join(log_dir, "report.xml")
ARGSTR = f"/GGBENCH {report_dest}"
result = subprocess.run([executable, ARGSTR], check=False)
if result.returncode > 0:
logging.error("Aida failed with exit code {result.returncode}")
logging.warning(result.stdout)
logging.warning(result.stderr)
sys.exit(1)

View File

@@ -0,0 +1,6 @@
friendly_name: "Aida64 GPGPU"
executable: "aida64gpgpu.py"
process_name: "aida64.exe"
disable_presentmon: true
hidden: 1
output_dir: "run"

View File

@@ -0,0 +1,671 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<GGBenchResults>
<GPUResult>
<GPUIndex>1</GPUIndex>
<ID>MEM_READ</ID>
<Desc>Memory Read</Desc>
<BestResult>12452.78320</BestResult>
<ResultUnit>MB/s</ResultUnit>
<RunTime_sec>1.203</RunTime_sec>
<GPUSubResult>
<Desc>Pinned</Desc>
<Result>12452.78320</Result>
<RunTime_sec>0.002</RunTime_sec>
<RunTimeProf_sec>0.002</RunTimeProf_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>Pageable</Desc>
<Result>8352.59070</Result>
<RunTime_sec>0.004</RunTime_sec>
<RunTimeProf_sec>0.003</RunTimeProf_sec>
</GPUSubResult>
</GPUResult>
<GPUResult>
<GPUIndex>1</GPUIndex>
<ID>MEM_WRITE</ID>
<Desc>Memory Write</Desc>
<BestResult>12150.66829</BestResult>
<ResultUnit>MB/s</ResultUnit>
<RunTime_sec>1.109</RunTime_sec>
<GPUSubResult>
<Desc>Pinned</Desc>
<Result>12150.66829</Result>
<RunTime_sec>0.002</RunTime_sec>
<RunTimeProf_sec>0.002</RunTimeProf_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>Pageable</Desc>
<Result>8243.57002</Result>
<RunTime_sec>0.004</RunTime_sec>
<RunTimeProf_sec>0.004</RunTimeProf_sec>
</GPUSubResult>
</GPUResult>
<GPUResult>
<GPUIndex>1</GPUIndex>
<ID>MEM_COPY</ID>
<Desc>Memory Copy</Desc>
<BestResult>194145.30563</BestResult>
<ResultUnit>MB/s</ResultUnit>
<RunTime_sec>4.109</RunTime_sec>
<GPUSubResult>
<Desc>15 MB Block</Desc>
<Result>169587.33748</Result>
<RunTime_sec>0.000</RunTime_sec>
<RunTimeProf_sec>0.000</RunTimeProf_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>32 MB Block</Desc>
<Result>182961.69240</Result>
<RunTime_sec>0.000</RunTime_sec>
<RunTimeProf_sec>0.000</RunTimeProf_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>64 MB Block</Desc>
<Result>189854.64254</Result>
<RunTime_sec>0.001</RunTime_sec>
<RunTimeProf_sec>0.001</RunTimeProf_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>128 MB Block</Desc>
<Result>193236.71498</Result>
<RunTime_sec>0.001</RunTime_sec>
<RunTimeProf_sec>0.001</RunTimeProf_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>256 MB Block</Desc>
<Result>194145.30563</Result>
<RunTime_sec>0.003</RunTime_sec>
<RunTimeProf_sec>0.003</RunTimeProf_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>512 MB Block</Desc>
<Result>190781.38391</Result>
<RunTime_sec>0.005</RunTime_sec>
<RunTimeProf_sec>0.005</RunTimeProf_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>1024 MB Block</Desc>
<Result>190090.77577</Result>
<RunTime_sec>0.011</RunTime_sec>
<RunTimeProf_sec>0.011</RunTimeProf_sec>
</GPUSubResult>
</GPUResult>
<GPUResult>
<GPUIndex>1</GPUIndex>
<ID>SP_FLOPS</ID>
<Desc>Single-Precision FLOPS</Desc>
<BestResult>10189.63340</BestResult>
<ResultUnit>GFLOPS</ResultUnit>
<RunTime_sec>8.891</RunTime_sec>
<GPUSubResult>
<Desc>float1</Desc>
<Result>10189.63340</Result>
<RunTime_sec>0.863</RunTime_sec>
<RunTimeProf_sec>0.863</RunTimeProf_sec>
<BuildTime_sec>0.047</BuildTime_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>float2</Desc>
<Result>10167.53486</Result>
<RunTime_sec>0.865</RunTime_sec>
<RunTimeProf_sec>0.865</RunTimeProf_sec>
<BuildTime_sec>0.016</BuildTime_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>float4</Desc>
<Result>10074.32314</Result>
<RunTime_sec>0.873</RunTime_sec>
<RunTimeProf_sec>0.873</RunTimeProf_sec>
<BuildTime_sec>0.016</BuildTime_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>float8</Desc>
<Result>10069.34221</Result>
<RunTime_sec>0.874</RunTime_sec>
<RunTimeProf_sec>0.873</RunTimeProf_sec>
<BuildTime_sec>0.016</BuildTime_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>float16</Desc>
<Result>10057.26040</Result>
<RunTime_sec>0.875</RunTime_sec>
<RunTimeProf_sec>0.875</RunTimeProf_sec>
<BuildTime_sec>0.015</BuildTime_sec>
</GPUSubResult>
</GPUResult>
<GPUResult>
<GPUIndex>1</GPUIndex>
<ID>DP_FLOPS</ID>
<Desc>Double-Precision FLOPS</Desc>
<BestResult>159.48329</BestResult>
<ResultUnit>GFLOPS</ResultUnit>
<RunTime_sec>8.984</RunTime_sec>
<GPUSubResult>
<Desc>double1</Desc>
<Result>159.48329</Result>
<RunTime_sec>0.862</RunTime_sec>
<RunTimeProf_sec>0.862</RunTimeProf_sec>
<BuildTime_sec>0.000</BuildTime_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>double2</Desc>
<Result>156.64835</Result>
<RunTime_sec>0.877</RunTime_sec>
<RunTimeProf_sec>0.877</RunTimeProf_sec>
<BuildTime_sec>0.016</BuildTime_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>double4</Desc>
<Result>157.84741</Result>
<RunTime_sec>0.871</RunTime_sec>
<RunTimeProf_sec>0.871</RunTimeProf_sec>
<BuildTime_sec>0.000</BuildTime_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>double8</Desc>
<Result>157.84628</Result>
<RunTime_sec>0.871</RunTime_sec>
<RunTimeProf_sec>0.871</RunTimeProf_sec>
<BuildTime_sec>0.000</BuildTime_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>double16</Desc>
<Result>146.74009</Result>
<RunTime_sec>0.937</RunTime_sec>
<RunTimeProf_sec>0.937</RunTimeProf_sec>
<BuildTime_sec>0.015</BuildTime_sec>
</GPUSubResult>
</GPUResult>
<GPUResult>
<GPUIndex>1</GPUIndex>
<ID>INT24_IOPS</ID>
<Desc>24-bit Integer IOPS</Desc>
<BestResult>5120.05817</BestResult>
<ResultUnit>GIOPS</ResultUnit>
<RunTime_sec>8.828</RunTime_sec>
<GPUSubResult>
<Desc>int1</Desc>
<Result>5120.05817</Result>
<RunTime_sec>0.859</RunTime_sec>
<RunTimeProf_sec>0.859</RunTimeProf_sec>
<BuildTime_sec>0.016</BuildTime_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>int2</Desc>
<Result>5082.88847</Result>
<RunTime_sec>0.865</RunTime_sec>
<RunTimeProf_sec>0.865</RunTimeProf_sec>
<BuildTime_sec>0.000</BuildTime_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>int4</Desc>
<Result>5043.54109</Result>
<RunTime_sec>0.872</RunTime_sec>
<RunTimeProf_sec>0.872</RunTimeProf_sec>
<BuildTime_sec>0.016</BuildTime_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>int8</Desc>
<Result>5044.93016</Result>
<RunTime_sec>0.872</RunTime_sec>
<RunTimeProf_sec>0.872</RunTimeProf_sec>
<BuildTime_sec>0.016</BuildTime_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>int16</Desc>
<Result>5045.73988</Result>
<RunTime_sec>0.872</RunTime_sec>
<RunTimeProf_sec>0.872</RunTimeProf_sec>
<BuildTime_sec>0.000</BuildTime_sec>
</GPUSubResult>
</GPUResult>
<GPUResult>
<GPUIndex>1</GPUIndex>
<ID>INT32_IOPS</ID>
<Desc>32-bit Integer IOPS</Desc>
<BestResult>5100.81307</BestResult>
<ResultUnit>GIOPS</ResultUnit>
<RunTime_sec>8.859</RunTime_sec>
<GPUSubResult>
<Desc>int1</Desc>
<Result>5100.81307</Result>
<RunTime_sec>0.862</RunTime_sec>
<RunTimeProf_sec>0.862</RunTimeProf_sec>
<BuildTime_sec>0.000</BuildTime_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>int2</Desc>
<Result>5066.81782</Result>
<RunTime_sec>0.868</RunTime_sec>
<RunTimeProf_sec>0.868</RunTimeProf_sec>
<BuildTime_sec>0.016</BuildTime_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>int4</Desc>
<Result>5023.08621</Result>
<RunTime_sec>0.876</RunTime_sec>
<RunTimeProf_sec>0.875</RunTimeProf_sec>
<BuildTime_sec>0.016</BuildTime_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>int8</Desc>
<Result>5017.94428</Result>
<RunTime_sec>0.876</RunTime_sec>
<RunTimeProf_sec>0.876</RunTimeProf_sec>
<BuildTime_sec>0.016</BuildTime_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>int16</Desc>
<Result>5026.16252</Result>
<RunTime_sec>0.875</RunTime_sec>
<RunTimeProf_sec>0.875</RunTimeProf_sec>
<BuildTime_sec>0.015</BuildTime_sec>
</GPUSubResult>
</GPUResult>
<GPUResult>
<GPUIndex>1</GPUIndex>
<ID>INT64_IOPS</ID>
<Desc>64-bit Integer IOPS</Desc>
<BestResult>1250.75463</BestResult>
<ResultUnit>GIOPS</ResultUnit>
<RunTime_sec>8.875</RunTime_sec>
<GPUSubResult>
<Desc>long1</Desc>
<Result>1158.95794</Result>
<RunTime_sec>0.949</RunTime_sec>
<RunTimeProf_sec>0.949</RunTimeProf_sec>
<BuildTime_sec>0.016</BuildTime_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>long2</Desc>
<Result>1250.75463</Result>
<RunTime_sec>0.879</RunTime_sec>
<RunTimeProf_sec>0.879</RunTimeProf_sec>
<BuildTime_sec>0.000</BuildTime_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>long4</Desc>
<Result>1117.22444</Result>
<RunTime_sec>0.984</RunTime_sec>
<RunTimeProf_sec>0.984</RunTimeProf_sec>
<BuildTime_sec>0.015</BuildTime_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>long8</Desc>
<Result>1128.51433</Result>
<RunTime_sec>0.974</RunTime_sec>
<RunTimeProf_sec>0.974</RunTimeProf_sec>
<BuildTime_sec>0.016</BuildTime_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>long16</Desc>
<Result>960.78973</Result>
<RunTime_sec>0.572</RunTime_sec>
<RunTimeProf_sec>0.572</RunTimeProf_sec>
<BuildTime_sec>0.016</BuildTime_sec>
</GPUSubResult>
</GPUResult>
<GPUResult>
<GPUIndex>1</GPUIndex>
<ID>AES256</ID>
<Desc>AES-256</Desc>
<BestResult>27144.47841</BestResult>
<ResultUnit>MB/s</ResultUnit>
<RunTime_sec>40.219</RunTime_sec>
<GPUSubResult>
<Desc>inline loop / 4 MB</Desc>
<Result>26756.45583</Result>
<RunTime_sec>0.612</RunTime_sec>
<RunTimeProf_sec>0.612</RunTimeProf_sec>
<BuildTime_sec>0.016</BuildTime_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>inline loop / 8 MB</Desc>
<Result>27013.55162</Result>
<RunTime_sec>0.607</RunTime_sec>
<RunTimeProf_sec>0.606</RunTimeProf_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>inline loop / 16 MB</Desc>
<Result>27144.47841</Result>
<RunTime_sec>0.604</RunTime_sec>
<RunTimeProf_sec>0.604</RunTimeProf_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>inline loop / 32 MB</Desc>
<Result>27135.71168</Result>
<RunTime_sec>0.604</RunTime_sec>
<RunTimeProf_sec>0.604</RunTimeProf_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>inline loop / 64 MB</Desc>
<Result>27130.20278</Result>
<RunTime_sec>0.604</RunTime_sec>
<RunTimeProf_sec>0.604</RunTimeProf_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>inline loop / 128 MB</Desc>
<Result>27121.68323</Result>
<RunTime_sec>0.604</RunTime_sec>
<RunTimeProf_sec>0.604</RunTimeProf_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>inline loop / 256 MB</Desc>
<Result>26992.88339</Result>
<RunTime_sec>0.607</RunTime_sec>
<RunTimeProf_sec>0.607</RunTimeProf_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>inline unroll / 4 MB</Desc>
<Result>26720.25940</Result>
<RunTime_sec>0.613</RunTime_sec>
<RunTimeProf_sec>0.613</RunTimeProf_sec>
<BuildTime_sec>0.016</BuildTime_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>inline unroll / 8 MB</Desc>
<Result>26985.57876</Result>
<RunTime_sec>0.607</RunTime_sec>
<RunTimeProf_sec>0.607</RunTimeProf_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>inline unroll / 16 MB</Desc>
<Result>27111.82752</Result>
<RunTime_sec>0.604</RunTime_sec>
<RunTimeProf_sec>0.604</RunTimeProf_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>inline unroll / 32 MB</Desc>
<Result>27110.19008</Result>
<RunTime_sec>0.604</RunTime_sec>
<RunTimeProf_sec>0.604</RunTimeProf_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>inline unroll / 64 MB</Desc>
<Result>27110.18560</Result>
<RunTime_sec>0.604</RunTime_sec>
<RunTimeProf_sec>0.604</RunTimeProf_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>inline unroll / 128 MB</Desc>
<Result>27105.00094</Result>
<RunTime_sec>0.604</RunTime_sec>
<RunTimeProf_sec>0.604</RunTimeProf_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>inline unroll / 256 MB</Desc>
<Result>27082.83605</Result>
<RunTime_sec>0.605</RunTime_sec>
<RunTimeProf_sec>0.605</RunTimeProf_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>define loop / 4 MB</Desc>
<Result>26755.49019</Result>
<RunTime_sec>0.612</RunTime_sec>
<RunTimeProf_sec>0.612</RunTimeProf_sec>
<BuildTime_sec>0.016</BuildTime_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>define loop / 8 MB</Desc>
<Result>27015.46249</Result>
<RunTime_sec>0.606</RunTime_sec>
<RunTimeProf_sec>0.606</RunTimeProf_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>define loop / 16 MB</Desc>
<Result>27143.01240</Result>
<RunTime_sec>0.604</RunTime_sec>
<RunTimeProf_sec>0.604</RunTimeProf_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>define loop / 32 MB</Desc>
<Result>27134.69601</Result>
<RunTime_sec>0.604</RunTime_sec>
<RunTimeProf_sec>0.604</RunTimeProf_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>define loop / 64 MB</Desc>
<Result>27129.59631</Result>
<RunTime_sec>0.604</RunTime_sec>
<RunTimeProf_sec>0.604</RunTimeProf_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>define loop / 128 MB</Desc>
<Result>27121.38691</Result>
<RunTime_sec>0.604</RunTime_sec>
<RunTimeProf_sec>0.604</RunTimeProf_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>define loop / 256 MB</Desc>
<Result>27067.20759</Result>
<RunTime_sec>0.605</RunTime_sec>
<RunTimeProf_sec>0.605</RunTimeProf_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>define unroll / 4 MB</Desc>
<Result>26740.89616</Result>
<RunTime_sec>0.613</RunTime_sec>
<RunTimeProf_sec>0.613</RunTimeProf_sec>
<BuildTime_sec>0.015</BuildTime_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>define unroll / 8 MB</Desc>
<Result>27001.78056</Result>
<RunTime_sec>0.607</RunTime_sec>
<RunTimeProf_sec>0.607</RunTimeProf_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>define unroll / 16 MB</Desc>
<Result>27127.61985</Result>
<RunTime_sec>0.604</RunTime_sec>
<RunTimeProf_sec>0.604</RunTimeProf_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>define unroll / 32 MB</Desc>
<Result>27126.66317</Result>
<RunTime_sec>0.604</RunTime_sec>
<RunTimeProf_sec>0.604</RunTimeProf_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>define unroll / 64 MB</Desc>
<Result>27127.61536</Result>
<RunTime_sec>0.604</RunTime_sec>
<RunTimeProf_sec>0.604</RunTimeProf_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>define unroll / 128 MB</Desc>
<Result>27129.69514</Result>
<RunTime_sec>0.604</RunTime_sec>
<RunTimeProf_sec>0.604</RunTimeProf_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>define unroll / 256 MB</Desc>
<Result>27104.25211</Result>
<RunTime_sec>0.604</RunTime_sec>
<RunTimeProf_sec>0.604</RunTimeProf_sec>
</GPUSubResult>
</GPUResult>
<GPUResult>
<GPUIndex>1</GPUIndex>
<ID>SHA1_HASH</ID>
<Desc>SHA-1 Hash</Desc>
<BestResult>78437.64948</BestResult>
<ResultUnit>MB/s</ResultUnit>
<RunTime_sec>14.547</RunTime_sec>
<GPUSubResult>
<Desc>512 blocks</Desc>
<Result>10037.21045</Result>
<RunTime_sec>0.797</RunTime_sec>
<RunTimeProf_sec>0.797</RunTimeProf_sec>
<BuildTime_sec>0.000</BuildTime_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>1024 blocks</Desc>
<Result>19877.16410</Result>
<RunTime_sec>0.805</RunTime_sec>
<RunTimeProf_sec>0.805</RunTimeProf_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>2048 blocks</Desc>
<Result>38912.94736</Result>
<RunTime_sec>0.822</RunTime_sec>
<RunTimeProf_sec>0.822</RunTimeProf_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>4096 blocks</Desc>
<Result>69585.91164</Result>
<RunTime_sec>0.920</RunTime_sec>
<RunTimeProf_sec>0.920</RunTimeProf_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>8192 blocks</Desc>
<Result>78437.64948</Result>
<RunTime_sec>0.816</RunTime_sec>
<RunTimeProf_sec>0.816</RunTimeProf_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>16384 blocks</Desc>
<Result>40572.32334</Result>
<RunTime_sec>0.789</RunTime_sec>
<RunTimeProf_sec>0.789</RunTimeProf_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>32768 blocks</Desc>
<Result>11415.43064</Result>
<RunTime_sec>0.701</RunTime_sec>
<RunTimeProf_sec>0.701</RunTimeProf_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>65536 blocks</Desc>
<Result>11440.59549</Result>
<RunTime_sec>0.699</RunTime_sec>
<RunTimeProf_sec>0.699</RunTimeProf_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>131072 blocks</Desc>
<Result>3359.70647</Result>
<RunTime_sec>1.191</RunTime_sec>
<RunTimeProf_sec>1.190</RunTimeProf_sec>
</GPUSubResult>
</GPUResult>
<GPUResult>
<GPUIndex>1</GPUIndex>
<ID>SP_JULIA</ID>
<Desc>Single-Precision Julia</Desc>
<BestResult>1713.94063</BestResult>
<ResultUnit>FPS</ResultUnit>
<RunTime_sec>6.484</RunTime_sec>
<GPUSubResult>
<Desc>float1 break</Desc>
<Result>1651.81725</Result>
<RunTime_sec>0.620</RunTime_sec>
<RunTimeProf_sec>0.620</RunTimeProf_sec>
<BuildTime_sec>0.000</BuildTime_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>float1 stay / unroll 3</Desc>
<Result>1713.94063</Result>
<RunTime_sec>0.597</RunTime_sec>
<RunTimeProf_sec>0.597</RunTimeProf_sec>
<BuildTime_sec>0.016</BuildTime_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>float2 stay / unroll 3</Desc>
<Result>1611.17298</Result>
<RunTime_sec>0.636</RunTime_sec>
<RunTimeProf_sec>0.635</RunTimeProf_sec>
<BuildTime_sec>0.000</BuildTime_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>float1 stay / unroll 9</Desc>
<Result>1632.98971</Result>
<RunTime_sec>0.627</RunTime_sec>
<RunTimeProf_sec>0.627</RunTimeProf_sec>
<BuildTime_sec>0.000</BuildTime_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>float2 stay / unroll 9</Desc>
<Result>1476.30991</Result>
<RunTime_sec>0.694</RunTime_sec>
<RunTimeProf_sec>0.693</RunTimeProf_sec>
<BuildTime_sec>0.000</BuildTime_sec>
</GPUSubResult>
</GPUResult>
<GPUResult>
<GPUIndex>1</GPUIndex>
<ID>DP_MANDEL</ID>
<Desc>Double-Precision Mandel</Desc>
<BestResult>46.35181</BestResult>
<ResultUnit>FPS</ResultUnit>
<RunTime_sec>8.094</RunTime_sec>
<GPUSubResult>
<Desc>double1 break</Desc>
<Result>39.48095</Result>
<RunTime_sec>0.811</RunTime_sec>
<RunTimeProf_sec>0.810</RunTimeProf_sec>
<BuildTime_sec>0.000</BuildTime_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>double1 stay / unroll 3</Desc>
<Result>46.35181</Result>
<RunTime_sec>0.690</RunTime_sec>
<RunTimeProf_sec>0.690</RunTimeProf_sec>
<BuildTime_sec>0.016</BuildTime_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>double2 stay / unroll 3</Desc>
<Result>35.07876</Result>
<RunTime_sec>0.912</RunTime_sec>
<RunTimeProf_sec>0.912</RunTimeProf_sec>
<BuildTime_sec>0.016</BuildTime_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>double1 stay / unroll 9</Desc>
<Result>45.87955</Result>
<RunTime_sec>0.697</RunTime_sec>
<RunTimeProf_sec>0.697</RunTimeProf_sec>
<BuildTime_sec>0.000</BuildTime_sec>
</GPUSubResult>
<GPUSubResult>
<Desc>double2 stay / unroll 9</Desc>
<Result>34.54024</Result>
<RunTime_sec>0.926</RunTime_sec>
<RunTimeProf_sec>0.926</RunTimeProf_sec>
<BuildTime_sec>0.015</BuildTime_sec>
</GPUSubResult>
</GPUResult>
<SysInfo>
<AIDA64Version>6.75.6100</AIDA64Version>
<BenchModuleVersion>4.6.871.8-x64</BenchModuleVersion>
<CPUType>6C+4c Intel Core i5-12600K (Alder Lake-S, LGA1700)</CPUType>
<CPUStepping>C0</CPUStepping>
<CPUClock>4900.0 MHz</CPUClock>
<CPUClock_MHz>4900.000</CPUClock_MHz>
<CPUFSB>100.0 MHz (original: 100 MHz)</CPUFSB>
<CPUFSB_MHz>100.000</CPUFSB_MHz>
<CPUMultiplier>49x</CPUMultiplier>
<NBClock>2600.0 MHz</NBClock>
<NBClock_MHz>2600.000</NBClock_MHz>
<MemoryBus>2600.0 MHz</MemoryBus>
<MemoryBus_MHz>2600.000</MemoryBus_MHz>
<DRAMFSBRatio>26:1</DRAMFSBRatio>
<MemoryType>Quad Channel DDR5-5200 SDRAM (36-36-36-83 CR2)</MemoryType>
<Chipset>Intel Alder Point-S Z690, Intel Alder Lake-S</Chipset>
<Motherboard>Asus ProArt Z690-Creator WiFi</Motherboard>
<BIOSVer>1505</BIOSVer>
<TurboBoost>Enabled</TurboBoost>
<CPB>Not Supported</CPB>
<CPUIDManuf>GenuineIntel</CPUIDManuf>
<CPUIDCPUName>12th Gen Intel(R) Core(TM) i5-12600K</CPUIDCPUName>
<CPUIDRev>00090672h</CPUIDRev>
<DbgCPUClk>4700.00 MHz / TSC Clock = 3700.00 MHz / CPU Mul = 47.00x</DbgCPUClk>
<DbgCPUClkMax>4900.00 MHz / TSC Clock = 3700.00 MHz / CPU Mul = 49.00x</DbgCPUClkMax>
<OSName>Microsoft Windows 10 Pro</OSName>
<OSVerBuild>10.0.19044.1889</OSVerBuild>
<OSSP>-</OSSP>
<OSKernel>x64</OSKernel>
<Date>2022-08-18</Date>
<Time>9:39:45 AM</Time>
<DateTime>2022-08-18 09:39:45</DateTime>
</SysInfo>
</GGBenchResults>