forked from kmsmith137/ch_vdif_assembler
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathTODO
47 lines (36 loc) · 2.31 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
- Some nuisance issues related to thread termination:
- if a C++ exception is thrown, it takes a long time for the core dump to get written
(I suspect this would be fixed by properly joining threads after they exit)
- if a C++ exception is thrown it crashes the python interpreter, since cython is
not trapping the exception and converting it to a python exception (not sure why,
this works in toy examples)
- if C++ processors are being run through the python interface, then control-C
doesn't abort the processing, since it's being "swallowed" by the python interpreter
(an easy fix would be to add a 1-sec timeout to assembler.wait_for_end() and
loop it)
- it appears that the vdif_assembler destructor doesn't always get called at the end
of ./run-vdif-assembler (?)
- Reinstate a few loose ends from v1 (most importantly the RFI mask)
- Performance testing on moose in a "fully loaded" case with network capture and writing
to disk, at the same time as a nontrivial C++ processor such as an FRB search.
- Quantify packet loss. Is there any benefit to using high-tech libraries like pfring or dkpk?
Related: pin threads to cores? Use hugepages?
- Why is the assembler so much slower on my desktop than on moose? Is the L3 cache
becoming a bottleneck?
- assembler_nerve_center::cond_rbuf_* should be arrays of length rbuf_size.
(I think it's OK to keep cond_abuf_* as a scalar, right?)
- Test concurrency corner cases
- Can we define a single templated structure which combines the various thread-safe
ring buffers defined in the code? (rbuf, abuf, unit_testing_buffer)
- We may eventually want a little more asynchronous functionality, so that the
assembler can run as a "remote-controlled" daemon
- 256-bit kernels
- To avoid the page faulting cost of glibc malloc/free, I'm currently using some
homegrown memory management which never returns buffers to the operating system
until the managing thread exits. Is there a better solution?
- Cleanup:
- Properly destroy mutexes/conditionals, and joining threads
- Use a public/private split in classes (currently I'm not bothering in most cases)
- Makefile should warn if . and $(LIBDIR) aren't in LD_LIBRARY_PATH (in this order)
- likewise if $(PYDIR) isn't in PYTHONPATH
- Numerous small FIXME's throughout the code