Я написал программу Openmp, запустив ее на двухъядерной машине.
Когда я изменил номер потока с 1 на 2 и с 2 на 4, я не смог увеличить скорость в 2 раза.
2 темы до 4 темы, это гиперпотоки. Hyperthreads, как правило, не могут получить ускорение в 2 раза из-за ограниченности ресурсов.
Тем не менее, 1 поток к 2 потокам, все еще не может увеличить скорость в 2 раза, я запутался в этом. Я искал и нашел концепцию привязки к процессору, но я не могу понять, как работает Openmp.
Когда я использую 2 потока, статическое расписание Openmp организует 2 потока в 1 ядро или 2 ядра?
Функция omp_get_thread_num () не может сказать мне ответ, так как возвращаемое значение равно 0 или 1, но я не знаю, работают ли они на 1 или 2 ядрах.
Спасибо за помощь.
Можно использовать сродство потока с proc_bind:
Я надеюсь, что это поможет вам выбрать подходящий вариант для работы.
Других решений пока нет …