Changeset View
Changeset View
Standalone View
Standalone View
intern/cycles/util/util_debug.cpp
| Show All 20 Lines | |||||
| #include "bvh/bvh_params.h" | #include "bvh/bvh_params.h" | ||||
| #include "util/util_logging.h" | #include "util/util_logging.h" | ||||
| #include "util/util_string.h" | #include "util/util_string.h" | ||||
| CCL_NAMESPACE_BEGIN | CCL_NAMESPACE_BEGIN | ||||
| DebugFlags::CPU::CPU() | DebugFlags::CPU::CPU() | ||||
| : avx2(true), | : avx2(true), avx(true), sse41(true), sse3(true), sse2(true), bvh_layout(BVH_LAYOUT_AUTO) | ||||
| avx(true), | |||||
| sse41(true), | |||||
| sse3(true), | |||||
| sse2(true), | |||||
| bvh_layout(BVH_LAYOUT_AUTO), | |||||
| split_kernel(false) | |||||
| { | { | ||||
| reset(); | reset(); | ||||
| } | } | ||||
| void DebugFlags::CPU::reset() | void DebugFlags::CPU::reset() | ||||
| { | { | ||||
| #define STRINGIFY(x) #x | #define STRINGIFY(x) #x | ||||
| #define CHECK_CPU_FLAGS(flag, env) \ | #define CHECK_CPU_FLAGS(flag, env) \ | ||||
| Show All 9 Lines | #define CHECK_CPU_FLAGS(flag, env) \ | ||||
| CHECK_CPU_FLAGS(sse41, "CYCLES_CPU_NO_SSE41"); | CHECK_CPU_FLAGS(sse41, "CYCLES_CPU_NO_SSE41"); | ||||
| CHECK_CPU_FLAGS(sse3, "CYCLES_CPU_NO_SSE3"); | CHECK_CPU_FLAGS(sse3, "CYCLES_CPU_NO_SSE3"); | ||||
| CHECK_CPU_FLAGS(sse2, "CYCLES_CPU_NO_SSE2"); | CHECK_CPU_FLAGS(sse2, "CYCLES_CPU_NO_SSE2"); | ||||
| #undef STRINGIFY | #undef STRINGIFY | ||||
| #undef CHECK_CPU_FLAGS | #undef CHECK_CPU_FLAGS | ||||
| bvh_layout = BVH_LAYOUT_AUTO; | bvh_layout = BVH_LAYOUT_AUTO; | ||||
| split_kernel = false; | |||||
| } | } | ||||
| DebugFlags::CUDA::CUDA() : adaptive_compile(false), split_kernel(false) | DebugFlags::CUDA::CUDA() : adaptive_compile(false) | ||||
| { | { | ||||
| reset(); | reset(); | ||||
| } | } | ||||
| void DebugFlags::CUDA::reset() | void DebugFlags::CUDA::reset() | ||||
| { | { | ||||
| if (getenv("CYCLES_CUDA_ADAPTIVE_COMPILE") != NULL) | if (getenv("CYCLES_CUDA_ADAPTIVE_COMPILE") != NULL) | ||||
| adaptive_compile = true; | adaptive_compile = true; | ||||
| split_kernel = false; | |||||
| } | } | ||||
| DebugFlags::OptiX::OptiX() | DebugFlags::OptiX::OptiX() | ||||
| { | { | ||||
| reset(); | reset(); | ||||
| } | } | ||||
| void DebugFlags::OptiX::reset() | void DebugFlags::OptiX::reset() | ||||
| { | { | ||||
| cuda_streams = 1; | use_debug = false; | ||||
| curves_api = false; | |||||
| } | |||||
| DebugFlags::OpenCL::OpenCL() : device_type(DebugFlags::OpenCL::DEVICE_ALL), debug(false) | |||||
| { | |||||
| reset(); | |||||
| } | |||||
| void DebugFlags::OpenCL::reset() | |||||
| { | |||||
| /* Initialize device type from environment variables. */ | |||||
| device_type = DebugFlags::OpenCL::DEVICE_ALL; | |||||
| char *device = getenv("CYCLES_OPENCL_TEST"); | |||||
| if (device) { | |||||
| if (strcmp(device, "NONE") == 0) { | |||||
| device_type = DebugFlags::OpenCL::DEVICE_NONE; | |||||
| } | |||||
| else if (strcmp(device, "ALL") == 0) { | |||||
| device_type = DebugFlags::OpenCL::DEVICE_ALL; | |||||
| } | |||||
| else if (strcmp(device, "DEFAULT") == 0) { | |||||
| device_type = DebugFlags::OpenCL::DEVICE_DEFAULT; | |||||
| } | |||||
| else if (strcmp(device, "CPU") == 0) { | |||||
| device_type = DebugFlags::OpenCL::DEVICE_CPU; | |||||
| } | |||||
| else if (strcmp(device, "GPU") == 0) { | |||||
| device_type = DebugFlags::OpenCL::DEVICE_GPU; | |||||
| } | |||||
| else if (strcmp(device, "ACCELERATOR") == 0) { | |||||
| device_type = DebugFlags::OpenCL::DEVICE_ACCELERATOR; | |||||
| } | |||||
| } | |||||
| /* Initialize other flags from environment variables. */ | |||||
| debug = (getenv("CYCLES_OPENCL_DEBUG") != NULL); | |||||
| } | } | ||||
| DebugFlags::DebugFlags() : viewport_static_bvh(false), running_inside_blender(false) | DebugFlags::DebugFlags() : viewport_static_bvh(false), running_inside_blender(false) | ||||
| { | { | ||||
| /* Nothing for now. */ | /* Nothing for now. */ | ||||
| } | } | ||||
| void DebugFlags::reset() | void DebugFlags::reset() | ||||
| { | { | ||||
| viewport_static_bvh = false; | viewport_static_bvh = false; | ||||
| cpu.reset(); | cpu.reset(); | ||||
| cuda.reset(); | cuda.reset(); | ||||
| optix.reset(); | optix.reset(); | ||||
| opencl.reset(); | |||||
| } | } | ||||
| std::ostream &operator<<(std::ostream &os, DebugFlagsConstRef debug_flags) | std::ostream &operator<<(std::ostream &os, DebugFlagsConstRef debug_flags) | ||||
| { | { | ||||
| os << "CPU flags:\n" | os << "CPU flags:\n" | ||||
| << " AVX2 : " << string_from_bool(debug_flags.cpu.avx2) << "\n" | << " AVX2 : " << string_from_bool(debug_flags.cpu.avx2) << "\n" | ||||
| << " AVX : " << string_from_bool(debug_flags.cpu.avx) << "\n" | << " AVX : " << string_from_bool(debug_flags.cpu.avx) << "\n" | ||||
| << " SSE4.1 : " << string_from_bool(debug_flags.cpu.sse41) << "\n" | << " SSE4.1 : " << string_from_bool(debug_flags.cpu.sse41) << "\n" | ||||
| << " SSE3 : " << string_from_bool(debug_flags.cpu.sse3) << "\n" | << " SSE3 : " << string_from_bool(debug_flags.cpu.sse3) << "\n" | ||||
| << " SSE2 : " << string_from_bool(debug_flags.cpu.sse2) << "\n" | << " SSE2 : " << string_from_bool(debug_flags.cpu.sse2) << "\n" | ||||
| << " BVH layout : " << bvh_layout_name(debug_flags.cpu.bvh_layout) << "\n" | << " BVH layout : " << bvh_layout_name(debug_flags.cpu.bvh_layout) << "\n"; | ||||
| << " Split : " << string_from_bool(debug_flags.cpu.split_kernel) << "\n"; | |||||
| os << "CUDA flags:\n" | os << "CUDA flags:\n" | ||||
| << " Adaptive Compile : " << string_from_bool(debug_flags.cuda.adaptive_compile) << "\n"; | << " Adaptive Compile : " << string_from_bool(debug_flags.cuda.adaptive_compile) << "\n"; | ||||
| os << "OptiX flags:\n" | os << "OptiX flags:\n" | ||||
| << " CUDA streams : " << debug_flags.optix.cuda_streams << "\n"; | << " Debug : " << string_from_bool(debug_flags.optix.use_debug) << "\n"; | ||||
| const char *opencl_device_type; | |||||
| switch (debug_flags.opencl.device_type) { | |||||
| case DebugFlags::OpenCL::DEVICE_NONE: | |||||
| opencl_device_type = "NONE"; | |||||
| break; | |||||
| case DebugFlags::OpenCL::DEVICE_ALL: | |||||
| opencl_device_type = "ALL"; | |||||
| break; | |||||
| case DebugFlags::OpenCL::DEVICE_DEFAULT: | |||||
| opencl_device_type = "DEFAULT"; | |||||
| break; | |||||
| case DebugFlags::OpenCL::DEVICE_CPU: | |||||
| opencl_device_type = "CPU"; | |||||
| break; | |||||
| case DebugFlags::OpenCL::DEVICE_GPU: | |||||
| opencl_device_type = "GPU"; | |||||
| break; | |||||
| case DebugFlags::OpenCL::DEVICE_ACCELERATOR: | |||||
| opencl_device_type = "ACCELERATOR"; | |||||
| break; | |||||
| } | |||||
| os << "OpenCL flags:\n" | |||||
| << " Device type : " << opencl_device_type << "\n" | |||||
| << " Debug : " << string_from_bool(debug_flags.opencl.debug) << "\n" | |||||
| << " Memory limit : " << string_human_readable_size(debug_flags.opencl.mem_limit) << "\n"; | |||||
| return os; | return os; | ||||
| } | } | ||||
| CCL_NAMESPACE_END | CCL_NAMESPACE_END | ||||