Bir haftadır ATLAS deneyinin yazılım alt yapısının deneye yeni katılan, fizik analizine başlamaya hazırlanan veya hali hazırda deneyin içinde olup yazılım geliştirmeye katkı vermek isteyenlere sunumlar ve uygulamalar eşliğinde anlatıldığı bir eğitim için CERN'deydim. Yüksek lisansımın sonlarına doğru dahil olduğum ATLAS deneyi, doktora çalışmamla birlikte odaklandığım işim oldu ve ilk zamanlardan beri de Boğaziçi ATLAS grubu olarak da, ATLAS deneyin iç-dedektör kısmında yer alan TRT dedektörü çalışmalarına katkı veriyoruz. Grup olarak, temelde dedektörün elde ettiği verilerin ‘kalite kontrolü’ (data quality monitoring) ile ilgileniyoruz ve bunun için de LHC'de çarpışmaların olduğu dönemler düzenli olarak ‘nöbetler’ tutup, dedektör verilerinin ‘beklentimiz’ dışına çıkmadığına emin olup, bunun için kullanılan gözlem sisteminin geliştirilmesi ve düzgün çalışmasından sorumluyuz. Bunların yanında, dedektör içinde belirli konularda uzmanlaşmak ve ATLAS ekibinin yazdığı makalelerde yazar hakkı elde etmek için ‘Qualification Task’ adında, yaklaşık bir yıllık bir çalışma yapıyoruz. Benim bu çalışmam da TRT alt-dedektörünün yazılım geliştirme ekibinde, elektron tanımlama sisteminin iyileştirilmesi üzerine. Bu çalışmam sırasında ATLAS'ın genel yazılım alt yapısı ile sürekli etkileşmemiz gerektiğinden bu konudaki eksiklerimi kapatmak ve yeni şeyler öğrenmek için bu eğitime katılmaya karar verdim. Bu yazıyla niyetim, öğrendiğim birkaç şeyi listelemek ki konuyla ilgilenebilecek kişilere en azından bu alanda neler konuşuluyor, ne gibi araçlar kullanılıyor fikir versin.

  • ATLAS'ın yazılım framework'u olan Athena, kelimenin tam anlamıyla devasa bir ‘codebase’! Fizik amaçlı yazdığımız kodları, yardımcı fonksiyonlar, class'lar ve kütüphaneler aracılığıyla bir şekilde içinde çalıştırdığınız dev bir kod yığını Athena. Bu framework'un bizzat geliştiricilerinin anlattığı üzere, buradaki karmaşıklığın şu anda dünya üzerinde bir tek Facebook, Google gibi yazılım devlerinin elinin altında olduğunu düşünülüyor. Bir de paylaştıkları enteresan bilgi de, 4 milyon satır C++ ve 1 milyon satır Python kodu ile mevcut yazılımı bu haline getirebilmek için günümüz şartlarında yaklaşık 200 yazılımcıyı 10 yıl boyunca çalıştırıp, yaklaşık 200 milyon dolarlık bir bütçe ayrılması gerekiyormuş (bknz. aşağıdaki görsel)! Vay canına! Tabii ki bu kadar bütçe ayrılmıyor, doktora öğrencileri ve post-doc'lar ne güne duruyor! :)

ATLAS SW Stats Image credit: Attila Krasznahorkay

  • Eğitim boyunca Athena (ve ona eş değer AnalysisBase) framework'ü içinde bir C++ ‘algoritması’ nasıl geliştirebileceğimizi baştan sona uygulamalı olarak öğrendik. Bu tip çok komponentli, birçok yönden performans odaklı bir sistemi derlenebilen, etkili bir dille yazmak durumundasınız. CERN'deki birçok deneyde olduğu gibi ATLAS'ta da ağırlıklı olarak C++ kullanılıyor.

  • Ufak çaplı yazılımlardan çok çok daha büyük ölçekli bir iş olduğu için, birçok kaynak kod dosyayı derleyip bir araya getirmek için kullanılan konfigürasyon sistemi make‘in üzerinde daha karmaşık süreçleri yönetebilmeyi sağlayan CMake aracı kullanılıyor. İlerleyen yazılarda her ikisinden de ufak ufak bahsetmeyi planlıyorum. Tabii ki yüzlerce geliştiricinin paralel olarak geliştirdiği bir kodun kaçınılmaz olarak bir ‘version control’ sistemi ile kontrol edilmesi gerekiyor. Bunun için de ATLAS kendi Gitlab instance‘ı üzerinde tüm kodunu tutuyor.

  • Sanallaştırma her yerde! Üç dört sene öncesinin ‘sanal makinaları’ (virtual machines) ortadan kaybolup, yerini Docker container‘larına bırakmış durumda. Yazılım geliştirme için gerekli tüm araçların kurulu olduğu Docker image'ları indirip, birkaç dakikada istediğiniz yerden, istediğiniz platformdan çalışmaya başlayabiliyorsunuz! Şu anda biraz yazılıma ilgi duyan biriysenin kendinize en iyi yapabileceğiniz yatırımlardan biri Docker, Kubernetes gibi sanallaştırma uygulamaları öğrenmeye başlamak olacaktır.

  • LHC verilerini fizik araştırmalarımız için analiz ederken kullandığımız, parçacık fizikçilerinin kendilerinin geliştirdiği ROOT adında güzel bir framework var. Veriyi histogramlayıp, çok karmaşık fonksiyon fit'leri veya çeşitli çok-değişkenli istatistik modelleri uygulayabileceğiniz kullanışlı bir arayüzü var ROOT'un. Programa, günümüz programlama paradigmalarına ve özellikle Python tarafında machine learning gibi işlerin gerektirdiği veri yapılarına uyum sağlamak ve büyük veri setlerini paralel işlem özellikleri kullanarak işlemek için birçok yeni özellik eklenmeye başlandı. ROOT'un geliştiricilerinin gelip bizzat anlattıkları, ROOT'un yakında yayınlanacak 6.18.00 dağıtımındaki RDataFrame, tıpkı R ve Python'da pandas'daki dataframe mantığını sonunda mümkün kılmış görünüyor. Bunun gibi birçok geliştirmeyi göze alınca çalışma düzenimde ROOT'a daha fazla zaman ayırmanın epey işime yarayacağını fark ettim.

  • Son olarak da bahsi geçen geliştirme ve analizlerin büyük çoğunluğunu kendi bilgisayarınızda çalıştırmıyorsunuz elbette. Bunun için LHC'nin elde ettiği petabyte'larca (1 PB = 1000 Terabyte) veriyi tuttuğu bulut sistemi LHC Worldwide Grid‘e nasıl ‘iş’ göndereceğimiz, buradaki veri setlerine nasıl erişebileceğimize dair detaylı bir uygulama yaptık. Özellikle yüksek performansa dayalı bilimsel hesaplamanın da geleceği (hatta mevcut günümüz dahil) tamamen bulut (cloud) odaklı görünüyor, kaçınılmaz bir şekilde.

Üç gün boyunca sabahtan akşama kadar, çoğunu yeni yeni öğrendiğim yazılım kavramlarının havada uçuştuğu bir eğitim oldu benim için kısacası. İlerleyen zamanlarda spesifik olarak ATLAS SW framework'ünde yazılmış bu tip bir yazılımın nasıl bir yapıya sahip olduğu, ne tip işlere yaradığını ufak ufak buradan paylaşmaya niyetliyim bakalım.