Современные процессоры имеют несколько ядер, это означает, что они могут выполнять разные инструкции одновременно;поэтому, когда ядро 1 работает, MUL, ядро 2 может работать ADD.Это также называется MIMD - несколько инструкций, несколько данных.
Графические процессоры, однако, не могут одновременно запускать разные инструкции.Они преуспели в выполнении одной и той же инструкции для больших объемов данных;SIMD - одна инструкция, несколько данных.
Современные графические процессоры имеют несколько ядер, каждое из которых имеет SIMD.
Так, где GNU Parallel вписывается в этот микс?
GNU Parallel запускает программы,Если ваша программа использует графический процессор и у вас в системе есть одно ядро, графический процессор не будет иметь особого смысла.Но если в вашей системе, скажем, 4 ядра GPU, то имеет смысл поддерживать эти 4 ядра одновременно.Поэтому, если ваша программа читает переменную CUDA_ VISIBLE_ DEVICES, чтобы решить, на каком ядре GPU работать, вы можете сделать что-то вроде этого:
seq 10000 | parallel -j4 CUDA_VISIBLE_DEVICES='$(({%} - 1))' compute {}