-
Notifications
You must be signed in to change notification settings - Fork 0
/
TODO
71 lines (57 loc) · 1.8 KB
/
TODO
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
* PERF HACKS
- estimate collection size ahead of time to avoid 'growing' allocations
- different allocators: stdlib, tcmalloc, jemalloc
- glibc vs. musl
- c++ vs rust vs D
X tune custom types based on SPIRAL_N size
- tune nauty WORDSIZE and MAXN and lib variant based on SPIRAL_N size
* SCORE
X remove total count from score, use bin. coef. to validate collection size
- track multiples separately from uplinks
- normalization for de-duped nodes ?
* TESTS
- liveness test
- ancestor enumeration
- correctness with short types
- wtf is avx
* CORRECTNESS
- determine fudge factor for nauty de-duped layouts
* OUTPUT
- print dot format graphs
- print maxima systems of equations
* MULTITHREAD/PERSISTENT
X walk prospective nodes, read children, than do a single write - avoids contention for RMW of nodes, complicates enumeration in parallel, reduces liveness checks
* STATE REDUCTION
X trim score range where always dead or always alive
- keeps scores in ordered map, only store pointers to score in "layout"
* D
- avoid growing score array
- don't use .value() on aa
* MAP (DE)ALLOC and SIZE OVERHEADS
X use mmap'd array
- use tree with custom allocation region that can be de-alloc'd in bulk
- use hash with custom key (don't hash object, use name)
- custom hash
- custom "allocator" from array of Layout structs
# Zuppa
* Algorithmic
- handrolled isomorphism checker - must have for N>=6
- integration will require restructuring
* Loop Tweaks
- Afters
- Sentinels
- elim pre sentinel check, and reset iterations in limit's post sentinel check
* Compiler
- compile list of gcc flags to consider
- irace for best params
- acovea with biased defaults
- acovea clang
- pgo - applying 5 -> 6?
- clang?
* Achitectural
- manual threading
- OpenMP?
- -parallelize-loops
- overclocking Mesh and CPU
- GPGPU / Vulkan compute
- rust?