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
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.
- 1. OpenMP - sadece bir kere iş parçacığı oluştur
- 2. OpenMP neden bir mex dosyasında sadece 1 iş parçacığı üretiyor?
- 3. 'sys.excepthook' ve iş parçacığı
- 4. Windows iş parçacığı havuzu ve CLR iş parçacığı havuzu
- 5. İş parçacığı tanıtıcısı iş parçacığı tanıtıcısı
- 6. iş parçacığı içinde yerel depolama iş parçacığı
- 7. OpenMP ile hiper iş parçacığı nedeniyle yetersiz performans: iş parçacıklarının çekirdeklere nasıl bağlanacağı
- 8. AudioServicesPlaySystemSound ve ana iş parçacığı
- 9. iş parçacığı
- 10. OpenMP
- 11. Hiper iş parçacığı paraziti nasıl etkiler?
- 12. Allocatable dizi için Openmp paralel iş akışı
- 13. CountdownTimer UI iş parçacığı güncelleştiren çalışan iş parçacığı içinde
- 14. Tomcat iş parçacığı havuzundaki iş parçacığı sayısı nasıl artırılır?
- 15. İş parçacığı, iki iş parçacığı arasındaki iletişim C#
- 16. Numpe/openblas üzerinde çalışma zamanında maksimum iş parçacığı sayısını ayarlayın
- 17. Qt: Arka plan iş parçacığı yenileme UI iş parçacığı
- 18. Django/sqlite3 "OperationalError: iş parçacığı yok" iş parçacığı üzerinde
- 19. Kinect ile iş parçacığı
- 20. İş parçacığı .net 4
- 21. İş parçacığı önceliğinin değiştirilmesi
- 22. Ayrı iş parçacığı
- 23. Posix iş parçacığı öğretici
- 24. UI'dan ayrı iş parçacığı
- 25. gdb - iş parçacığı günlüğü
- 26. Maksimum iş parçacığı sorunu
- 27. İşleyici vs İş parçacığı
- 28. WPF iş parçacığı C#
- 29. Bir "gerçek" iş parçacığı
- 30. Ayrı iş parçacığı içinde