HPC uygulamalarını ölçeklendirme
Şunlar için geçerlidir: ✔️ Linux VM'leri ✔️ Windows VM'leri ✔️ Esnek ölçek kümeleri ✔️ Tekdüzen ölçek kümeleri
Azure'da HPC uygulamalarının en iyi ölçek artırma ve ölçeği genişletme performansı, belirli iş yükü için performans ayarlama ve iyileştirme denemeleri gerektirir. Bu bölüm ve VM serisine özgü sayfalar, uygulamalarınızı ölçeklendirmeye yönelik genel yönergeler sunar.
Uygulama kurulumu
azurehpc deposu birçok örnek içerir:
- Uygulamaları en iyi şekilde ayarlama ve çalıştırma.
- Dosya sistemlerinin ve kümelerin yapılandırması.
- Bazı yaygın uygulama iş akışlarını kolayca kullanmaya başlamaya yönelik öğreticiler.
MPI'yi en iyi şekilde ölçeklendirme
En iyi uygulama ölçeklendirme verimliliği, performansı ve tutarlılığı için aşağıdaki öneriler geçerlidir:
Daha küçük ölçekli işler için (< 256K bağlantılar) kullanın:
UCX_TLS=rc,sm
Daha büyük ölçekli işler için (> 256K bağlantıları) kullanın:
UCX_TLS=dc,sm
MPI işinizin bağlantı sayısını hesaplamak için şunu kullanın:
Max Connections = (processes per node) x (number of nodes per job) x (number of nodes per job)
Uyarlamalı Yönlendirme
Uyarlamalı Yönlendirme (AR), EDR ve HDR InfiniBand çalıştıran Azure Sanal Makineler(VM)'nin en uygun ağ yollarını dinamik olarak seçerek ağ tıkanıklığını otomatik olarak algılamasını ve önlemesini sağlar. Sonuç olarak AR, InfiniBand ağında daha yüksek performans ve ölçeklendirme verimliliği sağlayan gelişmiş gecikme süresi ve bant genişliği sunar. Daha fazla bilgi için TechCommunity makalesine bakın.
İşlem sabitleme
- Sıralı sabitleme yaklaşımı (otomatik dengeleme yaklaşımının aksine) kullanarak işlemleri çekirdeklere sabitleyin.
- Numa/Core/HwThread tarafından bağlama, varsayılan bağlamadan daha iyidir.
- Karma paralel uygulamalar (OpenMP+MPI) için HB ve HBv2 VM boyutları üzerinde dört iş parçacığı ve [CCX](CCX'ler hakkındaki bilgiler de dahil olmak üzere HB serisi sanal makinelere genel bakış) başına bir MPI sıralaması kullanın.
- Saf MPI uygulamaları için, HB ve HBv2 VM boyutlarında en iyi performans için CCX başına bir ila dört MPI derecelendirmesi denemesi yapın.
- Bellek bant genişliğine aşırı duyarlılığa sahip bazı uygulamalar CCX başına daha az sayıda çekirdek kullanmaktan yararlanabilir. Bu uygulamalar için CCX başına üç veya iki çekirdek kullanmak bellek bant genişliği çekişmesini azaltabilir ve daha yüksek gerçek dünya performansı veya daha tutarlı ölçeklenebilirlik sunabilir. Özellikle, 'Allreduce' MPI'sı bu yaklaşımdan yararlanabilir.
- Daha büyük ölçekli çalıştırmalar için UD veya karma RC+UD aktarımlarının kullanılması önerilir. Birçok MPI kitaplığı/çalışma zamanı kitaplığı bu aktarımları dahili olarak kullanır (UCX veya MVAPICH2 gibi). Büyük ölçekli çalıştırmalar için aktarım yapılandırmalarınızı denetleyin.
Uygulamaları derleme
Genişletmek için tıklayın
Gerekli olmasa da, uygun iyileştirme bayraklarıyla uygulama derlemek, HB ve HC serisi VM'lerde en iyi ölçek artırma performansını sağlar.
AMD C/C++ Derleyicisini İyileştiriyor
AMD İyileştirme C/C++ Derleyicisi (AOCC) derleyici sistemi, genel iyileştirme, vektörleştirme, yordamlar arası analizler, döngü dönüştürmeleri ve kod oluşturma gibi yüksek düzeyde gelişmiş iyileştirmeler, çok iş parçacıklı ve işlemci desteği sunar. AOCC derleyici ikili dosyaları, GNU C Kitaplığı (glibc) sürüm 2.17 ve üzeri olan Linux sistemleri için uygundur. Derleyici paketi bir C/C++ derleyicisi (clang), Fortran derleyicisi (FLANG) ve Clang'ye fortran ön ucundan (Dragon Egg) oluşur.
Clang
Clang bir C, C++ ve Objective-C derleyici işleme ön işleme, ayrıştırma, iyileştirme, kod oluşturma, derleme ve bağlamadır.
Clang, AMD'nin -march=znver1
Zen tabanlı x86 mimarisi için en iyi kod oluşturmayı ve ayarlamayı etkinleştirmek için bayrağını destekler.
FLANG
FLANG derleyicisi, AOCC paketine yeni eklenen bir ektir (Nisan 2018'de eklendi) ve şu anda geliştiricilerin indirip test etmeleri için ön sürümdedir. Amd, Fortran 2008'i temel alarak FLANG'nin GitHub sürümünü genişletir. FLANG derleyicisi tüm Clang derleyici seçeneklerini ve FLANG'ye özgü diğer sayıda derleyici seçeneğini destekler.
DragonEgg
DragonEgg, LLVM projesinden GCC'nin iyileştiricilerinin ve kod oluşturucularının yerini alan bir gcc eklentisidir. AOCC ile birlikte gelen DragonEgg gcc-4.8.x ile çalışır, x86-32/x86-64 hedefleri için test edilmiştir ve çeşitli Linux platformlarında başarıyla kullanılmıştır.
GFortran, GCC GIMPLE ara gösterimini (IR) oluşturan ön işleme, ayrıştırma ve anlam analizinden sorumlu Fortran programlarının gerçek ön ucudur. DragonEgg, GFortran derleme akışına takılan bir GNU eklentisidir. GNU eklenti API'sini uygular. Eklenti mimarisiyle DragonEgg, derlemenin farklı aşamalarını yönlendiren derleyici sürücüsü olur. İndirme ve yükleme yönergelerini takip ettikten sonra Dragon Egg şu şekilde çağrılabilir:
gfortran [gFortran flags]
-fplugin=/path/AOCC-1.2-Compiler/AOCC-1.2-
FortranPlugin/dragonegg.so [plugin optimization flags]
-c xyz.f90 $ clang -O3 -lgfortran -o xyz xyz.o $./xyz
PGI Derleyicisi
PGI Community Edition 17'nin AMD EPYC ile çalıştığı onaylanır. STREAM'in PGI ile derlenmiş bir sürümü, platformun tam bellek bant genişliğini sağlar. Daha yeni community edition 18.10 (Kasım 2018) aynı şekilde düzgün çalışmalıdır. Intel Derleyicisi ile derlemek için bu CLI komutunu kullanın:
pgcc $(OPTIMIZATIONS_PGI) $(STACK) -DSTREAM_ARRAY_SIZE=800000000 stream.c -o stream.pgi
Intel Derleyicisi
Intel Derleyici 18'in AMD EPYC ile çalıştığı onaylanır. Intel Derleyicisi ile derlemek için bu CLI komutunu kullanın.
icc -o stream.intel stream.c -DSTATIC -DSTREAM_ARRAY_SIZE=800000000 -mcmodel=large -shared-intel -Ofast –qopenmp
GCC Derleyicisi
HPC iş yükleri için AMD, GCC derleyicisi 7.3 veya üzerini önerir. RHEL 7.4'e dahil edilen 4.8.5 gibi eski sürümler önerilmez. GCC 7.3 ve daha yeni sürümler HPL, HPCG ve DGEMM testlerinde daha yüksek performans sunar.
gcc $(OPTIMIZATIONS) $(OMP) $(STACK) $(STREAM_PARAMETERS) stream.c -o stream.gcc
Sonraki adımlar
- Azure'da HPC uygulamalarını iyileştirmeye yönelik bir öğrenme modülüyle bilginizi test edin.
- HBv3 serisine genel bakış ve HC serisine genel bakış'ı gözden geçirin.
- Azure compute Tech Community Bloglarında en son duyurular, HPC iş yükü örnekleri ve performans sonuçları hakkında bilgi edinin.
- Azure'da HPC hakkında daha fazla bilgi edinin.