#multithreading #visual-c #cpu-cores
#многопоточность #visual-c #процессорные ядра
Вопрос:
Конфигурация системы: 64-разрядная версия Win 7, Visual Studio 2010 Premium, Dell t7500 с 2 чипами xeon 5690, 48 гигабайтами оперативной памяти. Каждый xeon имеет 6 ядер, таким образом, имеется 12 физических ядер. При гиперпоточности должно быть 24 логических ядра.
В моем приложении на C:
Session.coresAvailable = omp_get_num_procs ( );
Session.threadsAvailable = omp_get_max_threads ( ) ;
Система возвращается и сообщает мне, что имеется 12 ядер и 12 потоков. Разве это не должно быть 24 потока?
Комментарии:
1. Вы включили гиперпоточность? Обычно это опция bios.
2. ОК. Спасибо… это ответило на мой вопрос. Это не было установлено в bios. Интересно, потому что это было отправлено таким образом. Включение этого почти удваивает скорость моего приложения. (Как мне указать, что вы ответили на мой вопрос?)
3. Я преобразовал свой комментарий в ответ. Так что вы можете принять это. 🙂
Ответ №1:
Преобразование комментария в ответ:
Вам нужно включить гиперпоточность в BIOS, чтобы видеть все 24 потока.
Ответ №2:
Гиперпоточность чертовски полезна для многозадачности, не столько для однородных параллельных алгоритмов, где все потоки выполняют одни и те же инструкции и нуждаются в одинаковых внутренних подразделениях. Таким образом, omp может просто игнорировать виртуальные потоки.