Yüksek Performanslı Hesaplamanın Sanatı
(theartofhpc.com)- The Art of HPC, TACC’den Victor Eijkhout tarafından hazırlanan, yüksek performanslı hesaplama ders kitapları serisidir; bilimsel hesaplamanın temellerinden paralel programlama ve geliştirme araçlarına kadar konuları tek bir akışta birleştirir
- İlk cilt, bilgisayar mimarisi, aritmetik, doğrusal cebir ve ODE/PDE’nin büyük ölçekli hesaplamalarda nasıl iç içe geçtiğini ele alan bir bilimsel hesaplama arka plan kitabıdır
- İkinci cilt, MPI ve OpenMP merkezinde paralel programlamayı açıklar; PETSc, Kokkos, Sycl ve Co-array Fortran’a da kısaca yer verir
- Üçüncü cilt, bilimsel ve mühendislik programlamasında kullanılan C++17 ve Fortran2008’i ele alır; hem yeni başlayanlar hem de C programcıları için okunabilir
- Dördüncü cilt, derleyiciler, derleme sistemleri ve kaynak kod yönetimi gibi gerçek HPC işleri için gerekli geliştirme iş akışı araçlarını tanıtır
The Art of HPC ders kitaplarının yapısı
- The Art of HPC, TACC’den Victor Eijkhout tarafından hazırlanan yüksek performanslı hesaplama ders kitapları serisidir
- Seri; bilimsel hesaplama arka planı, paralel programlama, bilimsel programlama dilleri ve HPC geliştirme ekosistemini ciltlere ayırarak ele alır
Ciltlere göre kapsam
-
Volume 1: The Science of Computing
- Bilimsel hesaplamayı anlamak için gereken genel arka plan bilgisini ele alır
- Bilgisayar mimarisi, paralel bilgisayar mimarisi, bilgisayar aritmetiği, doğrusal cebir ve ODE/PDE’yi içerir
- Her öğenin büyük ölçekli hesaplamalarda nasıl birleştiğini açıklar; Volume 2 ile birlikte HPC’nin “ne/neden” ve “nasıl” yönlerini oluşturan yapıdır
-
Volume 2: Parallel Programming for Science and Engineering
- Bilimsel hesaplamada önemli olan paralel programlamayı ele alan cilttir
- Modern MPI ve OpenMP sürümlerini merkeze alarak tanıtır
- PETSc, Kokkos, Sycl ve Co-array Fortran hakkında kısa bölümler de içerir
- MPI ve OpenMP, C, Fortran ve C++ ile ele alınır; MPI ayrıca Python’ı da içerir
-
Volume 3: Introduction to Scientific Programming
- Bilimsel ve mühendislik programlamasında yaygın kullanılan C/C++ ve Fortran arka planıyla, modern C++17 ve Fortran2008’i öğretir
- C’ye kıyasla C++17’yi tercih eden bir yaklaşım benimser
- Sıfırdan öğrenenler için bilimsel programlamaya giriş kitabı olarak da, C programcıları için C++ öğrenme kitabı olarak da okunabilir
- Birden fazla uzun programlama projesi içerir
-
Volume 4: HPC Carpentry
- Bilimsel hesaplama ekosisteminin yalnızca programlama dilleri ve paralel programlama sistemlerinden oluşmadığı noktasına odaklanır
- Derleyiciler, derleme sistemleri ve kaynak kod yönetimi gibi bilimsel iş akışı için gerekli öğeleri tanıtır
- Her şeyi kapsayan bir başvuru kitabından çok, bilimsel iş akışına göre hazırlanmış bir giriş derlemesine yakındır
1 yorum
Hacker News yorumları
Bu konunun donanım/veri merkezi tarafı da en az onun kadar ilginç
Eskiden AWS’te yazılım/servis tarafında çalışıyordum; ara sıra veri merkezi ekibinin sunumlarını gizlice dinlemeye giderdim
En büyük farkındalığım, veri merkezlerinde işlem gücünü artırmanın gerçek anlamda bilişimden çok bir termodinamik problemi olduğuydu. Düğüm yoğunluğu o kadar artıyor ki, enerjiyi içeri verip ısıyı dışarı atmak, üstüne bir de çeşitli yedeklilik katmanları eklemek son derece zorlaşıyor. Bir verimsizlik bulsanız bile bunu bir yazılım güncellemesi gibi düzeltemiyorsunuz
Bu yaklaşık 10 yıl önceydi, dolayısıyla bugün bazı şeyler değişmiş olabilir; ama bir internet kitapçısı olarak başlayan Amazon’un termodinamik problemleri çözmenin en ön cephesinde yer alması şaşırtıcı
Cray-2’de daha da uç bir yöntem seçilmişti: sık dizilmiş devre kartı yığınlarını Fluorinert™ adlı özel, iletken olmayan bir sıvıya daldıran bir soğutma yapısı kullanılıyordu: “The Cray-2's unusual cooling scheme immersed dense stacks of circuit boards in a special non-conductive liquid called Fluorinert™”
Suyun ısı kapasitesi çok yüksektir ve büyük miktarda ısıyı optimum sıcaklığa hızla soğutabilir. Sıvı soğutmaya uygun olmayan bileşenlerin ısısını uzaklaştırmak için fanlara ve klimalara hâlâ ihtiyaç olurdu; ancak CPU veya GPU/hesaplama motoru gibi yüksek güç tüketen büyük bileşenlerde muazzam miktarda ısıyı hızlı ve doğrudan uzaklaştırabilir
Sızıntıların karmaşıklığı ve riski elbette bir sorun olurdu, ama Amazon ölçeğindeki veri merkezleri için bunun o kadar büyük bir endişe kaynağı olmayacağını düşünüyorum
En gelişmiş soğutma teknolojisinin nasıl göründüğünü merak ediyorum
HPC’nin donanımdan epey soyutlanmış göründüğü zamanlar ilginç geliyor
Kitaplar SPMD programlama, algoritmalar ve veri yapıları, görev paralelliği, senkronizasyon gibi konuları çok ele alıyor gibi; ama süper bilgisayar bellek alt sistemleri, CXL gibi yüksek bant genişlikli ara bağlantılar, GPU mimarisi gibi bilgisayar mimarisi ayrıntıları az görünüyor
Soyutlamalar ve araçlar zaten bu ayrıntıları dert etmeye gerek bırakmayacak kadar iyi mi, yoksa HPC pratisyenleri performansı çıkarmak için kara kutu ayar düğmeleriyle çok mu oynuyor, merak ediyorum
Genel ilke olarak, en iyi ölçeklenebilirlik için yazılımın topolojisi donanımın topolojisiyle mümkün olduğunca örtüşmeli. Verimli HPC yazılımı, donanım özelliklerinden güçlü biçimde etkilenir
Yeni HPC donanımı için kod yazarken programlama belgeleri değil de sistem donanımı ve mimari belgelerini istediğimde insanlar her zaman şaşırırdı. Donanım tasarımını anlayınca, onun üzerinde yazılımın nasıl tasarlanması gerektiği ilk ilkelerden açık hâle geliyordu. Programlama belgelerinde, geliştiriciye işleri gerçekte olduğundan daha kolay göstermek için epey yarım doğru vardı
Bazı HPC platformları “kullanımı kolay” görünmek uğruna, en yüksek performansa ulaşmak için geliştiricinin ne yapması gerektiğini sürekli yanlış aktardı; pazarlamanın ima ettiği şekilde yazılım yazıldığında da silikonun sağlayabileceği performans alınamadığı için büyük başarısızlıklar yaşandı
HPC kodu soyutlamalar üzerinde yazılabilir ve pratikte birçok kişi öyle yapar; ancak performans ve ölçeklenebilirlik kaybı çoğu zaman kaçınılmaz, tam sayı katları düzeyinde olur. Diğer yazılımlarda olduğu gibi, daha az deneyimli bir geliştiricinin kodu tasarlayabilmesini sağlıyorsa bu kayıplar çoğu zaman kabul edilebilir bulunurdu
HPC de diğer yazılımlar gibi; unvan olarak profesyonel geliştirici olsa bile, istikrarlı biçimde iyi sonuçlar üretmekte zorlanan çok kişi var. HPC’de kullanılan pahalı donanımların kayda değer bir kısmı, kötü yazılım tasarımından doğan performans kaybını hafifletmek için var
En yüksek performansı istiyorsanız, donanımın gerçekte nasıl çalıştığını anlamaktan başka kestirme yol yok. Genel yazılımdan farklı değil; HPC’de sadece donanım sistemi daha büyük ve karmaşık
Ama beklediğimden farklı çıktı. Daha çok performans odaklı iş yapacağımı, sayıları analiz edip kümeden son performans kırıntısını da sıkıp çıkaracağımı sanıyordum. Açıkçası başta izleme bile yoktu. Kendim kurdum ama neredeyse hiç kullanılmıyor. Arada yönetim, bütçeyi gerekçelendirmek gibi nedenlerle “küme ne kadar yoğun?” diye soruyor
‘Optimizasyon’un çoğu, insanların betikleri yalnızca 16 CPU kullanırken 384 CPU istemediğini kontrol etmek ya da belirli bir yazılımın performans düşüşü olmadan kaç CPU’ya kadar çalıştığını test etmek gibi şeyler. Intel profil aracını tam iki kez açtım
İşin büyük kısmı araştırmacıların işlerini yürütmesine yardım etmeye daha yakın. Genelde ticari veya açık kaynak programları çalıştırıp sorun gideriyoruz ya da başka bir ekibin başka bir kümede yazdığı kodu alıp bizim kümede derlenip çalışır hâle getiriyoruz. Berbat Python kodlarını kurcalıyor, daha modern bir kümeden CentOS 7 ortamına C++ projeleri derlemeye uğraşıyorum
Kendi içinde eğlenceli. Birçok dille çalıştığım için bir şeyleri çalışır hâle getirmeyi, çökme ve yığın izlerinin içine dalmayı seviyorum. Büyük makinelerle uğraşınca, RAM’i ‘sadece’ 128 GB ya da diski 20 TB olan bir sunucu gördüğünüzde normal ölçünüz bozuluyor
Korkutucu olan, bu sonuçların gerçek dünyada kullanılması; ama simülasyonları çalıştıran kişilerin bunu doğru yapmadığı durumlar olabiliyor. Hatalı kod, birbirine karışmış kaynak kodu, kullandıklarını sandıkları veri yerine başka veri kullanımı, üç yıldır var olan devasa bir hata bulduğum oldu. O zaman bu konuda şimdiye kadar yapılan tüm çalışma geçersiz mi oluyor diye düşünüyorsunuz
Dezavantajı, HPC işlerinin önemli bir kısmının yalnızca küme işletmekten ibaret olmasına rağmen yüksek lisans derecesi istemesi. Bunu pek anlayamıyorum. Çalıştırdığım yazılımı yazmıyorum, en yeni TOP500 kümesini de işletmiyorum. Sadece birden fazla makineyi ağa bağlayıp kod çalıştırma işi
CUDA geliştiricileriyle çalışma deneyimime göre, performansı ortaya çıkarmak için birçok ayarla oynanıyor. Shmoo Plot(https://en.wikipedia.org/wiki/Shmoo_plot, bazı sektörlerde ‘wedge’ olarak da adlandırılır) günlük optimizasyonun temel araçlarından biri
Yine de buna kara kutu der miyim emin değilim. Sonuçta benzer olabilir. Ayar düğmelerinin ne yaptığını ve nasıl çalıştığını bilip gerekçeli tahminler yapsanız bile ölçüm yaptığınızda büyük sürprizlerle karşılaşmak yaygındır. Optimizasyonun ilk kuralı ölçmektir
Michael Abrash’in “Black Book” kitabının ilk bölümü “The Best Optimizer is Between Your Ears” http://twimgs.com/ddj/abrashblackbook/gpbb1.pdf hep aklıma gelir. Modern HPC değil de PC oyunlarına odaklı olsa da yüksek performans felsefesini iyi gösteren harika bir yazıdır
Soyutlamalarla bağlantılı olarak, en ağır ayar düğmesi ince ayarını optimizasyon sürecinin sonunda yapmak en iyisidir. Çünkü refactor yaptığınızda ya da bir şeyi değiştirdiğinizde ayar düğmelerini yeniden ayarlamak gerekir. Register spill ya da önbellek erişim desenindeki küçük bir değişiklik bile iş parçacığı yapılandırması, önbellek, paylaşımlı bellek boyutu gibi ince ayarları tamamen sıfırlayabilir
Yine de aralarda makul miktarda ayar düğmesiyle oynamak gerekir. Kontrol ve denge sağlamak, kodun çevresindeki performans uzayı hakkında sezgi kazanmak için
Günümüz x86_64 donanımında süper bilgisayar bellek alt sistemi diye bir şey yok. Sadece gösterişli bir NUMA sistemi var; en büyük mesele de belleği çekirdeklere yakın tutmak, yani gecikmeyi azaltmak için veriyi ilgili NUMA düğümünün içinde yerel tutmak
Kaynak eşlemesini zamanlayıcı halleder. Zamanlayıcı donanımı bildiği için gereksinimleri karşılayan ve mümkün olduğunca optimize edilmiş bir cgroup oluşturur, uygulamayı da o cgroup içine koyup çalıştırır
Günümüzde yüksek performanslı ara bağlantıların kralı InfiniBand ve MPI’yi fabric düzeyinde hızlandırıyor. Mesaj iletimi, broadcast ve sonuç indirgemeyi çok hızlı yapabiliyor. Mesaj geldiğinde zaten indirgenmiş oluyor; broadcast sırasında ise tek bir mesaj göndermek yetiyor, broadcast fabric katmanında gerçekleşiyor. Çok bağlamlı IB kartlarında çok sayıda kuyruk bulunduğundan, tek bir düğüm/kart üzerinde kuyruk/bağlam yalıtımıyla birden çok MPI işi çalıştırılabiliyor
GPU işleri için bir framework kullanırsanız yapı ve optimizasyonlar genellikle o düzeyde otomatik olarak halledilir. Zor işi çoğunlukla framework geliştiricileri yapar. NVIDIA sürücüsü de saf kara büyü gibi çalışır ve optimizasyonun bir kısmını üstlenir. GPU’lar arası bağlantıyı fiziksel fabric sağlar; bunu sürücü ve kendi daemon’ı yönetir
Darboğaz CPU ise kütüphaneler genellikle tedarikçi tarafından elle ince ayarlanmıştır. Intel MKL, BLAS, Eigen gibi; şahsen kullandığım Eigen’da işlemciye özgü ipuçları ve optimizasyonlar vardı
Dikkat edilmesi gereken, kodu doğru mimari için derlemek ve çalıştığı donanımın gereksinimleri karşılayabildiğinden emin olmaktır. Örneğin çok fazla rastgele bellek erişimi yapmamak, bir düğümde “mümkün olduğunca hızlı” gitmek için prefetcher ve branch predictor ile uyumlu çalışmak, disk erişimini kötüye kullanmamak gibi
Sayısal hesaplama tarafında kilit nokta, işleri bağımsız tutarak instruction-level parallelism/vektörleştirmeyi mümkün kılmak, gereksiz hesap yapmamak ve MPI’yi kötüye kullanmamak; yani düğümler arası konuşmayı gerçekten gerekli düzeye indirmektir
Söylemesi kolay, ama alışınca bunları düşünmek ikinci doğanız haline geliyor. Tabii bu tür işler zevkinize uyuyorsa
Hem doğru hem değil
MPI ve OpenMP, HPC’de donanımı soyutlamanın başlıca yollarıdır. MPI, dağıtık bellekli paralel hesaplamanın; OpenMP ise paylaşımlı bellekli paralel hesaplamanın soyutlamasıdır. Birçok araştırmacı kodunu yalnızca bu ikisiyle yazar; aynı kodda ikisinin birlikte kullanılması da yaygındır. Bunları kullanırken çoğu zaman mimari ayrıntılarla ilgilenmeniz gerekmez
Yine de daha fazla optimizasyon yapmayı seven araştırmacılar, performansı biraz daha artırmak için küçük mimari ayrıntılarla epey uğraşır. Örneğin loop unrolling oldukça yaygındır ve şahsen bunun epey kafa karıştırıcı olabileceğini düşünüyorum. Belirli bir CPU mimarisi nedeniyle çarpmaya göre toplamayı tercih edip işlemleri vektörleştirmeye çalıştıklarına dair belli belirsiz bir şey hatırlıyorum, ama bunu gerçekten görmüş değilim
Cache miss’leri önlemek de büyük bir konudur. Bazı kodlar, en gerekli bilgileri bellek yerine CPU cache’inde tutacak şekilde yazılır. Çoğu kod bunu Fortran’da dizi işlemleri için sütun öncelikli dolaşımı, C’de ise satır öncelikli dolaşımı garanti etmekle sınırlı tutar; ancak kavram daha ileri taşınabilir. İşlemcinin cache boyutunu biliyorsanız, gerekli tüm bilgileri cache içinde tutacak şekilde bazı işlemleri optimize edip cache miss’leri en aza indirebilirsiniz. Bunu pratikte görmedim ama 2013’te aldığım bilimsel hesaplama dersinde aktif olarak ele alınmıştı
Belirli bir GPU’nun kullanılıp kullanılmayacağı, çözmeye çalıştığınız probleme büyük ölçüde bağlıdır. Bazı problemler GPU’da harika çalışır, bazıları ise çok zordur. Ne yazık ki o kısmı pek bilmiyorum
Victor’un böylesine harika bir kaynak derlemiş olmasına hayran kaldım
Kendisini şahsen tanımıyorum ama 1990’larda UT Austin’de doktora yaparken TACC’nin yönettiği kaynakları (Cray Y-MP, IBM SP/2 Winterhawk ve o dönem Cray T3E’yi ifade eden Lonestar ana makine adı) kullanarak araştırmamı tamamladım. Doktora jüri üyelerimden biri hâlâ orada. Hafızam doğruysa o zamanlar TACC’ye HPCC ya da CHPC deniyordu
O dönemde programcıların kodu bizzat paralelleştirmesi gerekiyordu; benim durumumda UNICOS ortamındaki Cray T3E üzerinde MPI kullanıyordum. Alan henüz erken aşamada olduğu için donanım hakkında da bir miktar anlayış gerekiyordu. Sorunları gri Cray halkalı klasörlerini ve elimdeki Gropp ve diğerlerinin kitabını okuyarak çözdüm; elbette yukarıda bahsettiğim bilgili irtibat kişisi de çok yardımcı oldu
Zaman asla durmuyor
Benim alanımın biraz dışında olsa da çok ilginçti. Geri kalanlarına da bakmayı planlıyorum; ilgilenenlere incelemelerini öneririm
HPC’nin donanım yönetimi tarafıyla ilgileniyorum
Sorunların nasıl tespit ve teşhis edildiğini; yeniden başlatma/yeniden kurulum/onarım gibi eylemlerle nasıl eşleştirildiğini; bu işlerin nasıl zamanlandığını ve en iyi hizmet düzeyini sağlayacak şekilde nasıl optimize edildiğini merak ediyorum
Düğüm kullanılabilirliği ve toplam iş hacmi gibi aynı anda optimize edilmesi gereken birden fazla hedef olduğunda bunun nasıl yapıldığı; farklı topolojilerin yukarıdakileri nasıl etkilediği; başka kısıtların nasıl etki ettiği ve genel olarak bu sorunların sistem dinamiği bakış açısından nasıl ele alındığı da ilgimi çekiyor
Bu bilgileri iyi işleyen çok fazla kaynak bulamadım. Bildiğiniz kaynaklar varsa paylaşırsanız sevinirim
Kuyruk teorisi ilk öğrenildiğinde önemsiz ve kolay görünür ama pek çok açık problem barındırır
Örneğin rastgele varış zamanları, bağımsız hizmet süreleri ve k sunucuya sahip bir sistemin (M/G/k) performans metrikleri bile hâlâ açık problemdir
https://www.sciencedirect.com/science/article/pii/S0895717704905341
Beklenenin aksine kuyruk teorisinde gerçekten çok sayıda açık problem var
Meta’nın bu ölçekte GPU’larla uğraşma sorununu anlatan birkaç iyi YouTube videosu vardı
Meta da mühendislik sitesinde çok sayıda makale, blog yazısı ve açık kaynak proje yayımlıyor [2]
AWS’ten James Hamilton da neredeyse her yıl altyapı hakkında sunum yapıyor. Birkaç yılın sunumlarına bakmaya değer [3]
[1] https://youtu.be/69PrhWQorEM?si=u7vh_Um6SQNoyeFH
[2] https://engineering.fb.com/category/data-center-engineering/
[3] https://youtu.be/AyOAjFNPAbA?si=nFRJVcQI4EiamC-O
Temelde iş yükü, burada derin öğrenme işleri düzeyinde optimizasyon yaparak iş boyutunun ayarlanmasını ve öncelikli kesintiye uğratmayı mümkün kılıyor
[1] https://arxiv.org/pdf/2202.07848.pdf
2013’te bilimsel hesaplama dersi almıştım
Bilgisayar bilimi ve uygulamalı matematik bölümleri arasında çapraz açılan bir dersti. Sorun, alanın genel olarak çok geniş olması nedeniyle HPC ve paralel programlama dâhil pek çok konunun çok yüzeysel ele alınmasıydı. Aldığıma pişman değilim ama peşinde olduğum uygulamalar için fazla genişti
Birkaç yıldır hangi derslerin açıldığına bakmadım; ancak yüksek lisans/doktora öğrencisiyken paralel hesaplamayı tüm dönem boyunca ele alan özel bir ders gerçekten faydalı olurdu diye düşünüyorum. Özellikle paralel ve dağıtık hesaplamanın belirli algoritmaları ve veri yapıları üzerine derinleşen bir derse ihtiyaç vardı
Aldığım bilimsel hesaplama dersinde bu konular çok üstünkörü ele alınmıştı; sanki ilk denemede tam olarak nasıl paralelleştirileceğini bilebilirmişsin gibi. Sonrasında pek çok HPC insanı gibi yıllar içinde kendi başıma ve meslektaşlarımdan çok şey öğrendim; ama bu kitaplar bir dönemlik özel bir dersin parçası olsaydı çok değerli olurdu
Yazarın C++ ve Unix araçları eğitimini bile içeren böylesine kapsamlı kitaplar hazırlayıp ücretsiz paylaşmış olması şaşırtıcı
HPC’ye özel olmasa bile her programcının öğreneceği şeyler var
İlgili kaynaklar arasında Jorg Arndt’ın “Matters Computational” kitabı ve FXT kütüphanesi de var: https://www.jjj.de/fxt/
Burada kullanılan C++ eğitim yaklaşımını nasıl gördüğünüzü merak ediyorum. Özel bir dezavantajı var mı?
Python’ı çok uzun süredir kullanıyorum; C, C++ ve CUDA ile de biraz çalışıyorum ve HPC ortamında uygulama düzeyi araştırma (ML/DL) yapıyorum. C++ becerimi geliştirmek istiyorum; 3 cilde göz attığımda seviyeme tam uygun göründü. Çok yavaş ilerlemiyor; kapsayıcı olmayı hedeflemekten çok, yazarın iyi uygulama olarak gördüklerini öğreten bir yaklaşım izliyor
Aralık tabanlı for döngüsü, std::array ve std::span aradım; hepsinin olması sevindiriciydi
Bu kitap HPC ile ilgili olduğundan birkaç şey eklemek isterim. Dönüş değeri optimizasyonu, move semantiği ve özyinelemeli fonksiyonlar bölümünde kuyruk çağrısı optimizasyonuna dair açıklama olsa iyi olurdu
Başlangıç düzeyi materyal olarak güçlü şekilde tavsiye edebilirim
Not olarak, MPI Python ile HPC yapmanın yalnızca bir yolu
Yanlış hatırlamıyorsam ipyparallel, kendi oluşturduğu tünel üzerinden MPI işlerini çalıştırabiliyor
dask-scheduler, CuDF, CuGraph(NetworkX), DaskML, CuPy ve dask-labextension hakkında bölümler olsaydı daha güncel olurdu
Dask veri depolamayı sizin yerinize halletmediğinden, her bariyer öncesindeki veri deposunun performans darboğazı olmamasını sağlamak kullanıcının sorumluluğunda
Dask belgelerinde High Performance Computers: https://docs.dask.org/en/stable/deploying-hpc.html
Rastgele sayı kaynağı da darboğaz olabilir. Kümenin tamamında işi profillemeden bunu bilemezsiniz
eBPF tabanlı izleme araçlarıyla ilgili: https://news.ycombinator.com/item?id=31688180
Sonrasında GitOps ve ChatOps, kod inceleme ve revizyon, proje kaynak kotaları gibi konuların da olması iyi olurdu
10 yıl önce bir HPC lisansüstü dersinde asistanlık rolünü paylaşmam için teklif almıştım ama reddetmiştim
Üstünkörü baktığım kadarıyla, o zaman bu kitap olsaydı o fırsatı değerlendirmiş olacağımı dürüstçe söyleyebilirim
Knuth tarzı görünen sanat olarak çerçeveleme, marangozluk benzetmesi ve kendi DevOps sorumlunuzdan daha iyi bir DevOps insanı olma gerekliliği birleşince ikna edici oluyor
Yazarın başarısını alkışlıyorum. UT Austin, bilgisayar biliminde North Texas State’in müzikte başardığına benzer bir şey başarmış gibi görünüyor
UT Austin, HPC ve hesaplamalı yöntemler alanında gerçekten mükemmel bir kurum
Büyük bir otomobil üreticisinin HPC mühendislerini destekleyen küçük bir şirkete katıldığımda, zamanlayıcı LSF etrafında bu kadar çok kurum içi geliştirilmiş script olmasına şaşırmıştım
Çok daha sonra kişisel mini kümemde SLURM ile uğraşırken, zamanlayıcı yazılımının sürümlerinin birbirleriyle büyük ölçüde uyumlu olmadığını fark ettim. Yani küme içinde bir sürüm, dış istemci makinede başka bir sürüm kullanmak mümkün değildi
Bu yüzden dışarıdan zamanlayıcıya iş göndermek ve daha sonra sonuçları almak için yapıştırıcı yazılıma ihtiyaç vardı. Kişisel olarak bunun zamanlayıcının değerini azalttığını düşünüyorum
Yüksek performanslı dağıtık hesaplama 30 yıldır yapılıyorsa gereksinimlerin iyi bilindiğini ve en azından komut ve veri alışverişi protokolünün sabitlenmiş olduğunu sanırdım. Ama öyle değil gibi
Geçmişte temel iş yönetimi API’sini standartlaştırma girişimleri de oldu; DRMAA dikkate değer bir örnek. Ancak DRMAA v2’yi yalnızca Grid Engine uyguladı ve aslında dahili API’nin hafifçe soyutlanmış bir sürümü olduğundan Slurm/PBS/LSF’de birinci sınıf destek elde edemedi
Slurm’de REST API geleceğin yolu olarak görülüyor. Kimlik doğrulama sorunu, Apache/NGINX proxy üzerinden yöneticilerin bağlamak istediği herhangi bir yönteme devrediliyor. Temel iş gönderme ve durum API’leri, gelecekte istemci uygulamaların neredeyse her sürümünün tüketebileceği kadar kararlı hâle geldi