aboutsummaryrefslogtreecommitdiff
path: root/Carpet/LoopControl/param.ccl
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