Difference between revisions of "LuxMark v4"

From LuxCoreRender Wiki
Jump to navigation Jump to search
(Created page with "= LuxMark v4.x = LuxMark is a OpenCL cross-platform benchmark tool and has become, over past years, one of the most used (if not the most used) OpenCL benchmark. It is intend...")
 
 
(8 intermediate revisions by the same user not shown)
Line 5: Line 5:
== Render engines ==
== Render engines ==


This release is based on [https://github.com/LuxCoreRender/LuxCore/releases/tag/luxcorerender_v2.2|LuxCoreRender v2.2] and includes benchmarks with the following rendering engines:
This release is based on [https://github.com/LuxCoreRender/LuxCore/releases/tag/luxcorerender_v2.2 LuxCoreRender v2.2] and includes benchmarks with the following rendering engines:


* A micro-kernel based OpenCL path tracer with/without Global Illumination cache;
* A micro-kernel based OpenCL path tracer with/without Global Illumination cache;
* A C++ path tracer with/without Global Illumination cache;
* A C++ path tracer with/without Global Illumination cache. Ray intersection C++ code uses state-of-the-art Intel [https://embree.github.io Embree];
* An hybrid OpenCL for GPUs and  C++ for CPUs path tracer with/without Global Illumination cache;
* An hybrid OpenCL for GPUs and  C++ for CPUs path tracer with/without Global Illumination cache;
* A C++ Bidirectional path tracer;
* A C++ Bidirectional path tracer with a [https://en.wikipedia.org/wiki/Metropolis%E2%80%93Hastings_algorithm Metropolis–Hastings] sampler.


== Denoiser ==
== Denoiser ==


LuxMark includes [https://github.com/OpenImageDenoise/oidn|Intel OpenImageDenoise]. A comparison between raw and denoised image is shown at the end of the benchmark or during the stress test. However Intel OpenImageDenoise is a CPU-only task and '''it is not part of the benchmark result'''.
LuxMark includes [https://github.com/OpenImageDenoise/oidn Intel OpenImageDenoise]. A comparison between raw and denoised image is shown at the end of the benchmark or during the stress test. However Intel OpenImageDenoise is a CPU-only task and '''it is not part of the benchmark result'''.
 
<div align="center">[[Image:LuxMark-v4-denoise.jpg|640px]]</div>


== Stress mode ==
== Stress mode ==
Line 26: Line 28:
== Benchmark Scenes ==
== Benchmark Scenes ==


3 brand new scenes are included. The simple benchmark is the usual ''"LuxBall HDR"'' (217K triangles):
=== Brute force path tracing (OpenCL, C++ and Hybrid) ===


<div align="center">[[Image:Luxmark01.jpg|640px]]</div>
The main LuxMark benchmark is a brute force path tracer (i.e. no cache used).


The medium scene is the ''"Neumann TLM-102 Special Edition (with EA-4 shock mount)"''  (1769K traingles) designed by Vlad "SATtva" Miller (http://vladmiller.info/blog/index.php?comment=308):
<div align="center">[[Image:LuxMark-v4-bench1.png|640px]]</div>


<div align="center">[[Image:Luxmark02.jpg|640px]]</div>
=== Path tracing with GI cache (OpenCL, C++ and Hybrid) ===


The complex scene is the ''"Hotel Lobby"'' (4973K) designed by Peter "Piita" Sandbacka:
The second LuxMark benchmark is a path tracer with global illumination cache. This rendering mode slightly simpler than pure brute force and may work better on some GPU.


<div align="center">[[Image:Luxmark03.jpg|640px]]</div>
<div align="center">[[Image:LuxMark-v4-bench2.png|640px]]</div>
 
=== Bidirectional path tracing with Metropolis sampler (C++ only) ===
 
The last LuxMark benchmark is a bidirectional path tracer with a [https://en.wikipedia.org/wiki/Metropolis%E2%80%93Hastings_algorithm Metropolis–Hastings] sampler. Due to its complexity and the serialize nature of Metropolis, this rendering mode is available only for CPUs.
 
<div align="center">[[Image:LuxMark-v4-bench3.png|640px]]</div>


== Command line options ==
== Command line options ==


  Usage: luxmark [options]
  Usage: ./bin/luxmark [options]
--help (display this help and exit)
  --help (display this help and exit)
--scene=LUXBALL_HDR|MICROPHONE|HOTEL (select the scene to use)
  --scene=FOOD|HALLBENCH|WALLPAPER (select the scene to use)
--mode=BENCHMARK_OCL_GPU|BENCHMARK_OCL_CPUGPU|BENCHMARK_OCL_CPU|BENCHMARK_NATIVE|STRESSTEST_OCL_GPU|
  --mode=BENCHMARK_OCL_GPU|BENCHMARK_OCL_CPUGPU|BENCHMARK_OCL_CPU|BENCHMARK_OCL_CUSTOM|BENCHMARK_HYBRID|BENCHMARK_HYBRID_CUSTOM|BENCHMARK_NATIVE|STRESSTEST_OCL_GPU|STRESSTEST_OCL_CPUGPU|STRESSTEST_OCL_CPU|STRESSTEST_HYBRID|STRESSTEST_NATIVE|DEMO_LUXCOREUI|PAUSE (select the mode to use)
    STRESSTEST_OCL_CPUGPU|STRESSTEST_OCL_CPU|DEMO_LUXVR|PAUSE (select the mode to use)
  --devices=<a string of 1 or 0 to enable/disable each OpenCL device in CUSTOM modes>
--single-run (run the benchmark, print the result to the stdout and exit)
  --single-run (run the benchmark, print the result to the stdout and exit)
--ext-info (print scene and image verification too with --single-run)
  --ext-info (print scene and image verification too with --single-run)


== Binaries ==
== Binaries ==


- Windows 64bit: https://github.com/LuxCoreRender/LuxMark/releases/download/luxmark_v3.1/luxmark-windows64-v3.1.zip (note: you may have to install VisualStudio 2013 C++ runtime => https://www.microsoft.com/en-US/download/details.aspx?id=40784)
- Windows 64bit: https://github.com/LuxCoreRender/LuxMark/releases/download/luxmark_v4.0alpha0/luxmark-v4.0alpha0-win64.zip ('''Note: you have to install the [https://aka.ms/vs/15/release/vc_redist.x64.exe Microsoft Visual C++ Redistributable for Visual Studio 2017] in order to run the Windows executable''')
 
- MacOS 64bit: https://github.com/LuxCoreRender/LuxMark/releases/download/luxmark_v3.1/luxmark-macos64-v3.1.zip


- Linux 64bit: https://github.com/LuxCoreRender/LuxMark/releases/download/luxmark_v3.1/luxmark-linux64-v3.1.tar.bz2
- Linux 64bit: https://github.com/LuxCoreRender/LuxMark/releases/download/luxmark_v4.0alpha0/luxmark-v4.0alpha0-linux64.tar.bz2 ('''Note: You have to install Qt5 from your distribution in order to run the Linux executable''')


== Compile from sources ==
== Compile from sources ==
Line 60: Line 66:
Some note to compile LuxMark:
Some note to compile LuxMark:


- the sources are available here: https://github.com/LuxCoreRender/LuxMark (tag: luxmark_v3.1)
- the sources are available here: https://github.com/LuxCoreRender/LuxMark (tag: luxmark_v4.0)


- LuxMark can be compiled exactly like LuxCoreRender. It has exactly the same dependencies (i.e. LuxCore, LuxRays, etc.). The procedure described in [https://github.com/LuxCoreRender/WindowsCompile|Windows repository] and [https://github.com/LuxCoreRender/LinuxCompile|Linux repository] can be used to compile LuxMark too.
- LuxMark can be compiled exactly like LuxCoreRender. It has exactly the same dependencies (i.e. LuxCore, LuxRays, etc.). The procedure described in [https://github.com/LuxCoreRender/WindowsCompile|Windows repository] and [https://github.com/LuxCoreRender/LinuxCompile|Linux repository] can be used to compile LuxMark too.


- the complete scenes directory is available here: https://github.com/LuxCoreRender/LuxMark/releases/download/luxmark_v4.0alpha0/scenes.tgz
- the complete scenes directory is available here: https://github.com/LuxCoreRender/LuxMark/releases/download/luxmark_v4.0alpha0/scenes.tgz

Latest revision as of 09:59, 8 October 2019

LuxMark v4.x

LuxMark is a OpenCL cross-platform benchmark tool and has become, over past years, one of the most used (if not the most used) OpenCL benchmark. It is intended as a promotional tool for LuxCoreRender and it is now based on LuxCore API, the LuxCoreRender v2.x C++ or Python API available under Apache Licence v2.0 and freely usable in open source and commercial applications.

Render engines

This release is based on LuxCoreRender v2.2 and includes benchmarks with the following rendering engines:

  • A micro-kernel based OpenCL path tracer with/without Global Illumination cache;
  • A C++ path tracer with/without Global Illumination cache. Ray intersection C++ code uses state-of-the-art Intel Embree;
  • An hybrid OpenCL for GPUs and C++ for CPUs path tracer with/without Global Illumination cache;
  • A C++ Bidirectional path tracer with a Metropolis–Hastings sampler.

Denoiser

LuxMark includes Intel OpenImageDenoise. A comparison between raw and denoised image is shown at the end of the benchmark or during the stress test. However Intel OpenImageDenoise is a CPU-only task and it is not part of the benchmark result.

LuxMark-v4-denoise.jpg

Stress mode

Aside from benchmarking modes, it is also available a stress mode to check the reliability of the hardware under heavy load. Hybrid OpenCL GPUs + C++ CPUs is well suited to put the maximum load possible on the system.

Benchmark Result Validation

LuxMark includes a validation of the rendered image by using the same technology used for pdiff in order to check if the benchmarked result is valid or something has gone wrong. It has also a validation of the scene sources used (i.e. hash of scene files).

Benchmark Scenes

Brute force path tracing (OpenCL, C++ and Hybrid)

The main LuxMark benchmark is a brute force path tracer (i.e. no cache used).

LuxMark-v4-bench1.png

Path tracing with GI cache (OpenCL, C++ and Hybrid)

The second LuxMark benchmark is a path tracer with global illumination cache. This rendering mode slightly simpler than pure brute force and may work better on some GPU.

LuxMark-v4-bench2.png

Bidirectional path tracing with Metropolis sampler (C++ only)

The last LuxMark benchmark is a bidirectional path tracer with a Metropolis–Hastings sampler. Due to its complexity and the serialize nature of Metropolis, this rendering mode is available only for CPUs.

LuxMark-v4-bench3.png

Command line options

Usage: ./bin/luxmark [options]
 --help (display this help and exit)
 --scene=FOOD|HALLBENCH|WALLPAPER (select the scene to use)
 --mode=BENCHMARK_OCL_GPU|BENCHMARK_OCL_CPUGPU|BENCHMARK_OCL_CPU|BENCHMARK_OCL_CUSTOM|BENCHMARK_HYBRID|BENCHMARK_HYBRID_CUSTOM|BENCHMARK_NATIVE|STRESSTEST_OCL_GPU|STRESSTEST_OCL_CPUGPU|STRESSTEST_OCL_CPU|STRESSTEST_HYBRID|STRESSTEST_NATIVE|DEMO_LUXCOREUI|PAUSE (select the mode to use)
 --devices=<a string of 1 or 0 to enable/disable each OpenCL device in CUSTOM modes>
 --single-run (run the benchmark, print the result to the stdout and exit)
 --ext-info (print scene and image verification too with --single-run)

Binaries

- Windows 64bit: https://github.com/LuxCoreRender/LuxMark/releases/download/luxmark_v4.0alpha0/luxmark-v4.0alpha0-win64.zip (Note: you have to install the Microsoft Visual C++ Redistributable for Visual Studio 2017 in order to run the Windows executable)

- Linux 64bit: https://github.com/LuxCoreRender/LuxMark/releases/download/luxmark_v4.0alpha0/luxmark-v4.0alpha0-linux64.tar.bz2 (Note: You have to install Qt5 from your distribution in order to run the Linux executable)

Compile from sources

Some note to compile LuxMark:

- the sources are available here: https://github.com/LuxCoreRender/LuxMark (tag: luxmark_v4.0)

- LuxMark can be compiled exactly like LuxCoreRender. It has exactly the same dependencies (i.e. LuxCore, LuxRays, etc.). The procedure described in repository and repository can be used to compile LuxMark too.

- the complete scenes directory is available here: https://github.com/LuxCoreRender/LuxMark/releases/download/luxmark_v4.0alpha0/scenes.tgz