Cycles: Support multithreaded compilation of kernels

This patch implements a workaround to get the multithreaded compilation from D2231 working.
So far, it only works for Blender, not for Cycles Standalone. Also, I have only tested the Linux codepath in the helper function.
Depends on D2231.

Patch by lukasstockner97, jbakker, brecht

    job    |   scene_name    | compilation_time
----------+-----------------+------------------
    Baseline | empty           |            22.73
    D2264    | empty           |            13.94
    Baseline | bmw             |            56.44
    D2264    | bmw             |            41.32
    Baseline | fishycat        |            59.50
    D2264    | fishycat        |            45.19
    Baseline | barbershop      |           212.28
    D2264    | barbershop      |           169.81
    Baseline | victor          |            67.51
    D2264    | victor          |            53.60
    Baseline | classroom       |            51.46
    D2264    | classroom       |            39.02
    Baseline | koro            |            62.48
    D2264    | koro            |            49.03
    Baseline | pavillion       |            54.37
    D2264    | pavillion       |            38.82
    Baseline | splash279       |            47.43
    D2264    | splash279       |            37.94
    Baseline | volume_emission |           145.22
    D2264    | volume_emission |           121.10

This patch reduced compilation time as the split kernels and base
kernels are compiled in parallel. In cycles debug mode (256) you can set
unmark the opencl single program file, what reduces the compilation time
even further (bmw 17 seconds, barbershop 53 seconds).

Reviewers: brecht, dingto, sergey, juicyfruit, lukasstockner97

Reviewed By: brecht

Subscribers: Loner, jbakker, candreacchio, 3dLuver, LazyDodo, bliblubli

Differential Revision: https://developer.blender.org/D2264
This commit is contained in:
2019-02-15 08:18:38 +01:00
committed by Jeroen Bakker
parent de0e456a6c
commit 9800837b98
12 changed files with 419 additions and 44 deletions

View File

@@ -22,6 +22,9 @@
#include <numaapi.h>
#include <OpenImageIO/sysutil.h>
OIIO_NAMESPACE_USING
#ifdef _WIN32
# if(!defined(FREE_WINDOWS))
# include <intrin.h>
@@ -329,6 +332,25 @@ bool system_cpu_support_avx2()
#endif
bool system_call_self(const vector<string>& args)
{
/* Escape program and arguments in case they contain spaces. */
string cmd = "\"" + Sysutil::this_program_path() + "\"";
for(int i = 0; i < args.size(); i++) {
cmd += " \"" + args[i] + "\"";
}
/* Quiet output. */
#ifdef _WIN32
cmd += " > nul";
#else
cmd += " > /dev/null";
#endif
return (system(cmd.c_str()) == 0);
}
size_t system_physical_ram()
{
#ifdef _WIN32