ВОПРОС
Как я могу запустить разные экземпляры одной и той же программы в разных ядрах на 100%?
КОНТЕКСТ
Я использую код C ++ 11 в iMac Pro (2017) с ОС High Sierra 10.13.6. Соответствующий исполняемый файл называется bayesian_estima.
Когда я запускаю один экземпляр этой программы, одно из ядер выполняет эту задачу на 100%, как вы можете видеть здесь:
Если я запускаю больше экземпляров, CPU% каждого из них падает. Но большинство ядер остаются без дела! Почему они не используются? Посмотрите, например, что происходит, когда запущены 3 процесса bayesian_estima:
Или когда я выполню 7:
В идеале на последнем рисунке мне бы хотелось, чтобы 7 ядер были полностью заняты, каждое из них выполняло один процесс 'bayesian_esvaluation'.
РЕДАКТИРОВАТЬ 1
Я перехожу к дополнительной информации, которая может помочь выявить проблему. Я скомпилировал свой код следующим образом:
g++ -std=c++11 -Wall -g bayesian_estimation.cpp -o bayesian_estimation -O2 -larmadillo
И все библиотеки и пакеты, которые я использовал, следующие:
#include <iostream> // Standard input and output functions.
#include <iomanip> // Manipulate stream input and output functions.
#include <armadillo> // Load Armadillo library.
#include <sys/stat.h> // To obtain information from files (e.g., S_ISDIR).
#include <dirent.h> // Format of directory entries.
#include <vector> // To deal with vectors.