2012-12-08 19 views
6

MKL'den DGESVD'u kullanan ve Intel derleyici ile 8 çekirdeğe çalışan Fortran'da bir kod var. Kod OpenMP ile hızlandırıldı. Ayrıca OpenMP ve MKL'nin iş parçacığı sayısını ayarlamak için kendi ayarlarının olduğunu biliyorum (omp_num_threads ve mkl_num_threads). Optimum iplik sayısını bilmek istiyorum. LAPACK rutinini çağırmadan önce OMP_NUM_THREADS=1'u ayarlamalı mıyım? OpenMP iş parçacığı sayısı iş parçacığının MKL sayısını etkiler mi?OpenMP ve MKL iş parçacığı

cevap

12

MKL, çok iş parçacıklı sürücüsü için OpenMP kullanır. Bu, OpenMP iş parçacığı sayısının MKL iş parçacığı sayısını etkilediği, ancak çok karmaşık bir şekilde olduğu anlamına gelir. Birincisi, OpenMP kodu olmak üzere, MKL aynı zamanda, iş parçacıklarının sayısını ayarlamak için alışılmış OpenMP yöntemleriyle kontrol edilir, örn. OMP_NUM_THREADS ve omp_set_num_threads numaralı telefonu arar. Fakat aynı zamanda MKL_NUM_THREADS ve mkl_set_num_threads() şeklinde geçersiz kılma yapılandırma mekanizmalarını da sağlar. Bu, kullanıcı kodunda ve MKL rutinlerinde farklı sayıda dişe sahip olmasına izin verir.İstenen iplik sayısını yapılandırdıktan sonra, MKL'nin iç içe geçmiş paralellik vakalarında nasıl davrandığını da bilmesi gerekir. Yani, MKL, varsayılan olarak kullanıcı kodunda aktif bir parallel bölgesinden çağrılırsa tek iş parçacıklı olarak çalışır. MKL, bu davranışı geçersiz kılabilen MKL_DYNAMIC anahtarını sağlar, ancak aynı OpenMP derleyicisinin, farklı OpenMP çalışma zamanları arasında herhangi bir uyumluluk garanti edilmediğinden, MKL için olduğu gibi (bu belgenin Intel'in derleyicisini kullanmanız gerektiğini unutmayın) kullanıcı kodu için kullanılmasını gerektirir.

Genel olarak, MKL'ye işlenmeden önce iş parçacığı sayısını 1'e ayarlamanıza gerek yoktur, çünkü bu, MKL iş parçacıklarının sayısı açıkça yapılandırarak geçersiz kılınmadıkça, tek iş parçacıklı hale getirilir. İç içe paralellik etkinleştirildiğinde, parallel bölgelerinde arama yaparken dikkatli olmalısınız.

MKL'deki iş parçacığı sayısını denetleme hakkında daha fazla bilgi için MKL's User Guide numaralı telefonu kullanabilirsiniz.

İlgili konular