HPC Benchmark Testleri: HPL, IMB, IOR ve STREAM
HPC sistem performansını ölçme: HPL (Linpack), IMB-MPI, IOR depolama ve STREAM bellek benchmark rehberi.
Yeni bir HPC kümesi devreye aldığınızda ya da mevcut sisteminizin kapasitesini değerlendirirken aklınıza gelen ilk soru genellikle şudur: “Bu sistem gerçekte ne kadar hızlı?” Satıcı broşürlerindeki tepe değerleri bize teorik sınırı gösterir, ancak uygulamalardaki gerçek performans bu rakamın çoğu zaman çok altında kalır. İşte benchmark testleri tam olarak bu boşluğu kapatmak için vardır: sistemi standart iş yükleriyle zorlayarak hangi katmanda ne kadar performans elde ettiğinizi nesnel biçimde ortaya koyarlar.
Bu yazıda HPC ekosisteminde en sık kullanılan dört benchmark aracını — HPL, IMB, IOR ve STREAM — inceleyecek; her birinin neyi ölçtüğünü, nasıl çalıştırıldığını ve sonuçların nasıl yorumlandığını açıklayacağız.
Benchmark’ların Hiyerarşisi
Bir HPC sisteminin performansı tek bir sayıyla ifade edilemez. Hesap gücü, iletişim hızı, bellek bant genişliği ve depolama verimi birbirinden bağımsız darboğazlar oluşturabilir. Bu nedenle testleri bir hiyerarşi içinde düşünmek faydalıdır:
| Benchmark | Ölçtüğü Katman | Temel Metrik |
|---|---|---|
| HPL (Linpack) | Hesap (FLOPS) | TFLOP/s |
| STREAM | Bellek bant genişliği | GB/s |
| IMB-MPI | Ağ iletişimi (MPI) | Gecikme (µs) / Bant genişliği (MB/s) |
| IOR | Paralel depolama (I/O) | GB/s |
Her test ayrı bir soruyu yanıtlar. Doğru değerlendirme için dördünü birlikte kullanmak gerekir.
HPL: Hesap Gücünü Ölçmek
HPL Nedir?
HPL (High-Performance Linpack), yoğun matris işlemleri üzerinden sistemin kayan noktalı (floating-point) hesap kapasitesini ölçer. Top500 listesinin resmi benchmark aracı olan HPL, büyük bir doğrusal denklem sistemini LU ayrıştırması yöntemiyle çözer. Sonuç GFLOP/s veya TFLOP/s cinsinden ifade edilir.
Neden Önemli?
HPL, tüm işlemci çekirdeklerini, bellek ara yüzlerini ve düğümler arası iletişimi aynı anda zorlar. Bu nedenle sistemin “genel kondisyonunu” ölçen bir stres testi olarak da değerlendirilebilir. Soğutma yetersizlikleri, BIOS yapılandırma hataları ve tutarsız saat frekansları HPL skoruna doğrudan yansır.
Temel Parametreler
HPL, HPL.dat dosyasıyla yapılandırılır. En kritik parametreler şunlardır:
HPLinpack benchmark input file
Innovative Computing Laboratory, University of Tennessee
HPL.out output file name (if any)
6 device out (6=stdout,7=stderr,file)
1 # of problems sizes (N)
65536 Ns
1 # of NBs
256 NBs
0 PMAP process mapping (0=Row-,1=Column-major)
1 # of process grids (P x Q)
4 Ps
8 Qs
16.0 threshold
1 # of panel fact
2 PFACTs (0=left, 1=Crout, 2=Right)
1 # of recursive stopping criterium
4 NBMINs (>= 1)
1 # of panels in recursion
2 NDIVs
1 # of recursive panel fact.
1 RFACTs (0=left, 1=Crout, 2=Right)
1 # of broadcast
1 BCASTs (0=1rg,1=1rM,2=2rg,3=2rM,4=Lng,5=LnM)
1 # of lookahead depth
1 DEPTHs (>=0)
2 SWAP (0=bin-exch,1=long,2=mix)
64 swapping threshold
0 L1 in (0=transposed,1=no-transposed) form
0 U in (0=transposed,1=no-transposed) form
1 Equilibration (0=no,1=yes)
8 memory alignment in double (> 0)
Problem boyutu (N) genellikle toplam RAM’in yüzde seksenine denk gelecek şekilde seçilir. NB (blok boyutu) işlemci önbelleğine göre ayarlanır; Intel işlemciler için 192–256, AMD EPYC için 232–288 aralığı genellikle iyi sonuç verir. İşlem ızgarası P×Q, toplam MPI süreç sayısına eşit olmalı ve Q > P koşulunu sağlamalıdır.
Başlatma Örneği
mpirun -np 32 --hostfile hostfile \
--map-by socket --bind-to core \
./xhpl
Sonucu Yorumlamak
Teorik tepe performansı şu formülle hesaplanır:
Tepe FLOPS = Çekirdek Sayısı × Saat Hızı × Çekirdek Başına FLOPS
HPL skoru bu değerin yüzde kaçını yakaladığını gösterir. Modern sistemlerde yüzde seksen ile doksanı aşmak iyi performansın göstergesidir. Bunun belirgin biçimde altında kalan sonuçlar ağ iletişim gecikmesini, NUMA yapılandırma hatalarını ya da bellek bant genişliği darboğazını işaret eder.
STREAM: Bellek Bant Genişliğini Ölçmek
STREAM Nedir?
STREAM, John McCalpin tarafından geliştirilen ve bellek alt sisteminin sürdürülebilir bant genişliğini ölçen bir benchmark’tır. Dört basit operasyon üzerinden çalışır: Copy, Scale, Add ve Triad. Sonuçlar GB/s cinsinden ifade edilir.
Neden Kritik?
Bilimsel uygulamaların büyük çoğunluğu hesap değil bellek bant genişliği sınırlıdır. HPL’den yüksek skor alan bir sistem, STREAM’de zayıf kalıyorsa moleküler dinamik, CFD veya finite element uygulamalarında beklenen performansı veremeyebilir.
Derleme ve Çalıştırma
# Derleme: AVX-512 ve OpenMP desteğiyle
gcc -O3 -march=native -fopenmp -DSTREAM_ARRAY_SIZE=120000000 \
-DNTIMES=20 stream.c -o stream
# Çalıştırma
export OMP_NUM_THREADS=32
export OMP_PROC_BIND=close
export GOMP_CPU_AFFINITY="0-31"
./stream
STREAM_ARRAY_SIZE değeri, L3 önbelleğinin en az dört katı büyüklükte seçilmelidir. Aksi takdirde önbellekten okuma yapılacak ve sonuçlar gerçekçi olmayacaktır.
Triad Skoru Ne Anlama Gelir?
Triad operasyonu (A[i] = B[i] + scalar * C[i]) üç dizi üzerinde eşzamanlı okuma/yazma yaparak belleği en yoğun biçimde zorlar. Bu skor, uygulamanın erişebileceği gerçek bellek bant genişliğinin en yakın göstergesidir.
Modern çok soketli sistemlerde NUMA farkındalığı kritik öneme sahiptir. numactl --localalloc ile çalışmak ve her soket için ayrı STREAM testi yapmak, sistemin NUMA davranışını anlamlandırmanıza yardımcı olur.
IMB: MPI İletişim Performansını Ölçmek
IMB Nedir?
Intel MPI Benchmarks (IMB), ağ katmanının MPI iletişim performansını ölçer. Ping-Pong testi ile iki düğüm arasındaki gecikme ve bant genişliği ölçülür; kolektif testlerle (Allreduce, Alltoall, Barrier) büyük ölçekli iletişim örüntüleri değerlendirilir.
Temel Testler
# İki düğüm arasında gecikme ve bant genişliği
mpirun -np 2 -ppn 1 --hostfile two_nodes \
IMB-MPI1 PingPong
# Kolektif iletişim (32 düğüm, 128 süreç)
mpirun -np 128 -ppn 4 --hostfile hostfile \
IMB-MPI1 Allreduce Alltoall Barrier Bcast
Yorumlama Kriterleri
InfiniBand EDR ağlarda beklenen referans değerler şunlardır:
| Test | Beklenen Gecikme | Beklenen Bant Genişliği |
|---|---|---|
| PingPong (1 byte) | < 2 µs | — |
| PingPong (4 MB) | — | > 10 GB/s |
| Allreduce (1 MB, 128 süreç) | < 500 µs | — |
Gecikme değerleri ağ donanımına, sürücü yapılandırmasına ve MCA parametrelerine göre önemli ölçüde değişir. Ölçüm sırasında sistemin boşta olması ve arka plan trafiğinin minimize edilmesi sonuçların tekrarlanabilirliği açısından önemlidir.
IOR: Paralel Depolama Performansını Ölçmek
IOR Nedir?
IOR (Interleaved Or Random), Lustre, GPFS veya NFS gibi paralel dosya sistemlerinin gerçek uygulama yükü altındaki performansını ölçen bir benchmark’tır. Hem sıralı hem de rastgele erişim örüntülerini, farklı blok boyutlarıyla ve birden fazla süreç üzerinden test eder.
Kullanım Senaryoları
# POSIX I/O ile sıralı yazma testi
# 32 süreç, her süreç 4 GB veri, 4 MB segment
mpirun -np 32 --hostfile hostfile \
./ior -a POSIX \
-b 4g \
-t 4m \
-s 1 \
-F \
-w \
-o /scratch/testfile
# MPI-IO ile sıralı okuma testi
mpirun -np 32 --hostfile hostfile \
./ior -a MPIIO \
-b 4g \
-t 4m \
-s 1 \
-r \
-o /scratch/testfile
# Metadata testi (mdtest)
mpirun -np 32 --hostfile hostfile \
./mdtest -n 10000 -i 3 \
-d /scratch/mdtest_dir
Sonuçları Değerlendirmek
IOR çıktısında dikkat edilmesi gereken iki temel metrik vardır: aggregate bant genişliği (tüm süreçlerin toplam verimi) ve IOPS (saniyedeki işlem sayısı). Checkpoint-restart kullanan simülasyonlar için yazma bant genişliği kritiktir. Küçük dosyalarla yoğun çalışan uygulamalar için ise mdtest ile ölçülen metadata IOPS belirleyici olur.
Dosya sistemi önbelleğinin sonuçları yanıltmaması için testlerin önbellekleri temizleyerek yapılması (drop_caches) veya veri boyutunun toplam belleği aşacak şekilde seçilmesi gerekir.
Testleri Bir Arada Yorumlamak
Dört benchmark’ın birleşik değerlendirmesi sistem performansının eksiksiz bir resmini ortaya koyar:
- HPL yüksek, STREAM düşük: Hesap kapasitesi var ama bellek bant genişliği uygulamaları sınırlıyor. NUMA bağlama ve bellek kanal yapılandırması gözden geçirilmeli.
- HPL düşük, IMB gecikme yüksek: Ağ iletişimi hesabı bloke ediyor. InfiniBand yapılandırması, MCA parametreleri ve ağ topolojisi incelenmeli.
- HPL ve STREAM iyi, IOR düşük: Hesap ve bellek yeterli ama depolama darboğaz oluşturuyor. Stripe yapılandırması, OST sayısı ve ağ dolaşık yolu değerlendirilmeli.
- Her şey teorik değerlere yakın: Sistem üretim için hazır; iş yükü profili çıkarılarak uygulama bazında ince ayar yapılabilir.
Pratik Öneriler
Benchmark testlerini güvenilir kılmak için birkaç temel ilkeye dikkat etmek gerekir:
- Tekrarlanabilirlik: Her testi en az üç kez çalıştırın ve ortanca değeri alın. Tek çalışmanın sonucu yanıltıcı olabilir.
- Sistem yükü: Test sırasında başka iş yükleri çalışmamalı, cron görevleri ve izleme ajanları minimize edilmeli.
- Sürücü ve yazılım versiyonları: MPI kütüphanesi, InfiniBand sürücüleri ve işletim sistemi sürümlerini kayıt altında tutun. Aynı donanım farklı yazılım yığınlarıyla çok farklı sonuçlar verebilir.
- Ortam değişkenleri:
OMP_NUM_THREADS,UCX_NET_DEVICES,OMPI_MCA_btlgibi parametreler sonuçları doğrudan etkiler. - Referans değerler: Elde ettiğiniz sonuçları aynı donanım sınıfı için yayımlanmış referans değerleriyle karşılaştırın.
Mevasis olarak HPC sistemlerinizin performans değerlendirmesi ve benchmark süreçleri konusunda size destek olmaktan memnuniyet duyarız. İletişim için formu doldurun.