Statik, Dinamik ve Tek Dinamik bağlantı ne anlama geliyor?


9

BLAS için Intel MKL , komut satırı seçenekleriyle ilgili yardım için Intel MKL Link Line Advisor'ı kullanıyorum .

Danışman Statik, Dinamik ve Tek Dinamik Kütüphane için seçenekler sunar. bu terimler ne anlama geliyor?

Bu konuda SO hakkında çok sayıda yazı vardı, ancak hepsi bilimsel / matematiksel kodlar yerine yazılımlar geliştirmeye odaklandı. ( Bu özellikle yararlıydı)

  • Bu terimler Paralel Hesaplama ile nasıl ilişkilidir?
  • Biri diğerinden "daha iyi" midir? (Daha iyisinin daha kesin olarak tanımlanması gerektiğini biliyorum ama şu andan itibaren nasıl yapılacağını bilmiyorum)
  • Daha yaygın olarak ne kullanılır ve neden?
  • Programcı bağlantı kurarken nelere dikkat etmelidir?

Bir not olarak, daha önce görmediyseniz, yeni Intel derleyicileri (sanırım sürüm 11 ve daha yeni) -mklçoğu durumda bağlantı hattı danışmanını kullanma ihtiyacını ortadan kaldıracak bayrağı sağlar .
Aesin

@Aesin, merak ediyordum. Bağlamanın en uygun yolu mu?
tahkikat

Bilmiyorum maalesef - Gerçekten herhangi bir test yapmadım ve kılavuz ne yaptığı veya diğer seçeneklerle nasıl birleştiği hakkında herhangi bir ayrıntıya girmiyor. Eğer belirtirseniz, MKL'yi statik olarak bağlar -staticve bunu yapmazsanız dinamik olarak bağlar. Her durumda, kullanım kolaylığı açısından kesinlikle çok daha iyi.
Aesin

Yanıtlar:


14

Statik bağlama ve dinamik bağlama terimleri paralel hesaplama ile doğrudan ilişkili değildir, ancak dinamik yüklemenin (statik olarak derlenmiş bir yürütülebilir dosyayı yüklemenin aksine) ağır dosya nedeniyle ağ dosya sistemlerinde iyi ölçeklenmediği uzun süredir bilinmektedir. hedef kütüphaneler için yük yollarını araştıran dinamik yükleyicinin neden olduğu meta veri yükü.

Yüksek performanslı hesaplamada statik veya dinamik kitaplıkların daha iyi olup olmadığı hakkında genel açıklamalar yapmak zordur. Kesinlikle çoğu süper bilgisayar uygulaması için statik olarak bağlanmak daha basit ve tercih edilir. Bu neden? Mevcut süper bilgisayar neslinde, genellikle düğüm başına çalışan yalnızca bir iş vardır, bu da paylaşılan kitaplıklar nedeniyle azaltılmış bellek tüketiminin faydalarını önemli ölçüde azaltır. Buna ek olarak, bilimsel bilgi işlem kodları dil özellikleri veya program tasarımı açısından çok karmaşık olma eğilimindedir ve nadiren dinamik yükleme gerektiren dil özelliklerini (eklenti modülleri gibi) kullanırlar. Dinamik kütüphaneler, işletim sistemlerinde statik kütüphanelere göre çok daha az taşınabilir olma zorluğuna sahiptir.

Tüm bunların bir sonucu olarak, çoğu HPC sistemi mevcut olduğunda statik derleme kullanır. Statik kütüphaneler daha hızlı, kurulumu ve bakımı daha kolay ve genellikle daha sağlam olarak görülür. Python tabanlı HPC kodları bunun istisnalarından biridir, ancak yine de dinamik yüklemeyle ilişkili performans sorunlarına tabidir (scicomp'daki birkaç kullanıcı şu anda bu sorun üzerinde çalışıyor!).

Statik ve dinamik bağlantıyı seçerken, kodunuzun nasıl ve nereye dağıtılacağını, temeldeki kitaplıkların değişip değişmeyeceğini veya hareket edip etmediğini ve ağ dosya sisteminizin performans özelliklerini dikkate almanız gerekir. Ayrıca , bir kütüphane bağımlılığı yoluyla veya Python gibi dinamik bir komut dosyası dili ile birlikte çalışmak için dinamik bağlantıya ihtiyacınız olup olmadığını da değerlendirmelisiniz .

Tek Dinamik Kütüphane Intel'e özgü bir terimdir. Bağlama işlemini basitleştirmek için dinamik kitaplıklarının tek bir meta kitaplığa paketlenmesini ifade eder. Intel kitaplıklarıyla dinamik bağlantı kullanacaksanız, karmaşık bir şey yapmadığınız sürece bu form muhtemelen tercih edilir.


Mükemmel cevap! Bir şey daha var: Dinamik bağlantının gereksiz olacağını ve seçimin statik ve tek dinamik arasında olacağını anlıyorum. Karmaşık bir şey yapmadıkça ikincisini seçmem gerektiğini söylüyorsun (ki ben değilim). Peki, Tek Dinamik kullanarak bağlantı oluşturmalı mıyım? [FWIW, ben Krylov alt uzay Yöntemleri üzerinde çalışıyorum]
tahkikat

Afedersiniz! Varsayılan olarak statik kullanmanız gerekiyordu, ancak dinamik yerine tek dinamiği tercih ettim.
Aron Ahmadia

Biraz kıyaslama yaptım ve buldum: Dynamic : 0:42.92 Static : 0:42.93 Single Dynamic : 0:42.97ortalama 1000'den fazla değer.
tahkikat

1
Bazı HPC sistemlerinde statik olarak bağlamanız gerektiğini belirtmek gerekir - BlueGene / L sistemlerinde bu durum söz konusudur, çünkü hesaplama düğümlerindeki azaltılmış işletim sistemi dinamik bağlantıyı desteklemez.
Aesin

1
İfadenizle biraz kafam karıştı: "Şu anki süper bilgisayar nesillerinde, genellikle düğüm başına çalışan yalnızca bir iş var, bu da paylaşılan kitaplıklar nedeniyle azaltılmış bellek tüketiminin faydalarını önemli ölçüde azaltıyor." Düğüm başına yalnızca bir işlem olduğunu mu demek istediniz? Düğüm başına bir işin durumu nasıl etkilediğinden emin değilim. Her işlem statik olarak bağlanırken, işlemci başına çekirdek büyüdükçe önemli olabilecek yürütülebilir dosyanın tam bir kopyasını depolar. Dinamik bağlantı, paylaşılan bellek alanı başına dinamik kitaplığın yalnızca bir kopyasını gerektirir.
andybauer
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.