-nt / --num_threads controls the number of data threads sent to the processor
-nct / --num_cpu_threads_per_data_thread controls the number of CPU threads allocated to each data thread
So, is the following example true?
-nt 8 means you use 8 cores
-nct 8 means you use 8 threads within a single core
Hmm that is not my understanding, but I could be reading the help docs wrong. I think -nct will still use the same number of CPU cores as if you were specifying -nt. So in your example, both would use 8 cores; it's just that those 8 cores would be controlled by a single "mother" thread. System memory (just think of this as RAM) is allocated per mother thread and is distributed differently than multi-threading/parallel usage of CPUs. So in your example, -nt 8 and -nct 8 both would allow GATK to use a maximum of 8 cores, but using the latter option means the operations are being handled by one mother thread which would be allocated an amount of memory equivalent to each thread if using the prior option.
Looks like this was cross-posted here: https://gatkforums.broadinstitute.org/gatk/discussion/9283/understanding-nct-and-nt
Where it was specified: