Итак, я разместил в In C #GetEnvironmentVariable («ЧИСЛО _ИЗ _ПРОЦЕССОРОВ» )возвращает неправильное число с вопросом о том, как получить правильное количество ядер в С #. Некоторые полезные люди направили меня на пару вопросов, где были заданы похожие вопросы, но я уже пробовал эти решения. Затем мой вопрос был закрыт как такой же, как и другой вопрос, и это правда, но решение, данное там, не сработало. Поэтому я открываю еще один, надеясь, что кто-то сможет помочь понять, что другие решения НЕ работают.
Этот вопрос был Как найти количество ядер ЦП через.NET/C #? , который использовал WMI, чтобы попытаться получить правильное количество ядер. Ну вот вывод из приведенного там кода:
Number Of Cores: 32
Number Of Logical Processors: 32
Number Of Physical Processors: 4
Что касается моего последнего вопроса, машина представляет собой 64-ядерный процессор AMD Opteron 6276 (4x16 ядер )под управлением Windows Server 2008 R2 HPC edition.
Независимо от того, что я делаю, Windows всегда возвращает 32 ядра, хотя доступно 64. Я подтвердил, что машина использует только 32, и если я жестко запрограммирую 64 ядра, машина использует их все. Мне интересно, может ли быть проблема с тем, как обнаруживаются процессоры AMD.
К вашему сведению, на случай, если вы не читали последний вопрос, если я наберу в командной строке echo %NUMBER _OF _PROCESSORS", будет возвращено 64. Этого просто не будет в среде программирования.
Спасибо, Джастин
ОБНОВЛЕНИЕ :Вывод ПРОЦЕССОР _АРХИТЕКТУРА возвращает AMD64 из командной строки, но x86 из программы. Программа 32 -битная, работающая на 64 -битном оборудовании.Меня попросили скомпилировать его в 64 -бит, но он по-прежнему показывает 32 ядра.