Doğru MPI kitaplığını seçin
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.
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 numa ayarlamış 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 numanode ayarlarsı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. |