Aracılığıyla paylaş


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:

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