Blender
V5.0
intern
cycles
util
debug.cpp
Go to the documentation of this file.
1
/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation
2
*
3
* SPDX-License-Identifier: Apache-2.0 */
4
5
#include "
util/debug.h
"
6
7
#include <cstdlib>
8
9
#include "
util/log.h
"
10
11
CCL_NAMESPACE_BEGIN
12
13
DebugFlags::CPU::CPU
()
14
{
15
reset
();
16
}
17
18
void
DebugFlags::CPU::reset
()
19
{
20
#define STRINGIFY(x) #x
21
#define CHECK_CPU_FLAGS(flag, env) \
22
do { \
23
flag = (getenv(env) == nullptr); \
24
if (!flag) { \
25
LOG_INFO << "Disabling " << STRINGIFY(flag) << " instruction set."; \
26
} \
27
} while (0)
28
29
CHECK_CPU_FLAGS
(
avx2
,
"CYCLES_CPU_NO_AVX2"
);
30
31
#undef STRINGIFY
32
#undef CHECK_CPU_FLAGS
33
34
bvh_layout
=
BVH_LAYOUT_AUTO
;
35
}
36
37
DebugFlags::CUDA::CUDA
()
38
{
39
reset
();
40
}
41
42
DebugFlags::HIP::HIP
()
43
{
44
reset
();
45
}
46
47
DebugFlags::Metal::Metal
()
48
{
49
reset
();
50
}
51
52
void
DebugFlags::CUDA::reset
()
53
{
54
if
(getenv(
"CYCLES_CUDA_ADAPTIVE_COMPILE"
) !=
nullptr
) {
55
adaptive_compile
=
true
;
56
}
57
}
58
59
void
DebugFlags::HIP::reset
()
60
{
61
if
(getenv(
"CYCLES_HIP_ADAPTIVE_COMPILE"
) !=
nullptr
) {
62
adaptive_compile
=
true
;
63
}
64
}
65
66
void
DebugFlags::Metal::reset
()
67
{
68
if
(getenv(
"CYCLES_METAL_ADAPTIVE_COMPILE"
) !=
nullptr
) {
69
adaptive_compile
=
true
;
70
}
71
72
if
(
const
char
*
str
= getenv(
"CYCLES_METAL_LOCAL_ATOMIC_SORT"
)) {
73
use_local_atomic_sort
= (atoi(
str
) != 0);
74
}
75
76
if
(
const
char
*
str
= getenv(
"CYCLES_METAL_NANOVDB"
)) {
77
use_nanovdb
= (atoi(
str
) != 0);
78
}
79
80
if
(
const
char
*
str
= getenv(
"CYCLES_METAL_ASYNC_PSO_CREATION"
)) {
81
use_async_pso_creation
= (atoi(
str
) != 0);
82
}
83
84
if
(
const
char
*
str
= getenv(
"CYCLES_METALRT_PCMI"
)) {
85
use_metalrt_pcmi
= (atoi(
str
) != 0);
86
}
87
}
88
89
DebugFlags::OptiX::OptiX
()
90
{
91
reset
();
92
}
93
94
void
DebugFlags::OptiX::reset
()
95
{
96
use_debug
=
false
;
97
}
98
99
void
DebugFlags::reset
()
100
{
101
cpu
.reset();
102
cuda
.reset();
103
optix
.reset();
104
metal
.reset();
105
}
106
107
CCL_NAMESPACE_END
DebugFlags::cpu
CPU cpu
Definition
debug.h:120
DebugFlags::reset
void reset()
Definition
debug.cpp:99
DebugFlags::optix
OptiX optix
Definition
debug.h:126
DebugFlags::cuda
CUDA cuda
Definition
debug.h:123
DebugFlags::metal
Metal metal
Definition
debug.h:132
CHECK_CPU_FLAGS
#define CHECK_CPU_FLAGS(flag, env)
debug.h
CCL_NAMESPACE_END
#define CCL_NAMESPACE_END
Definition
device/cuda/compat.h:10
str
#define str(s)
Definition
ffmpeg_codecs.cc:103
BVH_LAYOUT_AUTO
@ BVH_LAYOUT_AUTO
Definition
kernel/types.h:1423
log.h
CCL_NAMESPACE_BEGIN
Definition
python.cpp:37
DebugFlags::CPU::CPU
CPU()
Definition
debug.cpp:13
DebugFlags::CPU::avx2
bool avx2
Definition
debug.h:27
DebugFlags::CPU::reset
void reset()
Definition
debug.cpp:18
DebugFlags::CPU::bvh_layout
BVHLayout bvh_layout
Definition
debug.h:47
DebugFlags::CUDA::adaptive_compile
bool adaptive_compile
Definition
debug.h:59
DebugFlags::CUDA::reset
void reset()
Definition
debug.cpp:52
DebugFlags::CUDA::CUDA
CUDA()
Definition
debug.cpp:37
DebugFlags::HIP::adaptive_compile
bool adaptive_compile
Definition
debug.h:70
DebugFlags::HIP::reset
void reset()
Definition
debug.cpp:59
DebugFlags::HIP::HIP
HIP()
Definition
debug.cpp:42
DebugFlags::Metal::use_async_pso_creation
bool use_async_pso_creation
Definition
debug.h:102
DebugFlags::Metal::use_metalrt_pcmi
bool use_metalrt_pcmi
Definition
debug.h:106
DebugFlags::Metal::reset
void reset()
Definition
debug.cpp:66
DebugFlags::Metal::Metal
Metal()
Definition
debug.cpp:47
DebugFlags::Metal::adaptive_compile
bool adaptive_compile
Definition
debug.h:93
DebugFlags::Metal::use_nanovdb
bool use_nanovdb
Definition
debug.h:99
DebugFlags::Metal::use_local_atomic_sort
bool use_local_atomic_sort
Definition
debug.h:96
DebugFlags::OptiX::OptiX
OptiX()
Definition
debug.cpp:89
DebugFlags::OptiX::use_debug
bool use_debug
Definition
debug.h:82
DebugFlags::OptiX::reset
void reset()
Definition
debug.cpp:94
Generated on
for Blender by
doxygen
1.16.1