Doğru MPI kitaplığını seçin

Tamamlandı

HB120_v2, HB60 ve HC44 SKU'ları InfiniBand ağ bağlantılarını destekler. PCI express tek kök giriş/çıkış (SR-IOV) sanallaştırması aracılığıyla sanallaştırıldığından, bu HPC VM'lerinde tüm popüler MPI kitaplıkları (HPCX, OpenMPI, Intel MPI, MVAPICH ve MPICH) kullanılabilir.

InfiniBand üzerinden iletişim kurabilen bir HPC kümesi için geçerli sınırlama 300 VM'dir. Aşağıdaki tabloda, InfiniBand üzerinden iletişimde bulunan sıkı bağlantılı MPI uygulamalarında desteklenen en fazla paralel işlem sayısı listelenmektedir.

SKU En fazla paralel işlem
HB120_v2 36.000 işlem
HC44 13.200 işlem
HB60 18.000 işlem

Not

Bu sınırlar gelecekte değişebilir. Daha yüksek bir sınır gerektiren sıkı bir şekilde bağlanmış bir MPI işiniz varsa bir destek isteği gönderin. Durumunuz için sınırları artırmak mümkün olabilir.

Bir HPC uygulaması belirli bir MPI kitaplığı önerirse, önce bu sürümü deneyin. Seçebileceğiniz MPI ile ilgili esnekliğiniz varsa ve en iyi performansı istiyorsanız HPCX'i deneyin. Genel olarak HPCX MPI, InfiniBand arabirimi için UCX çerçevesini kullanarak en iyi performansı gösterir ve tüm Mellanox InfiniBand donanım ve yazılım özelliklerinden yararlanır.

Aşağıdaki çizim, popüler MPI kitaplık mimarilerini karşılaştırır.

Popüler MPI mimarilerinin diyagramı.

HPCX ve OpenMPI ABI uyumlu olduğundan, OpenMPI ile oluşturulmuş HPCX ile bir HPC uygulamasını dinamik olarak çalıştırabilirsiniz. Benzer şekilde, Intel MPI, MVAPICH ve MPICH ABI ile uyumludur.

Düşük düzeyli donanım erişimi aracılığıyla güvenlik açıklarını önlemek için 0 kuyruk çiftine konuk SANAL makine tarafından erişilemez. Bunun son kullanıcı HPC uygulamaları üzerinde herhangi bir etkisi olmamalıdır, ancak bazı düşük düzeyli araçların düzgün çalışmasını engelleyebilir.

HPCX ve OpenMPI mpirun bağımsız değişkenleri

Aşağıdaki komut HPCX ve OpenMPI için önerilen mpirun bazı bağımsız değişkenleri gösterir:

mpirun -n $NPROCS --hostfile $HOSTFILE --map-by ppr:$NUMBER_PROCESSES_PER_NUMA:numa:pe=$NUMBER_THREADS_PER_PROCESS -report-bindings $MPI_EXECUTABLE

Bu komutta:

Parametre Açıklama
$NPROCS MPI işlemlerinin sayısını belirtir. Örneğin: -n 16.
$HOSTFILE MPI işlemlerinin çalıştığı konumu belirtmek için konak adını veya IP adresini içeren bir dosya belirtir. Örneğin: --hostfile hosts.
$NUMBER_PROCESSES_PER_NUMA Her NUMA etki alanında çalışan MPI işlemlerinin sayısını belirtir. Örneğin, NUMA başına dört MPI işlemi belirtmek için kullanırsınız --map-by ppr:4:numa:pe=1.
$NUMBER_THREADS_PER_PROCESS MPI işlemi başına iş parçacığı sayısını belirtir. Örneğin, NUMA başına bir MPI işlemi ve dört iş parçacığı belirtmek için kullanırsınız --map-by ppr:1:numa:pe=4.
-report-bindings Çekirdeklerle eşlenen MPI işlemlerini yazdırır. Bu, MPI işlem sabitlemenizin doğru olduğunu doğrulamak için kullanışlıdır.
$MPI_EXECUTABLE MPI kitaplıklarında yerleşik MPI yürütülebilir bağlantısını belirtir. MPI derleyici sarmalayıcıları bunu otomatik olarak yapar. Örneğin: mpicc veya mpif90.

Sıkı bir şekilde bağlanmış MPI uygulamanızın aşırı miktarda kolektif iletişim gerçekleştirdiğini düşünüyorsanız hiyerarşik kolektifleri (HCOLL) etkinleştirmeyi deneyebilirsiniz. Bu özellikleri etkinleştirmek için aşağıdaki parametreleri kullanın:

-mca coll_hcoll_enable 1 -x HCOLL_MAIN_IB=<MLX device>:<Port>

Intel MPI mpirun bağımsız değişkenleri

Intel MPI 2019 sürümü, Open Fabrics Alliance (OFA) çerçevesinden Open Fabrics Arabirimleri (OFI) çerçevesine geçti ve şu anda libfabric'i destekliyor. InfiniBand desteği için iki sağlayıcı vardır: mlx ve fiiller. Sağlayıcı mlx, HB ve HC VM'lerinde tercih edilen sağlayıcıdır.

Intel MPI 2019 güncelleştirme 5+ için önerilen mpirun bazı bağımsız değişkenler şunlardır:

export FI_PROVIDER=mlx
export I_MPI_DEBUG=5
export I_MPI_PIN_DOMAIN=numa

mpirun -n $NPROCS -f $HOSTFILE $MPI_EXECUTABLE

Bu bağımsız değişkenlerde:

Parametreler Açıklama
FI_PROVIDER Hangi libfabric sağlayıcısının kullanılacağını belirtir; bu, kullanılan API'yi, protokolü ve ağı etkiler. verbs başka bir seçenektir, ancak genellikle mlx size daha iyi performans verir.
I_MPI_DEBUG İşlemlerin nereye sabitlendiği ve hangi protokol ve ağın kullanıldığı hakkında ayrıntılı bilgi sağlayabilecek ek hata ayıklama çıktısı düzeyini belirtir.
I_MPI_PIN_DOMAIN İşlemlerinizi nasıl sabitlemek istediğinizi belirtir. Örneğin, çekirdeklere, yuvalara veya NUMA etki alanlarına sabitleyebilirsiniz. Bu örnekte, bu ortam değişkenini olarak numaayarlamış ve bu da işlemlerin NUMA düğüm etki alanlarına sabitlendiği anlamına gelir.

Özellikle kolektif işlemler önemli miktarda zaman alıyorsa deneyebileceğiniz başka seçenekler de vardır. Intel MPI 2019 güncelleştirme 5+, mlx sağlamayı destekler ve InfiniBand ile iletişim kurmak için UCX çerçevesini kullanır. Ayrıca HCOLL'i de destekler.

export FI_PROVIDER=mlx
export I_MPI_COLL_EXTERNAL=1

MVAPICH mpirun bağımsız değişkenleri

Aşağıdaki listede önerilen mpirun birkaç bağımsız değişken bulunur:

export MV2_CPU_BINDING_POLICY=scatter
export MV2_CPU_BINDING_LEVEL=numanode
export MV2_SHOW_CPU_BINDING=1
export MV2_SHOW_HCA_BINDING=1

mpirun -n $NPROCS -f $HOSTFILE $MPI_EXECUTABLE

Bu bağımsız değişkenlerde:

Parametreler Açıklama
MV2_CPU_BINDING_POLICY Hangi bağlama ilkesinin kullanılacağını belirtir. Bu ilke, işlemlerin çekirdek kimliklere nasıl sabitlendiğini etkiler. Bu durumda, öğesini belirtirsiniz scatter, bu nedenle işlemler NUMA etki alanları arasında eşit bir şekilde dağılır.
MV2_CPU_BINDING_LEVEL İşlemlerin nereye sabitlenmiş olduğunu belirtir. Bu durumda, bunu olarak numanodeayarlarsınız, bu da işlemlerin NUMA etki alanlarının birimlerine sabitlendiği anlamına gelir.
MV2_SHOW_CPU_BINDING İşlemlerin sabitlendiği yerle ilgili hata ayıklama bilgilerini almak isteyip istemediğinizi belirtir.
MV2_SHOW_HCA_BINDING Her işlemin hangi konak kanalı bağdaştırıcısını kullandığı hakkında hata ayıklama bilgileri almak isteyip istemediğinizi belirtir.