Page MenuHome

WIP: Cycles architecture testing.
Needs ReviewPublic

Authored by LazyDodo (LazyDodo) on Tue, Aug 27, 2:30 AM.

Details

Summary

By default only the 'host' will be tested, this is identical to the current setup
however by setting to CYCLESTEST_KERNELS environment variable to a comma separated
list, the following kernels can be exercised as well.

host
sse2
sse3
sse41
avx
avx2
cuda
opencl
osl

Open Issues:

  1. Reference images

Currently they all compare against the same reference image
which is not ideal, OSL tends to have mip mapping differences
and CUDA/OpenCL tends to have noise differences, not sure
how we want to deal with that, every kernel their own reference
image? Also there are a few specific OSL tests which naturally
will fail on all others, I think we can remove those if OSL
is able to run the whole test suite and has it's own reference
images.

  1. OpenCL

Somewhere along the way in the last year we broke OpenCL on nvidia
using the debug menu to force it to show up, just doesn't work
any-more. @MaiLavelle has tracked it down to rB949ab753bb2. I had
to hack around a bit in the code to get this to work, hack was
too dirty to include here, this should be fixed at one point but
I'm leaning towards that being out of scope for this diff.

  1. Silent substitutions

Asking blender/cycles to do things it can't causes it to silently
substitute something else. Asking it to do do an OpenCL render and
it's not available? It'll silently render on the CPU. Asking to
render with AVX2 on an AVX system? It'll silently downgrade the kernel.
Rendering with just the SSE41 CPU flags on, expecting an SSE41 render?
nope, SSE2+3 need to be on as well and it silently picks the 'default'
kernel. I'm not thrilled with any of this, but once more leaning towards
out of scope here though.

  1. Guess reporting could be a little nicer while it is running the tests

since it now seems it just runs the same test over and over for no apparent
reason.

Posting a WIP since I'd like some feedback how to deal with 1, but
insights on the other points would be welcome as well.

Diff Detail

Repository
rB Blender
Branch
tmp_arch_testing (branched from master)
Build Status
Buildable 4608
Build 4608: arc lint + arc unit