Browsing the sources, I saw that registration.c uses I/O functions from sequence.c in parallel omp loops. Thus, I/O are possibly - read(), actually, concurrent too, which might slow down performances in most cases.
Wouldn’t be interesting to dedicate one more thread to read frames, buffer them (eg. keep 32 frames in buffer), and let computing threads address buffer? (and wait a new frame if empty).
I think I/O thread in such context could run concurrently to the others omp’s max_threads, as current situation for n cores is n computations plus possibly n dense I/O. Whereas solution with a dedicated thread would be obviously 1 I/O thread (full throughput when frames are located on a single disk) and n computational’. System load and overhead would surely be lower.
What’s your opinion?