With 3DMark Professional Edition, you can run 3DMark benchmarks from the command line.

  1. Go to the Windows 10 start screen
  2. Type CMD
  3. Right-click on the Command Prompt app
  4. Select Run as Administrator

Type the command below in the Command Prompt window and press enter.

3DMarkCmd.exe [options] 

You may have problems running DirectX 12 tests from a PowerShell terminal due to the way PowerShell works with full-screen DirectX 12 applications. Use the following command-line option to work around this issue:

start /max 3DMarkCMD.exe

Options

When on or off is omitted with an option, on is assumed.

CommandDescription
--register=<license key>
Register 3DMark with the given license key. You can only run 3DMark from the command line with a valid Professional Edition license.
--unregister


Unregister the 3DMark license.


--install=<DLC file path>
Install a standalone 3DMark DLC file from the given path.
--path=<arg>
Changes the destination path for downloaded DLCs and other runtime files.
--uninstall

Removes all 3DMark DLCs and settings files

--language=<arg>

Changes the language of the application, for example, de-DE.

--definition=<benchmark.xml>
Name of benchmark definition XML file. Specifies the XML file that defines the tests and settings to be used. See below for XML file example.
--loop[=<count>]
Set the number of times to loop benchmark. The default is 1. Use 0 to loop the test indefinitely until the run is manually ended.
--systeminfo[=on|=off]
Collect SystemInfo (default off).
--systeminfomonitor[=on|=off]


Enable SystemInfo Monitoring (default off).


--listadapters
List the available graphics adapters and their LUIDs. This is useful for determining the desired adapter LUID for DirectX 12 tests that support manually selecting the GPU. Apply the desired LUID to the “dxgi_adapter_luid” field of the appropriate test-specific .3dmdef file to manually select a GPU to be used.
--out=<file.3dmark-result>
Save the result in the given file.
--in=<file.3dmark-result>
Load a result from the given file. Only used in combination with --online=on for submitting a result online or --export for exporting a result to an XML file.
--online[=on|=off]
Send results to 3dmark.com online service (default off).
--export=<file.xml>


Export results to the given XML file.


--log=<log-file>

Save the benchmark progress log to the given file. Logging does not affect the benchmark score. If this option is not used, the last 1000 lines of logging are saved to the default location:

C:\Users\*username*\Documents\3DMark\Log\3DMark.log

--debug-log

Enable per workload debug logging. Log files for each workload run are saved to: 

C:\Users\*username*\Documents\3DMark\Logs

--trace
Verbose logging.
--scalingmode=<mode>
Specify the scaling mode, either centered or stretched. Each 3DMark test is rendered at a fixed resolution regardless of hardware. The rendered frames are then scaled to fit the system's Windows desktop resolution. This scaling has a negligible effect on the benchmark score.
--audio[=on|=off]
Play audio during the Demo part of a run (default on).
--feature_level=<level>

This setting is generally intended for debugging graphics drivers. It is not available for DirectX 12 tests.
Specify the DirectX feature level: 11_0, 10_1, 10_0, 9_3, 9_2, or 9_1.
If you limit the feature level and try to run a test that requires a higher level, you will get an error that your hardware doesn't support the required features.
--encodedParameters=<arg>
Passes command line parameters to the application in encoded form.

Benchmarking systems with multiple GPUs

From the GUI

When a system has multiple GPUs, 3DMark must choose which one to use for the benchmark run. The logic is as follows for DirectX 12 tests started from the GUI.

  1. Pick the dGPU that can run the test.
  2. If there is more than one dGPU that can run the test, pick the one that is attached to the primary display.
  3. Pick the iGPU if the dGPU cannot run the test but the iGPU can.

If no GPU in the system can run the test, there will be a warning that the test is not compatible.

Note that iGPU hardware that is not yet released publicly can be mistaken for a dGPU as the UI doesn't recognize it. Future updates to SystemInfo with the new GPU detection library will identify hardware correctly and fix this. 

From the command line

Command-line runs do not choose a GPU unless a selection is manually edited into the definition file. The test will run on the default GPU chosen by the drivers and the operating system, exactly as the tests worked prior to the addition of the GPU selector feature. This can be generally overridden in the graphics driver settings. In some cases, this can mean that the command line and the GUI default runs choose a different GPU on systems with multiple GPUs

Examples

These examples assume that you have a .3dmdef definition file in the same folder as 3DMarkCMD.exe which defines your benchmark run and that you have a C:\my_path\  folder with write permissions. Replace the path as appropriate with the result folder you wish to use.

Run a benchmark

Run the Time Spy benchmark and save the result to the given file.

3DMarkCmd.exe --definition=timespy.3dmdef --out=c:\my_path\myresults.3dmark-result

Run Time Spy, save the result to the given file and include Systeminfo scan and hardware monitoring data in the result file.

3DMarkCmd.exe --definition=timespy.3dmdef --out=c:\my_path\myresults.3dmark-result --systeminfo=on --systeminfomonitor=on

Run a DirectX 12 benchmark on a specific GPU

Run a DirectX 12 benchmark test on a specific GPU on a system that has multiple GPUs.

First, list all LUIDs for available graphics adapters on the system.

3DMarkCmd.exe –-listadapters

Insert the desired LUID in the ”dxgi_adapter_luid” field and the desired display ID in the “display_id” field of the .3dmdef definition file, for example, Time Spy here.

<?xml version="1.0" encoding="utf-8"?>
<benchmark>
  <application_info>
    <selected_workloads>
      <selected_workload name="TimeSpyDemoP"/>
      <selected_workload name="TimeSpyGt1P"/>
      <selected_workload name="TimeSpyGt2P"/>
      <selected_workload name="TimeSpyCpuP"/>
    </selected_workloads>
  </application_info>
  <settings>
    <setting>
      <name>dxgi_adapter_luid</name>
      <value>my_LUID</value>
    </setting>
    <setting>
      <name>display_id</name>
      <value>my_display_id</value>
    </setting>
  </settings>
</benchmark>

Then run Time Spy with this customized .3dmdef definition file.

3DMarkCmd.exe --definition=timespy.3dmdef

Loop a benchmark

Loop the Fire Strike benchmark, including the demo, indefinitely using default settings.

3DMarkCmd.exe --definition=firestrike.3dmdef –-loop=0 --out=c:\my_path\myresults.3dmark-result

Loop three times with customized "mybenchmark.3dmdef" settings and save the results to a given file. (There will be three numbered result files, one per run.)

3DMarkCmd.exe --definition=mybenchmark.3dmdef –-loop=3 --out=c:\my_path\myresults.3dmark-result

Install DLCs

Install DLCs downloaded separately.

3DMarkCmd.exe --install="C:\downloads\"

Change the DLC install path

3DMarkCmd.exe --path="D:\3DMarkDlc"

Change the language

Change the app language to German.

3DMarkCmd.exe --language=de-DE