Bilimsel kod performansının altında yatan yapı nedir?


11

Farklı donanım ve yazılım yapılandırmalarına sahip iki bilgisayarı düşünün. Her platformda aynı seri Navier-Stokes kodunu çalıştırırken, bilgisayar 1 ve 2 için bir yinelemenin gerçekleştirilmesi sırasıyla x ve y zaman alır. Bu durumda, , bilgisayar 1 ile bilgisayar 2 arasındaki yineleme zamanı farkıdır.Δ=x-y

büyüklüğünü etkileyen ne olabilir ? Belli bir aday CPU, ana sorum CPU'lar arasındaki donanım farkı ile aynı sırada etkileyebilecek başka faktörler olup olmadığı ?ΔΔ


4
Tabii ki sadece tek bir örnektir. Ayrıca Δ 'nın problem boyutuna ve yapısına nasıl bağlı olduğunu araştırmalısınız . İkinci olarak , farklı katkıların toplamında x ve y'yi bölmeye çalışarak ve hw ve sw konfigürasyonlarına göre kodun farklı bölümlerinin performansını analiz etmeyi öneririm . ΔΔxy
Stefano M

4
CACHE LINE KAÇIRIYOR . Dikkate alınması gereken ilk şey bu. Bellek birçok algoritma için tıkanıklık faktörüdür.
Deer Hunter

Yanıtlar:


13

Bu liste tam olarak hiçbir yere yakın değildir, ancak umarım listenin büyüklüğü olası faktörlerin ölçeği hakkında bir ipucu verecektir. Seçtiğiniz platformda kodu kaynaktan derlediğinizi varsayıyorum.

Yazılım

  • Standart Kütüphane Performansı
  • Lin. Alg. Kütüphane Performansı (yazılım dış kütüphanelere bağlanıyorsa)
  • Derleyici Seçimi
  • Derleyici Optimizasyonu
  • Derleyici Bayrakları
  • Arka Plan İşlemleri (İşletim sistemleri farklıysa önemli ölçüde değişiklik gösterebilir)

Donanım

İşlemci

  • Saat hızı
  • Mimari (aynı talimat farklı mimarilerde farklı döngüler alabilir)
  • Önbellek Boyutları
  • Önbellek Gecikmesi
  • SIMD (Tek Talimat, Çoklu Veri) Özelliği

Hafıza

  • Kanal Sayısı
  • hız

HDD

  • Okuma / Yazma hızı (çoğunlukla yalnızca sonuçları yazmak için önemlidir, bu nedenle bir NS çözücü için dosyaya ne sıklıkta çıktı yazdığınıza bağlıdır, ancak görüntü işleme gibi şeyler yapan diğer programlar için önemli olabilir)

Bu, farklı üreticilerin cipslerine piyasada bir avantaj sağlamak için içerdiği küçük hileleri ve özellikleri görmezden geliyor. Büyük olan, çok seyrek doğrusal cebir kütüphanelerinin hafızaya bağlı olmasıdır. Seyrek bir matris çarpımı yapmak, birçok gerçek flop olmadan dolaşan çok fazla veri içerir.


CPU'ya hem çekirdek sayısını hem de SIMD yeteneklerini eklerdim.
Pedro

@Pedro Soru seri çözücü dediğinden beri çekirdekler bıraktım, ancak SIMD ekleyeceğim. Teşekkürler.
Godric Seer

1
@GodricSeer Bir makinede derledim ve çalıştırdım. Sonra, aynı derlenmiş yürütülebilir dosyayı kullanarak ikinci makinede çalıştırdım. Açıklamanızdan, ikinci bilgisayardaki kaynaktan yeniden derlemek daha iyi olurdu. Durum bu mu?
İzopycnal Salınım

1
@IsopycnalOscillation Belirli bir makine için / üzerinde derleme yaparken, gcc / gfortran seçeneğini -march=nativeveya -xHOSTtemel mimariye özgü optimizasyonları uygulayacak icc / ifort seçeneğini kullanabilirsiniz.
Pedro

1
Buradaki kilit nokta, bilgisayar performansının tek boyutlu bir miktar olmamasıdır. Godric'in yukarıda listelediği tüm faktörlerin göreceli dengesi, aynı üreticiden (örneğin Intel) işlemci yongalarına sahip bilgisayarlar için bile büyük ölçüde değişebilir. Sonuç olarak, farklı karşılaştırmalar iki işlemci için çok farklı performans oranları gösterebilir. Pratik bir konu olarak, çoğu modern makine bilimsel bilgi işlem iş yüklerini desteklemek için bellek bant genişliğinde ciddi bir şekilde eksiktir ve bu genellikle darboğazdır.
Brian Borchers

2

x/yx-y

İkinci olarak, sorunuz özellikle yazılımdaki farklılıkları hariç tutar. Deneyimlerime göre, dikkatli ayarlama için performans ödülleri büyük faktörler olabilir, bu nedenle donanım sorunlarını düşünürken yazılım sorunlarını unutmayın. Sonuçta, donanım sadece verdiğiniz talimatları yürütebilir ve daha az verirseniz, daha erken biter.

Bunu çok fazla genişletmemek, ancak herhangi bir problem için onu çözecek programların sonsuz bir sonsuzluğu var. Bunlar arasında, bazıları diğerlerinden daha az zaman alır ve bu bir alt sınırdır. Dikkatle ayarlanmadıysa , herhangi bir programın bu alt sınırda veya hatta yakınında olduğunu varsaymayın .

Bu bağlantı kullandığım alışılmışın dışında yöntemi ayrıntılı olarak açıklıyor.

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.