I am setting up my analysis on a computing core and need some information about the code for fixelcfestats:
Is this software written in C++? If so, how does it take advantage of the multiple processors?
Is fixelcfestats a shared memory job (meaning, any process/thread needs to be able to access all of the memory directly)? Or is it a message-passing job (each process/thread has its own memory, and communicates to the others with IPC)
Yes, it is multi-threaded and will make use of as many cores (and hyperthreads) as you have. The only part of the code that is not threaded is when building the fixel-fixel connectivity matrix from the tractogram (at the start). This is because it’s accessing shared memory.
It’s only using pthreads to access shared memory (the fixel-fixel connectivity matrix, and the underlying fixel data). So you can only run it on a single PC/node. We have a 16-core (32 thread) server and can get most experiments done in 5-6 hrs.