Aracılığıyla paylaş


Azure'da Linux RDMA kümesinde Microsoft HPC Pack ile OpenFoam çalıştırma

Önemli

Klasik VM'ler 1 Mart 2023'te kullanımdan kaldırılacaktır.

ASM'den IaaS kaynaklarını kullanıyorsanız lütfen geçişinizi 1 Mart 2023'e kadar tamamlayın. Azure Resource Manager'daki birçok özellik geliştirmelerinden yararlanmak için geçişi daha erken yapmanızı öneririz.

Daha fazla bilgi için bkz. IaaS kaynaklarınızı 1 Mart 2023'e kadar Azure Resource Manager geçirme.

Bu makalede, Azure sanal makinelerinde OpenFoam'ı çalıştırmanın bir yolu gösterilmektedir. Burada, Azure'da Linux işlem düğümlerine sahip bir Microsoft HPC Pack kümesi dağıtacak ve Intel MPI ile bir OpenFoam işi çalıştıracaksınız. İşlem düğümlerinin Azure RDMA ağı üzerinden iletişim kurması için işlem düğümleri için RDMA özellikli Azure VM'lerini kullanabilirsiniz. Azure'da OpenFoam'ı çalıştırmaya yönelik diğer seçenekler arasında Market'te bulunan, CentOS 6 üzerinde UberCloud'un OpenFoam 2.3'ü gibi ve Azure Batch üzerinde çalıştırılan tam olarak yapılandırılmış ticari görüntüler bulunur.

Not

Azure, kaynak oluşturmak ve bu kaynaklarla çalışmak için iki dağıtım modeli kullanır: Resource Manager ve klasik. Bu makale her iki modelin de nasıl kullanıldığını kapsıyor olsa da, Microsoft en yeni dağıtımların Resource Manager modelini kullanmasını önermektedir.

OpenFOAM (Open Field Operation and Manipulation için), hem ticari hem de akademik kuruluşlarda mühendislik ve bilim alanında yaygın olarak kullanılan bir açık kaynak hesaplamalı akışkanlar dinamiği (CFD) yazılım paketidir. Bu, özellikle snappyHexMesh, karmaşık CAD geometrileri için paralelleştirilmiş bir mesher ve ön ve son işleme için örgü araçları içerir. Neredeyse tüm işlemler paralel olarak çalıştırılır ve kullanıcıların bilgisayar donanımından tam olarak yararlanmasını sağlar.

Microsoft HPC Pack, Microsoft Azure sanal makine kümelerinde MPI uygulamaları dahil olmak üzere büyük ölçekli HPC ve paralel uygulamalar çalıştırmaya yönelik özellikler sağlar. HPC Pack, bir HPC Pack kümesinde dağıtılan Linux işlem düğümü VM'lerinde Linux HPC uygulamalarını çalıştırmayı da destekler. HPC Pack ile Linux işlem düğümlerini kullanmaya giriş için bkz. Azure'da BIR HPC Paketi kümesinde Linux işlem düğümlerini kullanmaya başlama.

Not

Bu makalede, HPC Pack ile Linux MPI iş yükünü çalıştırma işlemi gösterilmektedir. Linux sistem yönetimi ve Linux kümelerinde MPI iş yüklerini çalıştırma hakkında bilgi sahibi olduğunuz varsayılır. MPI ve OpenFOAM sürümlerini bu makalede gösterilenlerden farklı olarak kullanıyorsanız, bazı yükleme ve yapılandırma adımlarını değiştirmeniz gerekebilir.

Önkoşullar

  • RDMA özellikli Linux işlem düğümlerine sahip HPC Pack kümesi - Azure Resource Manager şablonu veya Azure PowerShell betiği kullanarak A8, A9, H16r veya H16rm Linux işlem düğümlerine sahip bir HPC Paketi kümesi dağıtın. Her iki seçeneğin önkoşulları ve adımları için bkz. Azure'da BIR HPC Paketi kümesinde Linux işlem düğümlerini kullanmaya başlama . PowerShell betik dağıtımı seçeneğini belirlerseniz, bu makalenin sonundaki örnek dosyalardaki örnek yapılandırma dosyasına bakın. A8 Windows Server 2012 R2 baş düğümü ve 2 boyutlu A8 SUSE Linux Enterprise Server 12 işlem düğümünden oluşan Azure tabanlı bir HPC Pack kümesi dağıtmak için bu yapılandırmayı kullanın. Aboneliğiniz ve hizmet adlarınız için uygun değerleri değiştirin.

    Bilmeniz gereken ek şeyler

    • Azure'da Linux RDMA ağ önkoşulları için bkz . Yüksek performanslı işlem VM boyutları.
    • PowerShell betiği dağıtım seçeneğini kullanırsanız, RDMA ağ bağlantısını kullanmak için tüm Linux işlem düğümlerini tek bir bulut hizmeti içinde dağıtın.
    • Linux düğümlerini dağıttığınızda ek yönetim görevlerini gerçekleştirmek için SSH ile bağlanın. Azure portal her Linux VM için SSH bağlantı ayrıntılarını bulun.
  • Intel MPI - Azure'da SLES 12 HPC işlem düğümlerinde OpenFOAM'ı çalıştırmak için Intel.com sitesinden Intel MPI Kitaplığı 5 çalışma zamanını yüklemeniz gerekir. (Intel MPI 5, CentOS tabanlı HPC görüntülerine önceden yüklenmiştir.) Sonraki bir adımda gerekirse Linux işlem düğümlerinize Intel MPI yükleyin. Bu adıma hazırlanmak için Intel'e kaydoldıktan sonra ilgili web sayfasına gönderilen onay e-postasında yer alan bağlantıyı izleyin. Ardından, Intel MPI'nin uygun sürümü için .tgz dosyasının indirme bağlantısını kopyalayın. Bu makale Intel MPI sürüm 5.0.3.048'i temel alır.

  • OpenFOAM Kaynak Paketi - OpenFOAM Foundation sitesinden Linux için OpenFOAM Kaynak Paketi yazılımını indirin. Bu makale, OpenFOAM-2.3.1.tgz olarak indirilebilen Kaynak Paketi sürüm 2.3.1'i temel alır. Linux işlem düğümlerinde OpenFOAM'ı açmak ve derlemek için bu makalenin devamında yer alan yönergeleri izleyin.

  • EnSight (isteğe bağlı) - OpenFOAM simülasyonunuzun sonuçlarını görmek için EnSight görselleştirme ve analiz programını indirip yükleyin. Lisanslama ve indirme bilgileri EnSight sitesindedir.

İşlem düğümleri arasında karşılıklı güven ayarlama

Birden çok Linux düğümünde çapraz düğüm işi çalıştırmak için düğümlerin birbirine güvenmesi gerekir ( rsh veya ssh tarafından). HPC Pack kümesini Microsoft HPC Pack IaaS dağıtım betiğiyle oluşturduğunuzda, betik belirttiğiniz yönetici hesabı için kalıcı karşılıklı güveni otomatik olarak ayarlar. Kümenin etki alanında oluşturduğunuz yönetici olmayan kullanıcılar için, onlara bir iş ayrıldığında düğümler arasında geçici karşılıklı güven ayarlamanız ve iş tamamlandıktan sonra ilişkiyi yok edin. Her kullanıcı için güven oluşturmak için, HPC Pack'in güven ilişkisi için kullandığı kümeye bir RSA anahtar çifti sağlayın.

RSA anahtar çifti oluşturma

Linux ssh-keygen komutunu çalıştırarak ortak anahtar ve özel anahtar içeren bir RSA anahtar çifti oluşturmak kolaydır.

  1. Linux bilgisayarda oturum açın.

  2. Şu komutu çalıştırın:

    ssh-keygen -t rsa
    

    Not

    Komut tamamlanana kadar varsayılan ayarları kullanmak için Enter tuşuna basın. Buraya parola girmeyin; parola istendiğinde Enter tuşuna basmanız yeter.

    RSA anahtar çifti oluşturma

  3. Dizini ~/.ssh dizinine değiştirin. Özel anahtar id_rsa ve ortak anahtar id_rsa.pub'da depolanır.

    Özel ve ortak anahtarlar

Anahtar çiftini HPC Pack kümesine ekleme

  1. HPC Pack yönetici hesabınızla (dağıtım betiğini çalıştırdığınızda ayarladığınız yönetici hesabı) baş düğümünüze Uzak Masaüstü bağlantısı kurun.

  2. Kümenin Active Directory etki alanında bir etki alanı kullanıcı hesabı oluşturmak için standart Windows Server yordamlarını kullanın. Örneğin, baş düğümdeki Active Directory Kullanıcı ve Bilgisayarları aracını kullanın. Bu makaledeki örneklerde hpclab\hpcuser adlı bir etki alanı kullanıcısı oluşturduğunuz varsayılır.

  3. C:\cred.xml adlı bir dosya oluşturun ve RSA anahtarı verilerini bu dosyaya kopyalayın. Bu makalenin sonunda örnek bir cred.xml dosyası bulunur.

    <ExtendedData>
      <PrivateKey>Copy the contents of private key here</PrivateKey>
      <PublicKey>Copy the contents of public key here</PublicKey>
    </ExtendedData>
    
  4. Bir Komut İstemi açın ve hpclab\hpcuser hesabının kimlik bilgileri verilerini ayarlamak için aşağıdaki komutu girin. Anahtar veriler için oluşturduğunuz C:\cred.xml dosyasının adını geçirmek için extendeddata parametresini kullanırsınız.

    hpccred setcreds /extendeddata:c:\cred.xml /user:hpclab\hpcuser /password:<UserPassword>
    

    Bu komut çıktı olmadan başarıyla tamamlar. İş çalıştırmanız gereken kullanıcı hesaplarının kimlik bilgilerini ayarladıktan sonra, cred.xml dosyasını güvenli bir konumda depolayın veya silin.

  5. Linux düğümlerinizden birinde RSA anahtar çiftini oluşturduysanız, kullanmayı bitirdikten sonra anahtarları silmeyi unutmayın. HPC Pack var olan bir id_rsa dosyasını veya id_rsa.pub dosyasını bulursa, karşılıklı güveni ayarlamaz.

Önemli

Bir yönetici tarafından gönderilen bir iş Linux düğümlerinde kök hesabı altında çalıştığından, paylaşılan bir kümede küme yöneticisi olarak Bir Linux işini çalıştırmanızı önermeyiz. Ancak, yönetici olmayan bir kullanıcı tarafından gönderilen bir iş, iş kullanıcısı ile aynı ada sahip yerel bir Linux kullanıcı hesabı altında çalışır. Bu durumda HPC Pack, işe ayrılan düğümler arasında bu Linux kullanıcısı için karşılıklı güven ayarlar. İşi çalıştırmadan önce Linux kullanıcısını Linux düğümlerinde el ile ayarlayabilirsiniz veya HPC Pack, iş gönderildiğinde kullanıcıyı otomatik olarak oluşturur. HPC Pack kullanıcıyı oluşturursa, iş tamamlandıktan sonra HPC Paketi kullanıcıyı siler. Güvenlik tehditlerini azaltmak için HPC Pack, iş tamamlandıktan sonra anahtarları kaldırır.

Linux düğümleri için dosya paylaşımı ayarlama

Şimdi baş düğümdeki bir klasörde standart bir SMB paylaşımı ayarlayın. Linux düğümlerinin ortak bir yolla uygulama dosyalarına erişmesine izin vermek için, paylaşılan klasörü Linux düğümlerine bağlayın. İsterseniz, Azure Dosyalar paylaşımı (birçok senaryo için önerilir) veya NFS paylaşımı gibi başka bir dosya paylaşım seçeneği kullanabilirsiniz. Azure'da HPC Pack Kümesinde Linux işlem düğümlerini kullanmaya başlama bölümündeki dosya paylaşım bilgilerine ve ayrıntılı adımlara bakın.

  1. Baş düğümde bir klasör oluşturun ve Okuma/Yazma ayrıcalıkları ayarlayarak bunu Herkes ile paylaşın. Örneğin, baş düğümde C:\OpenFOAM dosyasını \\SUSE12RDMA-HN\OpenFOAM olarak paylaşın. Burada SUSE12RDMA-HN baş düğümün ana bilgisayar adıdır.

  2. bir Windows PowerShell penceresi açın ve aşağıdaki komutları çalıştırın:

    clusrun /nodegroup:LinuxNodes mkdir -p /openfoam
    
    clusrun /nodegroup:LinuxNodes mount -t cifs //SUSE12RDMA-HN/OpenFOAM /openfoam -o vers=2.1`,username=<username>`,password='<password>'`,dir_mode=0777`,file_mode=0777
    

İlk komut, LinuxNodes grubundaki tüm düğümlerde /openfoam adlı bir klasör oluşturur. İkinci komut, dir_mode ve file_mode bitleri 777 olarak ayarlanmış Linux düğümlerine //SUSE12RDMA-HN/OpenFOAM paylaşılan klasörünü bağlar. Komuttaki kullanıcı adı ve parola , baş düğümdeki bir kullanıcının kimlik bilgileri olmalıdır.

Not

İkinci komuttaki "'" simgesi, PowerShell için bir kaçış simgesidir. "',", "," (virgül karakteri) komutunun bir parçası olduğu anlamına gelir.

MPI ve OpenFOAM yükleme

OpenFOAM'ı RDMA ağında bir MPI işi olarak çalıştırmak için, OpenFOAM'ı Intel MPI kitaplıklarıyla derlemeniz gerekir.

İlk olarak, Linux düğümlerinize Intel MPI kitaplıklarını (henüz yüklü değilse) ve OpenFOAM'ı yüklemek için birkaç clusrun komutu çalıştırın. Yükleme dosyalarını Linux düğümleri arasında paylaşmak için daha önce yapılandırılmış baş düğüm paylaşımını kullanın.

Önemli

Bu yükleme ve derleme adımları örnek olarak verilebilir. Bağımlı derleyicilerin ve kitaplıkların doğru yüklendiğinden emin olmak için Linux sistem yönetimi hakkında bilgi sahibi olmanız gerekir. Intel MPI ve OpenFOAM sürümleriniz için belirli ortam değişkenlerini veya diğer ayarları değiştirmeniz gerekebilir. Ayrıntılar için bkz. Linux için Intel MPI Kitaplığı Yükleme Kılavuzu ve ortamınız için OpenFOAM Kaynak Paketi Yüklemesi .

Intel MPI'yi yükleme

İndirilen Intel MPI yükleme paketini (bu örnekte l_mpi_p_5.0.3.048.tgz) Baş düğümdeki C:\OpenFoam'a kaydedin; böylece Linux düğümleri /openfoam'dan bu dosyaya erişebilir. Ardından tüm Linux düğümlerine Intel MPI kitaplığını yüklemek için clusrun komutunu çalıştırın.

  1. Aşağıdaki komutlar yükleme paketini kopyalar ve her düğümde /opt/intel dosyasına ayıklar.

    clusrun /nodegroup:LinuxNodes mkdir -p /opt/intel
    
    clusrun /nodegroup:LinuxNodes cp /openfoam/l_mpi_p_5.0.3.048.tgz /opt/intel/
    
    clusrun /nodegroup:LinuxNodes tar -xzf /opt/intel/l_mpi_p_5.0.3.048.tgz -C /opt/intel/
    
  2. Intel MPI Kitaplığını sessizce yüklemek için silent.cfg dosyasını kullanın. Bu makalenin sonundaki örnek dosyalarda bir örnek bulabilirsiniz. Bu dosyayı /openfoam paylaşılan klasörüne yerleştirin. silent.cfg dosyası hakkında ayrıntılı bilgi için bkz. Linux için Intel MPI Kitaplığı Yükleme Kılavuzu - Sessiz Yükleme.

    İpucu

    Silent.cfg dosyanızı Linux satır sonlarıyla (CR LF değil yalnızca LF) bir metin dosyası olarak kaydettiğinizden emin olun. Bu adım, Linux düğümlerinde düzgün çalışmasını sağlar.

  3. Intel MPI Kitaplığını sessiz modda yükleyin.

    clusrun /nodegroup:LinuxNodes bash /opt/intel/l_mpi_p_5.0.3.048/install.sh --silent /openfoam/silent.cfg
    

MPI'yi yapılandırma

Test etmek için Linux düğümlerinin her birinde /etc/security/limits.conf dosyasına aşağıdaki satırları eklemelisiniz:

clusrun /nodegroup:LinuxNodes echo "*               hard    memlock         unlimited" `>`> /etc/security/limits.conf
clusrun /nodegroup:LinuxNodes echo "*               soft    memlock         unlimited" `>`> /etc/security/limits.conf

limits.conf dosyasını güncelleştirdikten sonra Linux düğümlerini yeniden başlatın. Örneğin, aşağıdaki clusrun komutunu kullanın:

clusrun /nodegroup:LinuxNodes systemctl reboot

Yeniden başlattıktan sonra paylaşılan klasörün /openfoam olarak bağlandığından emin olun.

OpenFOAM'ı derleme ve yükleme

OpenFOAM Kaynak Paketi (bu örnekte OpenFOAM-2.3.1.tgz) için indirilen yükleme paketini, Linux düğümlerinin /openfoam'dan bu dosyaya erişebilmesi için baş düğümdeki C:\OpenFoam'a kaydedin. Ardından tüm Linux düğümlerinde OpenFOAM derlemek için clusrun komutlarını çalıştırın.

  1. Her Linux düğümünde bir /opt/OpenFOAM klasörü oluşturun, kaynak paketi bu klasöre kopyalayın ve oradan ayıklayın.

    clusrun /nodegroup:LinuxNodes mkdir -p /opt/OpenFOAM
    
    clusrun /nodegroup:LinuxNodes cp /openfoam/OpenFOAM-2.3.1.tgz /opt/OpenFOAM/
    
    clusrun /nodegroup:LinuxNodes tar -xzf /opt/OpenFOAM/OpenFOAM-2.3.1.tgz -C /opt/OpenFOAM/
    
  2. OpenFOAM'ı Intel MPI Kitaplığı ile derlemek için önce hem Intel MPI hem de OpenFOAM için bazı ortam değişkenleri ayarlayın. Değişkenleri ayarlamak için settings.sh adlı bir bash betiği kullanın. Bu makalenin sonundaki örnek dosyalarda bir örnek bulabilirsiniz. Bu dosyayı (Linux satır sonlarıyla kaydedilmiş) paylaşılan /openfoam klasörüne yerleştirin. Bu dosya ayrıca daha sonra bir OpenFOAM işi çalıştırmak için kullandığınız MPI ve OpenFOAM çalışma zamanlarının ayarlarını da içerir.

  3. OpenFOAM'ı derlemek için gereken bağımlı paketleri yükleyin. Linux dağıtımınıza bağlı olarak, önce bir depo eklemeniz gerekebilir. Aşağıdakine benzer clusrun komutlarını çalıştırın:

    clusrun /nodegroup:LinuxNodes zypper ar http://download.opensuse.org/distribution/13.2/repo/oss/suse/ opensuse
    
    clusrun /nodegroup:LinuxNodes zypper -n --gpg-auto-import-keys install --repo opensuse --force-resolution -t pattern devel_C_C++
    

    Gerekirse, düzgün çalıştıklarını onaylamak üzere komutları çalıştırmak için her Linux düğümüne SSH gönderin.

  4. OpenFOAM'ı derlemek için aşağıdaki komutu çalıştırın. Derleme işleminin tamamlanması biraz zaman alır ve standart çıktıya büyük miktarda günlük bilgisi oluşturur, bu nedenle /interleaved seçeneğini kullanarak birlikte kaydedilen çıkışı görüntüleyin.

    clusrun /nodegroup:LinuxNodes /interleaved source /openfoam/settings.sh `&`& /opt/OpenFOAM/OpenFOAM-2.3.1/Allwmake
    

    Not

    Komuttaki "'" simgesi, PowerShell için bir kaçış simgesidir. "'&", "&" komutunun bir parçası olduğu anlamına gelir.

OpenFOAM işini çalıştırmaya hazırlanma

Şimdi OpenFoam örneklerinden biri olan sloshingTank3D adlı bir MPI işini iki Linux düğümünde çalıştırmaya hazır olun.

Çalışma zamanı ortamını ayarlama

Linux düğümlerinde MPI ve OpenFOAM için çalışma zamanı ortamlarını ayarlamak için baş düğümdeki Windows PowerShell penceresinde aşağıdaki komutu çalıştırın. (Bu komut yalnızca SUSE Linux için geçerlidir.)

clusrun /nodegroup:LinuxNodes cp /openfoam/settings.sh /etc/profile.d/

Örnek verileri hazırlama

Linux düğümleri arasında dosya paylaşmak için daha önce yapılandırdığınız baş düğüm paylaşımını kullanın (/openfoam olarak bağlanır).

  1. Linux işlem düğümlerinizden birine SSH.

  2. Henüz yapmadıysanız OpenFOAM çalışma zamanı ortamını ayarlamak için aşağıdaki komutu çalıştırın.

    $ source /openfoam/settings.sh
    
  3. sloshingTank3D örneğini paylaşılan klasöre kopyalayın ve klasörüne gidin.

    $ cp -r $FOAM_TUTORIALS/multiphase/interDyMFoam/ras/sloshingTank3D /openfoam/
    
    $ cd /openfoam/sloshingTank3D
    
  4. Bu örneğin varsayılan parametrelerini kullandığınızda, çalıştırılması onlarca dakika sürebilir, bu nedenle daha hızlı çalışmasını sağlamak için bazı parametreleri değiştirmek isteyebilirsiniz. Basit bir seçenek, system/controlDict dosyasında deltaT ve writeInterval zaman adımı değişkenlerini değiştirmektir. Bu dosya, zaman denetimi ve çözüm verilerini okuma ve yazma ile ilgili tüm giriş verilerini depolar. Örneğin, deltaT değerini 0,05'ten 0,5'e ve writeInterval değerini 0,05'ten 0,5'e değiştirebilirsiniz.

    Adım değişkenlerini değiştirme

  5. System/decomposeParDict dosyasındaki değişkenler için istenen değerleri belirtin. Bu örnekte her biri 8 çekirdekli iki Linux düğümü kullanılmıştır. Bu nedenle numberOfSubdomains değerini hiyerarşikCoeffs için 16 ve n olarak ayarlayın (1 1 166), yani OpenFOAM'ı 16 işlemle paralel olarak çalıştırın. Daha fazla bilgi için bkz. OpenFOAM Kullanıcı Kılavuzu: 3.4 Uygulamaları paralel çalıştırma.

    İşlemleri ayrıştırma

  6. Örnek verileri hazırlamak için sloshingTank3D dizininden aşağıdaki komutları çalıştırın.

    $ . $WM_PROJECT_DIR/bin/tools/RunFunctions
    
    $ m4 constant/polyMesh/blockMeshDict.m4 > constant/polyMesh/blockMeshDict
    
    $ runApplication blockMesh
    
    $ cp 0/alpha.water.org 0/alpha.water
    
    $ runApplication setFields  
    
  7. Baş düğümde örnek veri dosyalarının C:\OpenFoam\sloshingTank3D dizinine kopyalanmış olduğunu görmeniz gerekir. (C:\OpenFoam, baş düğümdeki paylaşılan klasördür.)

    Baş düğümdeki veri dosyaları

mpirun için konak dosyası

Bu adımda, mpirun komutunun kullandığı bir konak dosyası (işlem düğümleri listesi) oluşturursunuz.

  1. Linux düğümlerinden birinde, /openfoam altında hostfile adlı bir dosya oluşturun, böylece bu dosyaya tüm Linux düğümlerinde /openfoam/hostfile adresinden ulaşılabilir.

  2. Linux düğümü adlarınızı bu dosyaya yazın. Bu örnekte, dosya aşağıdaki adları içerir:

    SUSE12RDMA-LN1
    SUSE12RDMA-LN2
    

    İpucu

    Bu dosyayı baş düğümdeki C:\OpenFoam\hostfile konumunda da oluşturabilirsiniz. Bu seçeneği belirlerseniz, Linux satır sonları olan bir metin dosyası olarak kaydedin (CR LF değil yalnızca LF). Bu, Linux düğümlerinde düzgün çalışmasını sağlar.

    Bash betik sarmalayıcısı

    Birçok Linux düğümünüz varsa ve işinizin yalnızca bazılarında çalışmasını istiyorsanız, işinize hangi düğümlerin ayrılacağını bilmediğiniz için sabit bir konak dosyası kullanmak iyi bir fikir değildir. Bu durumda, konak dosyasını otomatik olarak oluşturmak için mpirun için bir bash betik sarmalayıcısı yazın. Bu makalenin sonunda hpcimpirun.sh adlı örnek bir bash betik sarmalayıcısı bulabilir ve bunu /openfoam/hpcimpirun.sh olarak kaydedebilirsiniz. Bu örnek betik aşağıdakileri yapar:

    1. MPI işini RDMA ağı üzerinden çalıştırmak için mpirun için ortam değişkenlerini ve bazı ek komut parametrelerini ayarlar. Bu durumda, aşağıdaki değişkenleri ayarlar:

      • I_MPI_FABRICS=shm:dapl
      • I_MPI_DAPL_PROVIDER=ofa-v2-ib0
      • I_MPI_DYNAMIC_CONNECTION=0
    2. İş etkinleştirildiğinde HPC baş düğümü tarafından ayarlanan $CCP_NODES_CORES ortam değişkenine göre bir konak dosyası oluşturur.

      $CCP_NODES_CORES biçimi şu deseni izler:

      <Number of nodes> <Name of node1> <Cores of node1> <Name of node2> <Cores of node2>...`
      

      konum

      • <Number of nodes> - bu işe ayrılan düğüm sayısı.
      • <Name of node_n_...> - bu işe ayrılan her düğümün adı.
      • <Cores of node_n_...> - bu işe ayrılan düğümdeki çekirdek sayısı.

      Örneğin, işin çalışması için iki düğüm gerekiyorsa, $CCP_NODES_CORES şuna benzerdir:

      2 SUSE12RDMA-LN1 8 SUSE12RDMA-LN2 8
      
    3. mpirun komutunu çağırır ve komut satırına iki parametre ekler.

      • --hostfile <hostfilepath>: <hostfilepath> - betiğin oluşturduğu konak dosyasının yolu
      • -np ${CCP_NUMCPUS}: ${CCP_NUMCPUS} - HPC Pack baş düğümü tarafından ayarlanan ve bu işe ayrılan toplam çekirdek sayısını depolayan bir ortam değişkeni. Bu durumda, mpirun için işlem sayısını belirtir.

OpenFOAM işi gönderme

Artık HPC Küme Yöneticisi'nde bir iş gönderebilirsiniz. Bazı iş görevleri için komut satırlarına betik hpcimpirun.sh geçirmeniz gerekir.

  1. Küme baş düğümünüze bağlanın ve HPC Küme Yöneticisi'ni başlatın.

  2. Kaynak Yönetimi'nde Linux işlem düğümlerinin Çevrimiçi durumda olduğundan emin olun. Değilse, seçin ve Çevrimiçi Getir'e tıklayın.

  3. İş Yönetimi'ndeYeni İş'e tıklayın.

  4. İş için sloshingTank3D gibi bir ad girin.

    İş ayrıntıları

  5. İş kaynakları'nda kaynak türünü "Düğüm" olarak seçin ve Minimum değerini 2 olarak ayarlayın. Bu yapılandırma, işi her biri bu örnekte sekiz çekirdeğe sahip iki Linux düğümünde çalıştırır.

    İş kaynakları

  6. Sol gezinti bölmesinde Görevleri Düzenle'ye tıklayın ve sonra da işe görev eklemek için Ekle'ye tıklayın. Aşağıdaki komut satırları ve ayarlarla işe dört görev ekleyin.

    Not

    Çalıştırma source /openfoam/settings.sh , OpenFOAM ve MPI çalışma zamanı ortamlarını ayarlar, bu nedenle aşağıdaki görevlerin her biri OpenFOAM komutundan önce çağırır.

    • Görev 1. interDyMFoam'ı paralel olarak çalıştırmak için veri dosyaları oluşturmak için decomposePar komutunu çalıştırın.

      • Göreve bir düğüm atama
      • Komut satırı - source /openfoam/settings.sh && decomposePar -force > /openfoam/decomposePar${CCP_JOBID}.log
      • Çalışma dizini - /openfoam/sloshingTank3D

      Aşağıdaki şekle bakın. Kalan görevleri benzer şekilde yapılandırabilirsiniz.

      Görev 1 ayrıntıları

    • Görev 2. Örneği hesaplamak için interDyMFoam'ı paralel olarak çalıştırın.

      • Göreve iki düğüm atama
      • Komut satırı - source /openfoam/settings.sh && /openfoam/hpcimpirun.sh interDyMFoam -parallel > /openfoam/interDyMFoam${CCP_JOBID}.log
      • Çalışma dizini - /openfoam/sloshingTank3D
    • Görev 3. Her processor_N_ dizinindeki zaman dizinleri kümelerini tek bir kümede birleştirmek için reconstructPar komutunu çalıştırın.

      • Göreve bir düğüm atama
      • Komut satırı - source /openfoam/settings.sh && reconstructPar > /openfoam/reconstructPar${CCP_JOBID}.log
      • Çalışma dizini - /openfoam/sloshingTank3D
    • Görev 4. FoamToEnsight'ı paralel olarak çalıştırarak OpenFOAM sonuç dosyalarını EnSight biçimine dönüştürün ve EnSight dosyalarını case dizininde Ensight adlı bir dizine yerleştirin.

      • Göreve iki düğüm atama
      • Komut satırı - source /openfoam/settings.sh && /openfoam/hpcimpirun.sh foamToEnsight -parallel > /openfoam/foamToEnsight${CCP_JOBID}.log
      • Çalışma dizini - /openfoam/sloshingTank3D
  7. Bu görevlere bağımlılıkları artan görev sırasına ekleyin.

    Görev bağımlılıkları

  8. Bu işi çalıştırmak için Gönder'e tıklayın.

    Varsayılan olarak, HPC Pack işi geçerli oturum açmış kullanıcı hesabınız olarak gönderir. Gönder'e tıkladıktan sonra, kullanıcı adını ve parolayı girmenizi isteyen bir iletişim kutusu görebilirsiniz.

    İş kimlik bilgileri

    Bazı koşullar altında, HPC Pack daha önce girdiğiniz kullanıcı bilgilerini hatırlar ve bu iletişim kutusunu göstermez. HPC Pack'in yeniden göstermesini sağlamak için komut istemine aşağıdaki komutu girin ve işi gönderin.

    hpccred delcreds
    
  9. İş, örnek için ayarladığınız parametrelere göre onlarca dakika ila birkaç saat sürer. Isı haritasında işin Linux düğümlerinde çalıştığını görürsünüz.

    Isı haritası

    Her düğümde sekiz işlem başlatılır.

    Linux işlemleri

  10. İş tamamlandığında, C:\OpenFoam\sloshingTank3D altındaki klasörlerde iş sonuçlarını ve C:\OpenFoam konumundaki günlük dosyalarını bulun.

Sonuçları EnSight'ta görüntüleme

İsteğe bağlı olarak, OpenFOAM işinin sonuçlarını görselleştirmek ve analiz etmek için EnSight kullanın.

  1. Baş düğüme EnSight'ı yükledikten sonra başlatın.

  2. C:\OpenFoam\sloshingTank3D\EnSight\sloshingTank3D.case dosyasını açın.

    Görüntüleyicide bir tank görürsünüz.

    EnSight'ta Tank

  3. internalMesh'ten bir Isosurface oluşturun ve ardından alpha_water değişkenini seçin.

    İzosurface oluşturma

  4. Önceki adımda oluşturulan Isosurface_part rengini ayarlayın. Örneğin, mavi su olarak ayarlayın.

    İzosurface rengini düzenleme

  5. Parçalar panelinde duvarları seçerek duvarlardan iso hacmi oluşturun ve araç çubuğundaki Isosurfaces düğmesine tıklayın.

  6. İletişim kutusunda Isovolume Olarak Yaz'ı seçin ve Isovolume Aralığının En Az değerini 0,5 olarak ayarlayın. Isovolume oluşturmak için , Seçili parçalarla oluştur'a tıklayın.

  7. Önceki adımda oluşturulan Iso_volume_part rengini ayarlayın. Örneğin, koyu su mavisi olarak ayarlayın.

  8. Duvarların rengini ayarlayın. Örneğin, saydam beyaz olarak ayarlayın.

  9. Şimdi simülasyonun sonuçlarını görmek için Yürüt'e tıklayın.

    Tank sonucu

Örnek dosyalar

PowerShell betiği tarafından küme dağıtımı için örnek XML yapılandırma dosyası

<?xml version="1.0" encoding="utf-8" ?>
<IaaSClusterConfig>
 <Subscription>
   <SubscriptionName>Subscription-1</SubscriptionName>
   <StorageAccount>allvhdsje</StorageAccount>
 </Subscription>
 <Location>Japan East</Location>  
 <VNet>
   <VNetName>suse12rdmavnet</VNetName>
   <SubnetName>SUSE12RDMACluster</SubnetName>
 </VNet>
 <Domain>
   <DCOption>HeadNodeAsDC</DCOption>
   <DomainFQDN>hpclab.local</DomainFQDN>
 </Domain>
 <Database>
   <DBOption>LocalDB</DBOption>
 </Database>
 <HeadNode>
   <VMName>SUSE12RDMA-HN</VMName>
   <ServiceName>suse12rdma-je</ServiceName>
   <VMSize>A8</VMSize>
   <EnableRESTAPI />
   <EnableWebPortal />
 </HeadNode>
 <LinuxComputeNodes>
   <VMNamePattern>SUSE12RDMA-LN%1%</VMNamePattern>
   <ServiceName>suse12rdma-je</ServiceName>
   <VMSize>A8</VMSize>
   <NodeCount>2</NodeCount>
     <ImageName>b4590d9e3ed742e4a1d46e5424aa335e__suse-sles-12-hpc-v20150708</ImageName>
 </LinuxComputeNodes>
</IaaSClusterConfig>

Örnek cred.xml dosyası

<ExtendedData>
  <PrivateKey>-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEAxJKBABhnOsE9eneGHvsjdoXKooHUxpTHI1JVunAJkVmFy8JC
qFt1pV98QCtKEHTC6kQ7tj1UT2N6nx1EY9BBHpZacnXmknpKdX4Nu0cNlSphLpru
lscKPR3XVzkTwEF00OMiNJVknq8qXJF1T3lYx3rW5EnItn6C3nQm3gQPXP0ckYCF
Jdtu/6SSgzV9kaapctLGPNp1Vjf9KeDQMrJXsQNHxnQcfiICp21NiUCiXosDqJrR
AfzePdl0XwsNngouy8t0fPlNSngZvsx+kPGh/AKakKIYS0cO9W3FmdYNW8Xehzkc
VzrtJhU8x21hXGfSC7V0ZeD7dMeTL3tQCVxCmwIDAQABAoIBAQCve8Jh3Wc6koxZ
qh43xicwhdwSGyliZisoozYZDC/ebDb/Ydq0BYIPMiDwADVMX5AqJuPPmwyLGtm6
9hu5p46aycrQ5+QA299g6DlF+PZtNbowKuvX+rRvPxagrTmupkCswjglDUEYUHPW
05wQaNoSqtzwS9Y85M/b24FfLeyxK0n8zjKFErJaHdhVxI6cxw7RdVlSmM9UHmah
wTkW8HkblbOArilAHi6SlRTNZG4gTGeDzPb7fYZo3hzJyLbcaNfJscUuqnAJ+6pT
iY6NNp1E8PQgjvHe21yv3DRoVRM4egqQvNZgUbYAMUgr30T1UoxnUXwk2vqJMfg2
Nzw0ESGRAoGBAPkfXjjGfc4HryqPkdx0kjXs0bXC3js2g4IXItK9YUFeZzf+476y
OTMQg/8DUbqd5rLv7PITIAqpGs39pkfnyohPjOe2zZzeoyaXurYIPV98hhH880uH
ZUhOxJYnlqHGxGT7p2PmmnAlmY4TSJrp12VnuiQVVVsXWOGPqHx4S4f9AoGBAMn/
vuea7hsCgwIE25MJJ55FYCJodLkioQy6aGP4NgB89Azzg527WsQ6H5xhgVMKHWyu
Q1snp+q8LyzD0i1veEvWb8EYifsMyTIPXOUTwZgzaTTCeJNHdc4gw1U22vd7OBYy
nZCU7Tn8Pe6eIMNztnVduiv+2QHuiNPgN7M73/x3AoGBAOL0IcmFgy0EsR8MBq0Z
ge4gnniBXCYDptEINNBaeVStJUnNKzwab6PGwwm6w2VI3thbXbi3lbRAlMve7fKK
B2ghWNPsJOtppKbPCek2Hnt0HUwb7qX7Zlj2cX/99uvRAjChVsDbYA0VJAxcIwQG
TxXx5pFi4g0HexCa6LrkeKMdAoGAcvRIACX7OwPC6nM5QgQDt95jRzGKu5EpdcTf
g4TNtplliblLPYhRrzokoyoaHteyxxak3ktDFCLj9eW6xoCZRQ9Tqd/9JhGwrfxw
MS19DtCzHoNNewM/135tqyD8m7pTwM4tPQqDtmwGErWKj7BaNZARUlhFxwOoemsv
R6DbZyECgYEAhjL2N3Pc+WW+8x2bbIBN3rJcMjBBIivB62AwgYZnA2D5wk5o0DKD
eesGSKS5l22ZMXJNShgzPKmv3HpH22CSVpO0sNZ6R+iG8a3oq4QkU61MT1CfGoMI
a8lxTKnZCsRXU1HexqZs+DSc+30tz50bNqLdido/l5B4EJnQP03ciO0=
-----END RSA PRIVATE KEY-----</PrivateKey>
  <PublicKey>ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDEkoEAGGc6wT16d4Ye+yN2hcqigdTGlMcjUlW6cAmRWYXLwkKoW3WlX3xAK0oQdMLqRDu2PVRPY3qfHURj0EEellpydeaSekp1fg27Rw2VKmEumu6Wxwo9HddXORPAQXTQ4yI0lWSerypckXVPeVjHetbkSci2foLedCbeBA9c/RyRgIUl227/pJKDNX2Rpqly0sY82nVWN/0p4NAyslexA0fGdBx+IgKnbU2JQKJeiwOomtEB/N492XRfCw2eCi7Ly3R8+U1KeBm+zH6Q8aH8ApqQohhLRw71bcWZ1g1bxd6HORxXOu0mFTzHbWFcZ9ILtXRl4Pt0x5Mve1AJXEKb username@servername;</PublicKey>
</ExtendedData>

MPI yüklemek için örnek silent.cfg dosyası

# Patterns used to check silent configuration file
#
# anythingpat - any string
# filepat     - the file location pattern (/file/location/to/license.lic)
# lspat       - the license server address pattern (0123@hostname)
# snpat       - the serial number pattern (ABCD-01234567)

# accept EULA, valid values are: {accept, decline}
ACCEPT_EULA=accept

# optional error behavior, valid values are: {yes, no}
CONTINUE_WITH_OPTIONAL_ERROR=yes

# install location, valid values are: {/opt/intel, filepat}
PSET_INSTALL_DIR=/opt/intel

# continue with overwrite of existing installation directory, valid values are: {yes, no}
CONTINUE_WITH_INSTALLDIR_OVERWRITE=yes

# list of components to install, valid values are: {ALL, DEFAULTS, anythingpat}
COMPONENTS=DEFAULTS

# installation mode, valid values are: {install, modify, repair, uninstall}
PSET_MODE=install

# directory for non-RPM database, valid values are: {filepat}
#NONRPM_DB_DIR=filepat

# Serial number, valid values are: {snpat}
#ACTIVATION_SERIAL_NUMBER=snpat

# License file or license server, valid values are: {lspat, filepat}
#ACTIVATION_LICENSE_FILE=

# Activation type, valid values are: {exist_lic, license_server, license_file, trial_lic, serial_number}
ACTIVATION_TYPE=trial_lic

# Path to the cluster description file, valid values are: {filepat}
#CLUSTER_INSTALL_MACHINES_FILE=filepat

# Intel(R) Software Improvement Program opt-in, valid values are: {yes, no}
PHONEHOME_SEND_USAGE_DATA=no

# Perform validation of digital signatures of RPM files, valid values are: {yes, no}
SIGNING_ENABLED=yes

# Select yes to enable mpi-selector integration, valid values are: {yes, no}
ENVIRONMENT_REG_MPI_ENV=no

# Select yes to update ld.so.conf, valid values are: {yes, no}
ENVIRONMENT_LD_SO_CONF=no


Örnek settings.sh betiği

#!/bin/bash

# impi
source /opt/intel/impi/5.0.3.048/bin64/mpivars.sh
export MPI_ROOT=$I_MPI_ROOT
export I_MPI_FABRICS=shm:dapl
export I_MPI_DAPL_PROVIDER=ofa-v2-ib0
export I_MPI_DYNAMIC_CONNECTION=0

# openfoam
export FOAM_INST_DIR=/opt/OpenFOAM
source /opt/OpenFOAM/OpenFOAM-2.3.1/etc/bashrc
export WM_MPLIB=INTELMPI

Örnek hpcimpirun.sh betiği

#!/bin/bash

# The path of this script
SCRIPT_PATH="$( dirname "${BASH_SOURCE[0]}" )"

# Set mpirun runtime evironment
source /opt/intel/impi/5.0.3.048/bin64/mpivars.sh
export MPI_ROOT=$I_MPI_ROOT
export I_MPI_FABRICS=shm:dapl
export I_MPI_DAPL_PROVIDER=ofa-v2-ib0
export I_MPI_DYNAMIC_CONNECTION=0

# mpirun command
MPIRUN=mpirun
# Argument of "--hostfile"
NODELIST_OPT="--hostfile"
# Argument of "-np"
NUMPROCESS_OPT="-np"

# Get node information from ENVs
NODESCORES=(${CCP_NODES_CORES})
COUNT=${#NODESCORES[@]}

if [ ${COUNT} -eq 0 ]
then
    # CCP_NODES_CORES is not found or is empty, just run the mpirun without hostfile arg.
    ${MPIRUN} $*
else
    # Create the hostfile file
    NODELIST_PATH=${SCRIPT_PATH}/hostfile_$$

    # Get every node name and write into the hostfile file
    I=1
    while [ ${I} -lt ${COUNT} ]
    do
        echo "${NODESCORES[${I}]}" >> ${NODELIST_PATH}
        let "I=${I}+2"
    done

    # Run the mpirun with hostfile arg
    ${MPIRUN} ${NUMPROCESS_OPT} ${CCP_NUMCPUS} ${NODELIST_OPT} ${NODELIST_PATH} $*

    RTNSTS=$?
    rm -f ${NODELIST_PATH}
fi

exit ${RTNSTS}