author | wenzelm |
Wed, 12 Feb 2025 13:32:04 +0100 | |
changeset 82145 | 5b8639cb0d11 |
parent 82125 | f6460ae54866 |
permissions | -rw-r--r-- |
78414 | 1 |
/* Title: Pure/Tools/profiling.scala |
78315 | 2 |
Author: Makarius |
78314
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
3 |
|
78315 | 4 |
Build sessions for profiling of ML heap content. |
78314
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
5 |
*/ |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
6 |
|
78315 | 7 |
package isabelle |
78314
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
8 |
|
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
9 |
|
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
10 |
import java.util.Locale |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
11 |
|
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
12 |
|
78315 | 13 |
object Profiling { |
78314
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
14 |
/* percentage: precision in permille */ |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
15 |
|
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
16 |
def percentage(a: Long, b: Long): Percentage = |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
17 |
new Percentage(if (b == 0L) 0 else ((a.toDouble / b.toDouble) * 1000.0).round.toInt) |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
18 |
|
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
19 |
def percentage(a: Int, b: Int): Percentage = percentage(a.toLong, b.toLong) |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
20 |
|
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
21 |
def percentage_space(a: Space, b: Space): Percentage = percentage(a.bytes, b.bytes) |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
22 |
|
78315 | 23 |
final class Percentage private[Profiling](val permille: Int) extends AnyVal { |
78314
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
24 |
def percent: Double = permille.toDouble / 10 |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
25 |
|
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
26 |
override def toString: String = (permille / 10).toString + "." + (permille % 10).toString + "%" |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
27 |
} |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
28 |
|
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
29 |
|
78328
007b04dc6f96
clarified session_statistics: removed somewhat pointless per-theory statistics;
wenzelm
parents:
78315
diff
changeset
|
30 |
/* session statistics */ |
78314
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
31 |
|
78328
007b04dc6f96
clarified session_statistics: removed somewhat pointless per-theory statistics;
wenzelm
parents:
78315
diff
changeset
|
32 |
sealed case class Session_Statistics( |
007b04dc6f96
clarified session_statistics: removed somewhat pointless per-theory statistics;
wenzelm
parents:
78315
diff
changeset
|
33 |
theories: Int = 0, |
78450 | 34 |
garbage_theories: Int = 0, |
78314
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
35 |
locales: Int = 0, |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
36 |
locale_thms: Int = 0, |
78328
007b04dc6f96
clarified session_statistics: removed somewhat pointless per-theory statistics;
wenzelm
parents:
78315
diff
changeset
|
37 |
global_thms: Int = 0, |
78314
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
38 |
sizeof_thys_id: Space = Space.zero, |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
39 |
sizeof_thms_id: Space = Space.zero, |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
40 |
sizeof_terms: Space = Space.zero, |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
41 |
sizeof_types: Space = Space.zero, |
79095 | 42 |
sizeof_names: Space = Space.zero, |
78314
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
43 |
sizeof_spaces: Space = Space.zero) |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
44 |
|
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
45 |
object Statistics { |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
46 |
private val encode_args: XML.Encode.T[List[String]] = |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
47 |
(args: List[String]) => |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
48 |
{ import XML.Encode._; list(string)(args) } |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
49 |
|
78328
007b04dc6f96
clarified session_statistics: removed somewhat pointless per-theory statistics;
wenzelm
parents:
78315
diff
changeset
|
50 |
private val decode_result: XML.Decode.T[Session_Statistics] = |
78314
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
51 |
(body: XML.Body) => |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
52 |
{ |
79095 | 53 |
val (a, (b, (c, (d, (e, (f, (g, (h, (i, (j, k)))))))))) = { |
78314
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
54 |
import XML.Decode._ |
78450 | 55 |
pair(int, pair(int, pair(int, pair(int, pair(int, |
79095 | 56 |
pair(long, pair(long, pair(long, pair(long, pair(long, long))))))))))(body) |
78314
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
57 |
} |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
58 |
Session_Statistics( |
78328
007b04dc6f96
clarified session_statistics: removed somewhat pointless per-theory statistics;
wenzelm
parents:
78315
diff
changeset
|
59 |
theories = a, |
78450 | 60 |
garbage_theories = b, |
61 |
locales = c, |
|
62 |
locale_thms = d, |
|
63 |
global_thms = e, |
|
64 |
sizeof_thys_id = Space.bytes(f), |
|
65 |
sizeof_thms_id = Space.bytes(g), |
|
66 |
sizeof_terms = Space.bytes(h), |
|
67 |
sizeof_types = Space.bytes(i), |
|
79095 | 68 |
sizeof_names = Space.bytes(j), |
69 |
sizeof_spaces = Space.bytes(k)) |
|
78314
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
70 |
} |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
71 |
|
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
72 |
def make( |
78315 | 73 |
store: Store, |
74 |
session_background: Sessions.Background, |
|
78328
007b04dc6f96
clarified session_statistics: removed somewhat pointless per-theory statistics;
wenzelm
parents:
78315
diff
changeset
|
75 |
parent: Option[Statistics] = None |
78314
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
76 |
): Statistics = { |
78315 | 77 |
val session_base = session_background.base |
78314
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
78 |
val session_name = session_base.session_name |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
79 |
|
78328
007b04dc6f96
clarified session_statistics: removed somewhat pointless per-theory statistics;
wenzelm
parents:
78315
diff
changeset
|
80 |
val session = { |
007b04dc6f96
clarified session_statistics: removed somewhat pointless per-theory statistics;
wenzelm
parents:
78315
diff
changeset
|
81 |
val args = session_base.used_theories.map(p => p._1.theory) |
78314
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
82 |
val eval_args = |
78315 | 83 |
List("--eval", "use_thy " + ML_Syntax.print_string_bytes("~~/src/Tools/Profiling")) |
84 |
Isabelle_System.with_tmp_dir("profiling") { dir => |
|
85 |
val put_env = List("ISABELLE_PROFILING" -> dir.implode) |
|
78314
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
86 |
File.write(dir + Path.explode("args.yxml"), YXML.string_of_body(encode_args(args))) |
78315 | 87 |
val session_heaps = |
88 |
ML_Process.session_heaps(store, session_background, logic = session_name) |
|
89 |
ML_Process(store.options, session_background, session_heaps, args = eval_args, |
|
78314
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
90 |
env = Isabelle_System.settings(put_env)).result().check |
80480
972f7a4cdc0e
clarified YXML.Source: more direct support for String and Bytes, instead of CharSequence;
wenzelm
parents:
79674
diff
changeset
|
91 |
decode_result(YXML.parse_body(Bytes.read(dir + Path.explode("result.yxml")))) |
78314
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
92 |
} |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
93 |
} |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
94 |
|
78328
007b04dc6f96
clarified session_statistics: removed somewhat pointless per-theory statistics;
wenzelm
parents:
78315
diff
changeset
|
95 |
new Statistics(parent = parent, session = session_name, |
007b04dc6f96
clarified session_statistics: removed somewhat pointless per-theory statistics;
wenzelm
parents:
78315
diff
changeset
|
96 |
theories = session.theories, |
78450 | 97 |
garbage_theories = session.garbage_theories, |
78328
007b04dc6f96
clarified session_statistics: removed somewhat pointless per-theory statistics;
wenzelm
parents:
78315
diff
changeset
|
98 |
locales = session.locales, |
007b04dc6f96
clarified session_statistics: removed somewhat pointless per-theory statistics;
wenzelm
parents:
78315
diff
changeset
|
99 |
locale_thms = session.locale_thms, |
007b04dc6f96
clarified session_statistics: removed somewhat pointless per-theory statistics;
wenzelm
parents:
78315
diff
changeset
|
100 |
global_thms = session.global_thms, |
79674 | 101 |
heap_size = File.space(store.get_session(session_name).the_heap), |
78314
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
102 |
thys_id_size = session.sizeof_thys_id, |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
103 |
thms_id_size = session.sizeof_thms_id, |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
104 |
terms_size = session.sizeof_terms, |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
105 |
types_size = session.sizeof_types, |
79095 | 106 |
names_size = session.sizeof_names, |
78314
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
107 |
spaces_size = session.sizeof_spaces) |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
108 |
} |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
109 |
|
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
110 |
val empty: Statistics = new Statistics() |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
111 |
|
78328
007b04dc6f96
clarified session_statistics: removed somewhat pointless per-theory statistics;
wenzelm
parents:
78315
diff
changeset
|
112 |
val header0: List[String] = |
007b04dc6f96
clarified session_statistics: removed somewhat pointless per-theory statistics;
wenzelm
parents:
78315
diff
changeset
|
113 |
List( |
78452 | 114 |
"named_theories", |
115 |
"total_theories", |
|
78328
007b04dc6f96
clarified session_statistics: removed somewhat pointless per-theory statistics;
wenzelm
parents:
78315
diff
changeset
|
116 |
"locales", |
007b04dc6f96
clarified session_statistics: removed somewhat pointless per-theory statistics;
wenzelm
parents:
78315
diff
changeset
|
117 |
"locale_thms", |
007b04dc6f96
clarified session_statistics: removed somewhat pointless per-theory statistics;
wenzelm
parents:
78315
diff
changeset
|
118 |
"global_thms", |
78329 | 119 |
"locale_thms%", |
120 |
"global_thms%", |
|
78328
007b04dc6f96
clarified session_statistics: removed somewhat pointless per-theory statistics;
wenzelm
parents:
78315
diff
changeset
|
121 |
"heap_size", |
78329 | 122 |
"thys_id_size%", |
123 |
"thms_id_size%", |
|
124 |
"terms_size%", |
|
125 |
"types_size%", |
|
79095 | 126 |
"names_size%", |
78329 | 127 |
"spaces_size%") |
78328
007b04dc6f96
clarified session_statistics: removed somewhat pointless per-theory statistics;
wenzelm
parents:
78315
diff
changeset
|
128 |
|
78330 | 129 |
def header: List[String] = |
82125 | 130 |
"session" :: header0.flatMap(a => List(a, Symbol.decode("""\<Sum>""") + a)) |
78314
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
131 |
} |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
132 |
|
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
133 |
final class Statistics private( |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
134 |
val parent: Option[Statistics] = None, |
78328
007b04dc6f96
clarified session_statistics: removed somewhat pointless per-theory statistics;
wenzelm
parents:
78315
diff
changeset
|
135 |
val session: String = "", |
007b04dc6f96
clarified session_statistics: removed somewhat pointless per-theory statistics;
wenzelm
parents:
78315
diff
changeset
|
136 |
val theories: Int = 0, |
78450 | 137 |
val garbage_theories: Int = 0, |
78328
007b04dc6f96
clarified session_statistics: removed somewhat pointless per-theory statistics;
wenzelm
parents:
78315
diff
changeset
|
138 |
val locales: Int = 0, |
007b04dc6f96
clarified session_statistics: removed somewhat pointless per-theory statistics;
wenzelm
parents:
78315
diff
changeset
|
139 |
val locale_thms: Int = 0, |
007b04dc6f96
clarified session_statistics: removed somewhat pointless per-theory statistics;
wenzelm
parents:
78315
diff
changeset
|
140 |
val global_thms: Int = 0, |
78314
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
141 |
val heap_size: Space = Space.zero, |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
142 |
val thys_id_size: Space = Space.zero, |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
143 |
val thms_id_size: Space = Space.zero, |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
144 |
val terms_size: Space = Space.zero, |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
145 |
val types_size: Space = Space.zero, |
79095 | 146 |
val names_size: Space = Space.zero, |
78314
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
147 |
val spaces_size: Space = Space.zero |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
148 |
) { |
78452 | 149 |
private def print_total_theories: String = |
150 |
if (theories == 0) "0" |
|
151 |
else { |
|
152 |
val x = (theories + garbage_theories).toDouble / theories |
|
153 |
String.format(Locale.ROOT, "%.1f", x.asInstanceOf[AnyRef]) |
|
154 |
} |
|
78450 | 155 |
|
78314
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
156 |
private def size_percentage(space: Space): Percentage = |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
157 |
percentage_space(space, heap_size) |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
158 |
|
78328
007b04dc6f96
clarified session_statistics: removed somewhat pointless per-theory statistics;
wenzelm
parents:
78315
diff
changeset
|
159 |
private def thms_percentage(thms: Int): Percentage = |
007b04dc6f96
clarified session_statistics: removed somewhat pointless per-theory statistics;
wenzelm
parents:
78315
diff
changeset
|
160 |
percentage(thms, locale_thms + global_thms) |
78314
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
161 |
|
78330 | 162 |
val fields0: List[Any] = |
78328
007b04dc6f96
clarified session_statistics: removed somewhat pointless per-theory statistics;
wenzelm
parents:
78315
diff
changeset
|
163 |
List( |
007b04dc6f96
clarified session_statistics: removed somewhat pointless per-theory statistics;
wenzelm
parents:
78315
diff
changeset
|
164 |
theories, |
78452 | 165 |
print_total_theories, |
78328
007b04dc6f96
clarified session_statistics: removed somewhat pointless per-theory statistics;
wenzelm
parents:
78315
diff
changeset
|
166 |
locales, |
007b04dc6f96
clarified session_statistics: removed somewhat pointless per-theory statistics;
wenzelm
parents:
78315
diff
changeset
|
167 |
locale_thms, |
007b04dc6f96
clarified session_statistics: removed somewhat pointless per-theory statistics;
wenzelm
parents:
78315
diff
changeset
|
168 |
global_thms, |
007b04dc6f96
clarified session_statistics: removed somewhat pointless per-theory statistics;
wenzelm
parents:
78315
diff
changeset
|
169 |
thms_percentage(locale_thms).toString, |
007b04dc6f96
clarified session_statistics: removed somewhat pointless per-theory statistics;
wenzelm
parents:
78315
diff
changeset
|
170 |
thms_percentage(global_thms).toString, |
007b04dc6f96
clarified session_statistics: removed somewhat pointless per-theory statistics;
wenzelm
parents:
78315
diff
changeset
|
171 |
heap_size.print, |
007b04dc6f96
clarified session_statistics: removed somewhat pointless per-theory statistics;
wenzelm
parents:
78315
diff
changeset
|
172 |
size_percentage(thys_id_size).toString, |
007b04dc6f96
clarified session_statistics: removed somewhat pointless per-theory statistics;
wenzelm
parents:
78315
diff
changeset
|
173 |
size_percentage(thms_id_size).toString, |
007b04dc6f96
clarified session_statistics: removed somewhat pointless per-theory statistics;
wenzelm
parents:
78315
diff
changeset
|
174 |
size_percentage(terms_size).toString, |
007b04dc6f96
clarified session_statistics: removed somewhat pointless per-theory statistics;
wenzelm
parents:
78315
diff
changeset
|
175 |
size_percentage(types_size).toString, |
79095 | 176 |
size_percentage(names_size).toString, |
78328
007b04dc6f96
clarified session_statistics: removed somewhat pointless per-theory statistics;
wenzelm
parents:
78315
diff
changeset
|
177 |
size_percentage(spaces_size).toString) |
007b04dc6f96
clarified session_statistics: removed somewhat pointless per-theory statistics;
wenzelm
parents:
78315
diff
changeset
|
178 |
|
78330 | 179 |
def fields: List[Any] = |
180 |
session :: fields0.zipWithIndex.flatMap({ case (a, i) => List(a, cumulative.fields0(i)) }) |
|
78314
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
181 |
|
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
182 |
lazy val cumulative: Statistics = |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
183 |
parent match { |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
184 |
case None => this |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
185 |
case Some(other) => |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
186 |
new Statistics(parent = None, |
78328
007b04dc6f96
clarified session_statistics: removed somewhat pointless per-theory statistics;
wenzelm
parents:
78315
diff
changeset
|
187 |
session = session, |
007b04dc6f96
clarified session_statistics: removed somewhat pointless per-theory statistics;
wenzelm
parents:
78315
diff
changeset
|
188 |
theories = other.cumulative.theories + theories, |
78450 | 189 |
garbage_theories = other.cumulative.garbage_theories + garbage_theories, |
78328
007b04dc6f96
clarified session_statistics: removed somewhat pointless per-theory statistics;
wenzelm
parents:
78315
diff
changeset
|
190 |
locales = other.cumulative.locales + locales, |
007b04dc6f96
clarified session_statistics: removed somewhat pointless per-theory statistics;
wenzelm
parents:
78315
diff
changeset
|
191 |
locale_thms = other.cumulative.locale_thms + locale_thms, |
007b04dc6f96
clarified session_statistics: removed somewhat pointless per-theory statistics;
wenzelm
parents:
78315
diff
changeset
|
192 |
global_thms = other.cumulative.global_thms + global_thms, |
78314
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
193 |
heap_size = other.cumulative.heap_size + heap_size, |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
194 |
thys_id_size = other.cumulative.thys_id_size + thys_id_size, |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
195 |
thms_id_size = other.cumulative.thms_id_size + thms_id_size, |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
196 |
terms_size = other.cumulative.terms_size + terms_size, |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
197 |
types_size = other.cumulative.types_size + types_size, |
79095 | 198 |
names_size = other.cumulative.names_size + names_size, |
78314
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
199 |
spaces_size = other.cumulative.spaces_size + spaces_size) |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
200 |
} |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
201 |
|
78328
007b04dc6f96
clarified session_statistics: removed somewhat pointless per-theory statistics;
wenzelm
parents:
78315
diff
changeset
|
202 |
override def toString: String = "Statistics(" + session + ")" |
78314
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
203 |
} |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
204 |
|
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
205 |
|
78315 | 206 |
/* profiling results */ |
78314
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
207 |
|
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
208 |
sealed case class Results(build_results: Build.Results, sessions: List[Statistics]) { |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
209 |
def output( |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
210 |
output_dir: Path = default_output_dir, |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
211 |
progress: Progress = new Progress |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
212 |
): Unit = { |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
213 |
progress.echo("Output directory " + output_dir.absolute) |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
214 |
Isabelle_System.make_directory(output_dir) |
78328
007b04dc6f96
clarified session_statistics: removed somewhat pointless per-theory statistics;
wenzelm
parents:
78315
diff
changeset
|
215 |
val csv_records = for (session <- sessions) yield CSV.Record(session.fields:_*) |
007b04dc6f96
clarified session_statistics: removed somewhat pointless per-theory statistics;
wenzelm
parents:
78315
diff
changeset
|
216 |
CSV.File("sessions", Statistics.header, csv_records).write(output_dir) |
78314
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
217 |
} |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
218 |
} |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
219 |
|
78315 | 220 |
def profiling( |
78314
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
221 |
options: Options, |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
222 |
selection: Sessions.Selection = Sessions.Selection.empty, |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
223 |
progress: Progress = new Progress, |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
224 |
dirs: List[Path] = Nil, |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
225 |
select_dirs: List[Path] = Nil, |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
226 |
numa_shuffling: Boolean = false, |
79616 | 227 |
max_jobs: Option[Int] = None |
78314
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
228 |
): Results = { |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
229 |
/* sessions structure */ |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
230 |
|
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
231 |
val sessions_dirs = dirs ::: select_dirs |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
232 |
|
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
233 |
val sessions_structure = |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
234 |
Sessions.load_structure(options, dirs = dirs, select_dirs = select_dirs) |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
235 |
|
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
236 |
val selected_sessions = sessions_structure.imports_selection(selection) |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
237 |
val cumulative_sessions = sessions_structure.build_requirements(selected_sessions) |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
238 |
|
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
239 |
val sessions_selection = Sessions.Selection(sessions = selected_sessions) |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
240 |
|
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
241 |
|
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
242 |
/* build session */ |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
243 |
|
78315 | 244 |
val store = Store(options) |
78314
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
245 |
|
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
246 |
def build( |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
247 |
selection: Sessions.Selection, |
78448 | 248 |
build_options: Options = options, |
78314
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
249 |
build_heap: Boolean = false, |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
250 |
clean_build: Boolean = false |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
251 |
): Build.Results = { |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
252 |
val results = |
78448 | 253 |
Build.build(build_options, progress = progress, |
78314
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
254 |
selection = selection, build_heap = build_heap, clean_build = clean_build, |
78315 | 255 |
dirs = sessions_dirs, numa_shuffling = numa_shuffling, max_jobs = max_jobs) |
78314
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
256 |
|
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
257 |
if (results.ok) results else error("Build failed") |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
258 |
} |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
259 |
|
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
260 |
|
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
261 |
/* session builds and profiling */ |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
262 |
|
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
263 |
progress.echo("Build session requirements:") |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
264 |
build(sessions_selection.copy(requirements = true), build_heap = true) |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
265 |
progress.echo("DONE") |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
266 |
|
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
267 |
progress.echo("Build sessions:") |
78448 | 268 |
val build_results = |
269 |
build(sessions_selection, |
|
270 |
build_options = options + "context_theory_tracing", |
|
271 |
build_heap = true, |
|
272 |
clean_build = true) |
|
78314
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
273 |
progress.echo("DONE") |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
274 |
|
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
275 |
val sessions = { |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
276 |
var seen = Map.empty[String, Statistics] |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
277 |
for (session_name <- cumulative_sessions) |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
278 |
yield { |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
279 |
progress.echo("Profiling " + session_name + " ...") |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
280 |
val parent = |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
281 |
for { |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
282 |
info <- sessions_structure.get(session_name) |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
283 |
parent_name <- info.parent |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
284 |
parent_stats <- seen.get(parent_name) |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
285 |
} yield parent_stats |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
286 |
val stats = |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
287 |
Statistics.make(store, |
78315 | 288 |
build_results.deps.background(session_name), |
78328
007b04dc6f96
clarified session_statistics: removed somewhat pointless per-theory statistics;
wenzelm
parents:
78315
diff
changeset
|
289 |
parent = parent) |
78314
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
290 |
seen += (session_name -> stats) |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
291 |
stats |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
292 |
} |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
293 |
} |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
294 |
progress.echo("DONE") |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
295 |
|
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
296 |
Results(build_results, sessions) |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
297 |
} |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
298 |
|
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
299 |
|
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
300 |
/* Isabelle tool wrapper */ |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
301 |
|
78315 | 302 |
val default_output_dir: Path = Path.explode("profiling") |
78314
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
303 |
|
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
304 |
val isabelle_tool = |
78315 | 305 |
Isabelle_Tool("profiling", "build sessions for profiling of ML heap content", |
78314
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
306 |
Scala_Project.here, { args => |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
307 |
var base_sessions: List[String] = Nil |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
308 |
var select_dirs: List[Path] = Nil |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
309 |
var numa_shuffling = false |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
310 |
var output_dir = default_output_dir |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
311 |
var exclude_session_groups: List[String] = Nil |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
312 |
var all_sessions = false |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
313 |
var dirs: List[Path] = Nil |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
314 |
var session_groups: List[String] = Nil |
79616 | 315 |
var max_jobs: Option[Int] = None |
78315 | 316 |
var options = Options.init(specs = Options.Spec.ISABELLE_BUILD_OPTIONS) |
78314
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
317 |
var verbose = false |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
318 |
var exclude_sessions: List[String] = Nil |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
319 |
|
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
320 |
val getopts = Getopts(""" |
78315 | 321 |
Usage: isabelle profiling [OPTIONS] [SESSIONS ...] |
78314
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
322 |
|
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
323 |
Options are: |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
324 |
-B NAME include session NAME and all descendants |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
325 |
-D DIR include session directory and select its sessions |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
326 |
-N cyclic shuffling of NUMA CPU nodes (performance tuning) |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
327 |
-O DIR output directory (default: """ + default_output_dir + """) |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
328 |
-X NAME exclude sessions from group NAME and all descendants |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
329 |
-a select all sessions |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
330 |
-d DIR include session directory |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
331 |
-g NAME select session group NAME |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
332 |
-j INT maximum number of parallel jobs (default 1) |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
333 |
-o OPTION override Isabelle system OPTION (via NAME=VAL or NAME) |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
334 |
-v verbose |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
335 |
-x NAME exclude session NAME and all descendants |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
336 |
|
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
337 |
Build specified sessions, with options similar to "isabelle build" and |
78315 | 338 |
implicit modifications for profiling of ML heap content.""", |
78314
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
339 |
"B:" -> (arg => base_sessions = base_sessions ::: List(arg)), |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
340 |
"D:" -> (arg => select_dirs = select_dirs ::: List(Path.explode(arg))), |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
341 |
"N" -> (_ => numa_shuffling = true), |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
342 |
"O:" -> (arg => output_dir = Path.explode(arg)), |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
343 |
"X:" -> (arg => exclude_session_groups = exclude_session_groups ::: List(arg)), |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
344 |
"a" -> (_ => all_sessions = true), |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
345 |
"d:" -> (arg => dirs = dirs ::: List(Path.explode(arg))), |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
346 |
"g:" -> (arg => session_groups = session_groups ::: List(arg)), |
79616 | 347 |
"j:" -> (arg => max_jobs = Some(Value.Nat.parse(arg))), |
78314
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
348 |
"o:" -> (arg => options = options + arg), |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
349 |
"v" -> (_ => verbose = true), |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
350 |
"x:" -> (arg => exclude_sessions = exclude_sessions ::: List(arg))) |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
351 |
|
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
352 |
val sessions = getopts(args) |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
353 |
|
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
354 |
val progress = new Console_Progress(verbose = verbose) |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
355 |
|
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
356 |
val results = |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
357 |
progress.interrupt_handler { |
78315 | 358 |
profiling(options, |
78314
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
359 |
selection = Sessions.Selection( |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
360 |
all_sessions = all_sessions, |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
361 |
base_sessions = base_sessions, |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
362 |
exclude_session_groups = exclude_session_groups, |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
363 |
exclude_sessions = exclude_sessions, |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
364 |
session_groups = session_groups, |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
365 |
sessions = sessions), |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
366 |
progress = progress, |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
367 |
dirs = dirs, |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
368 |
select_dirs = select_dirs, |
78315 | 369 |
numa_shuffling = Host.numa_check(progress, numa_shuffling), |
78328
007b04dc6f96
clarified session_statistics: removed somewhat pointless per-theory statistics;
wenzelm
parents:
78315
diff
changeset
|
370 |
max_jobs = max_jobs) |
78314
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
371 |
} |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
372 |
|
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
373 |
results.output(output_dir = output_dir.absolute, progress = progress) |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
374 |
}) |
1588bec693c2
copy/rename files from private autocorres version e45b9b680d3e;
wenzelm
parents:
diff
changeset
|
375 |
} |