Я использую Ubuntu 14.04 x64 на компьютере с процессором Intel Xeon. и я испытываю странное поведение. У меня есть код Fortran, и длительная часть вычисления параллельна OpenMP. С меньшим набором данных (скажем, менее 4000) все работает нормально. Однако, когда я тестирую набор данных с 90 К элементами, в середине вычисления количество используемых потоков внезапно падает до 1, что, очевидно, замедляет вычисление.openmp число потоков меняется на код Fortran
Я уже делал эти проверки: Использование OMP_GET_NUM_THREADS() Я отслеживаю количество потоков во время процесса, и он растет одинаково даже после того, как система использует 1 поток.
Я использую процедуру LAPACK для вычисления собственного значения внутри цикла. Я снова собрал Lapack в своей системе, чтобы библиотеки в моей системе ничего не делали.
Может ли система изменять количество используемых потоков извне? Если да, то почему? Спасибо.
Вы называете 'omp_set_num_threads' где угодно? –
Tt выглядит как проблема балансировки нагрузки. Попробуйте с динамическим планированием: '! $ OMP PARALLEL SCHEDULE (DYNAMIC) –
@ Энтони, спасибо. Это фиксировало это. Я думаю, что природа моих входных данных сделала это. – Strongman