blob: 6bbd1abd58248974fcfb9782db296d78e0bee9b7 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
|
# Parameter definitions for thorn LoopControl
BOOLEAN verbose "Output some loop information at run time" STEERABLE=always
{
} "no"
BOOLEAN veryverbose "Output detailed debug information at run time" STEERABLE=always
{
} "no"
BOOLEAN selftest "Run a self test with every loop (expensive)" STEERABLE=always
{
} "no"
STRING statistics_filename "File name for LoopControl statistics" STEERABLE=always
{
"" :: "disable statistics output"
".+" :: "file name"
} "LoopControl-statistics"
REAL statistics_every_seconds "Output statistics every so many seconds" STEERABLE=always
{
-1.0 :: "don't output"
0.0:* :: "output every so many seconds"
} -1.0
SHARES: IO
USES STRING out_dir
PRIVATE:
KEYWORD initial_setup "Initial configuration" STEERABLE=always
{
"legacy" :: "Like a non-LoopControl loop"
"tiled" :: "Basic LoopControl setup"
} "tiled"
INT explore_eagerly_before_iteration "Try to explore the parameter space as much as possible before this iteration" STEERABLE=always
{
0:* :: ""
} 0
INT settle_after_iteration "Do not explore the parameter space any more at or after this iteration" STEERABLE=always
{
-1 :: "always continue exploring"
0:* :: ""
} -1
# NOTE:
# - Intel chips divide the D1 cache into two, one for each hyperthread.
# The cache is thus not shared!
BOOLEAN use_smt_threads "Place SMT threads close together" STEERABLE=always
{
} "yes"
BOOLEAN align_with_cachelines "Align innermost loops with cache line size" STEERABLE=always
{
} "yes"
INT tilesize_i "Tile size in i direction (in grid points) for loop tiling" STEERABLE=always
{
1:* :: ""
} 4
INT tilesize_j "Tile size in j direction (in grid points) for loop tiling" STEERABLE=always
{
1:* :: ""
} 4
INT tilesize_k "Tile size in k direction (in grid points) for loop tiling" STEERABLE=always
{
1:* :: ""
} 4
INT loopsize_i "Size of each thread's loop in i direction (in grid points) for multithreading" STEERABLE=always
{
1:* :: ""
} 8
INT loopsize_j "Size of each thread's loop in j direction (in grid points) for multithreading" STEERABLE=always
{
1:* :: ""
} 8
INT loopsize_k "Size of each thread's loop in k direction (in grid points) for multithreading" STEERABLE=always
{
1:* :: ""
} 8
CCTK_INT max_size_factor "Maximum size for modifying loop sizes" STEERABLE=always
{
1:* :: ""
} 4
CCTK_REAL very_expensive_factor "Params worse than the current-best by more than this factor are ignored more quickly" STEERABLE=always
{
1.0:* :: ""
} 1.5
CCTK_INT tryout_iterations "Try out new params for this many iterations before judging them" STEERABLE=always
{
1:* :: ""
} 1
CCTK_REAL random_jump_probability "Probability of a random jump to begin exploring a very different param" STEERABLE=always
{
0.0:1.0 :: ""
} 0.1
|