1
在調用多線程MKL我有一個代碼具有以下結構從OpenMP並行區域
#pragma omp parallel
{
#omp for nowait
{
// first for loop
}
#omp for nowait
{
// first for loop
}
#pragma barrier
<-- #pragma omp single/critical/atomic --> not sure
dgemm_(....)
#pragma omp for
{
// yet another for loop
}
}
對於dgemm_,我多線程MKL鏈接。我希望mkl使用所有可用的8個線程。最好的辦法是什麼?
在使用omp編譯指示和Intel的ICC和多線程MKL時,是否存在哲學上的不一致?你可以讓ICC的自動並行化加速for循環,讓MKL自己進行線程化。那麼你根本就沒有任何omp。 – bazza
OpenMP在該場景中提供了更大的靈活性。除了自動並行器非常保守,它還爲每個循環創建獨立的並行區域和相關的開銷。 –