Запуск программы с логическими потоками
У меня есть многоядерный, который включен Hyper-Threading. Каждое физическое ядро имеет два логических ядра. Теперь я могу запустить свою программу с 1 ядром и его логическими ядрами? означает, что наша программа работает с двумя логическими ядрами этого ядра, но остальные ядра простаивают.
1 ответ
Теперь я могу запустить свою программу с 1 ядром и его логическими ядрами?
Да, но чтобы использовать больше ядер, чем 1, вы должны выполнить свое приложение в нескольких потоках. То есть. если вы используете pthreads, используйте pthread_setaffinity_np
указать, на каком ядре должен выполняться ваш поток.
Если вы хотите, чтобы ваши агорифмы работали параллельно, подумайте об использовании OpenMP или TBB (Threading Building Blocks). Эти библиотеки позволяют довольно легко конвертировать последовательно выполняемое приложение в параллельное. То есть. Вместо того, чтобы использовать for
ты используешь parallel_for
, Кроме того, ваш код будет автоматически использовать все доступное (или сконфигурированное) количество ядер - независимо от того, имеет ли ЦП 2 ядра или 16 из них.