процесс — Как запустить программу C ++ только на одном процессоре?

Я читал о том, как проверить, сколько процессоров или ядер у моей машины (MacBook OS X, Sierra, v. 10.12, Intel Core i7 с частотой 2 ГГц), но есть много разных ответов, например, здесь:

Как узнать количество * логических * ядер в Mac OS X?

хотя мне нужно убедиться, что моя программа на C ++ работает только на 1 одном процессоре (и, если возможно, только на одном ядре, то есть без планирования, т.е. моя программа должна иметь выделенное ядро ​​для запуска на => I ‘). Я не уверен, как на самом деле организована моя архитектура Mac OS X).

Я не уверен, должно ли это быть сделано на уровне реализации, компиляции или исполнения. Я видел, как люди говорили о taskset для Ubuntu, но я не уверен, что это правильный инструмент для меня (возможно, он даже не существует для Mac OS X).

Примечание: если вы считаете, что этот вопрос нужно задать на другом веб-сайте Stack Exchange, просто скажите мне, и я перенесу его туда. На самом деле мне бы хотелось, чтобы мое решение было кроссплатформенным, поэтому, возможно, это не лучшее место, чтобы задать этот вопрос.

0

Решение

Процессы запланированы, идея незапланированного процесса — оксюморон.

Тем не менее, ограничение себя одним процессором в значительной степени является значением по умолчанию в C ++. main начинается в одном потоке, и если вы не создадите дополнительные потоки, это все, что вы получите.

Вы упоминаете, что хотите «выделенное» ядро. Есть идея прикрепить поток к ядру, что, в некотором роде, достигает этого, но вы можете выяснить, что произойдет, если две программы прикрепят себя к одному и тому же ядру. Другое ядро ​​может быть полностью не использовано, пока две программы совместно используют это закрепленное ядро. Это скорее функция для суперкомпьютеров, где ядра не имеют одинакового доступа к памяти, и вы должны сопоставить ядро ​​ЦП и распределение памяти.

6

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]