Modelleme ve Benzetim çalışmaları ve paralelleştirme teknikleri

Benzetim, dinamik ve karmaşık sistemlerin modellenerek bu sistemlerin çeşitli koşullar altında davranışlarının analiz edilmesine imkân sağlayan ve yeni sistemler tasarlanmasına yardım eden etkili bir yöntemdir.

Gerçekçi benzetimlerin yapılması için yüksek sadakat seviyesinde benzetim modellerinin geliştirilmesi ve bunların üzerinde detaylı analizlerin yapılması gerekmektedir. Detaylı analizler, genellikle çok sayıda benzetim koşumu ile mümkün olmaktadır. Sistem benzetimlerinin çeşitli senaryolarda davranışlarının makul sürelerde elde edilebilmesi için etkin hesaplama yöntemlerine ve benzetim araçlarına ihtiyaç duyulmaktadır.

Şirketimizde geliştirilen sistemlerin tasarımı ve detaylı analizi için yüksek sadakat seviyeli benzetim geliştirmeye olanak sağlayan yazılımlar kullanılmaktadır. Bu yazılımların bir kısmı rafta hazır ticari (RAHAT) ürünler iken, bir kısmı da Roketsan bünyesinde geliştirilmektedir. Geliştirilen bu yazılımların amacı, hem açık kaynak kütüphaneleri kullanarak özgün ve bağımsız bir benzetim çatısı geliştirmek, hem de RAHAT ürünlerde karşılaşılan performans, ölçeklenebilirlik ve güvenilirlik sorunlarının üstesinden gelebilmektir. Özellikle performans ve ölçeklenebilirlik sorunlarının üstesinden gelebilmek için geliştirilen yazılımların optimizasyonunu sağlamak ve etkin hesaplama tekniklerini kullanmak gerekmektedir 1]. Bu tekniklerin başında benzetimlerin paralel ve dağıtık ortamlarda çalıştırılması gelmektedir.

Paralelleştirme Teknikleri

Literatürde paralelleştirme tekniklerinin birçok farklı sınıflandırmasına rastlamak mümkündür. Bu sınıflandırmalar arasında yaygın bir şekilde kabul gören sınıflandırmalar problemin ayrıştırılmasına göre ve paralel işlemler arasındaki iletişime göre yapılan sınıflandırmalardır (Şekil 1). Problemin ayrıştırılmasına göre yapılan paralelleştirmeler problemin nasıl paralelleştirileceğini ele alır. Paralel işlemler arasındaki iletişime göre yapılan paralelleştirmeler ise ortak kaynaklara nasıl erişileceği ile ilgilenir. Şekil 1’deki sınıflandırmalara ek olarak işlemciler içerisinde bit düzeyinde paralellik, komut düzeyinde paralellik gibi farklı sınıflandırmalar da mevcuttur 2]. Bu yazıda daha çok yazılım geliştirme seviyesinde geliştiriciye paralelleştirme olanağı sağlayan tekniklerden bahsedilmiştir.

Veri Paralelliği

Veri paralelliği, farklı çekirdekler/işlemciler arasında paralel olarak işlenecek veriler için veri dağıtımını sağlayan bir tekniktir. Matris çarpımı, matris toplamı ve interpolasyon tablolarında arama gibi büyük veriler üzerinde yapılan işlemlerde bu teknikten yararlanılabilmektedir. Bu sayede aynı komut, farklı veriler üzerinde tek seferde çalıştırılarak işlem süresi azaltılabilmektedir.

Görev Paralelliği

Görev paralelliğinde, farklı fonksiyonlar farklı işlemciler üzerinde çalışacak şekilde bir kurgu vardır. Paralel çalıştırılabilen etmen (İng. agent) tabanlı benzetimler, görev paralelliğinin kullanıldığı yaygın örneklerden biridir 3]. Örneğin; benzetim ortamında bulunan iki hava aracına ait hesaplamaların paralel bir şekilde farklı işlemcilerde yapılması ve gerekli zamanlarda senkronizasyonun sağlanması görev paralelliği sağlanarak yapılabilir

Paylaşımlı Bellek Üzerinden Paralellik

Paylaşımlı bellek üzerinden paralelliğin sağlandığı çözümlerde işlemcilerin erişmek/güncellemek istedikleri bellek alanı ortaktır. Bu durum, verilerin farklı kaynaklar arasında transfer edilmesini gerektirmezken, işlemciler aynı kaynak üzerinden okuma/yazma işlemi yaptıkları için bellek alanının kullanımı konusunda özen gerektirir.

İleti Üzerinden Paralellik

Paylaşımlı bellek mimarilerinin aksine işlemciler birbirinden bağımsız bellek alanlarını kullanabilirler. Bu durumda kaynaklara erişim için işlemciler sahip oldukları verileri standart bir ileti formatıyla (örneğin, Message Passing Interface - MPI protokolü) birbirleriyle paylaşabilmelidir. Özellikle farklı konumlardaki kaynakların işleme katıldığı durumlarda bu yöntemin kullanılması kaçınılmazdır.

Paralel Hesaplamada Kullanılan Mimari ve Teknolojiler

Paralelleştirme teknolojilerinden yararlanmak birden çok çekirdeğin, işlemcinin, bilgisayarın veya bilgisayarlar kümesinin kullanımıyla mümkün olabilir. Bir benzetim kullanıcısı, sıradan bir bilgisayar üzerindeki ana işlem birimi (CPU) çekirdeklerinden yararlanarak paralelleştirme teknolojilerini kullanabileceği gibi, yüksek başarımlı hesaplama (İng. high performance computing) teknolojilerini kullanarak yüzlerce bilgisayarın benzetim iş yükünü paylaşmasını da sağlayabilir. Farklı donanım seviyelerinden etkin biçimde yararlanabilmek için her bir teknolojide kullanılan hesaplama teknolojisi, bellek paylaşım durumu ve iletişim altyapıları göz önünde bulundurulmalı ve probleme uygun bir paralelleştirme stratejisi belirlenmelidir. Uygun olmayan stratejilerin seçilmesi, çözülmesi istenen benzetimin mevcut durumdan bile daha uzun sürelerde çalışmasına neden olabilir (Şekil 2).

CPU seviyesinde benzetimlerin paralel çalıştırılması uzun yıllardır süregelmekte ve hem veri hem de görev paralelliği kapsamında paralelleştirme teknikleri kullanılabilmektedir.

Bu kapsamda gerek paylaşımlı bellek, gerek dağıtılmış bellek mimarilerine yönelik yazılım kütüphaneleri ve standartları (örn; OpenMP, MPI) geliştiricilerin işini kolaylaştırmaktadır. Son yıllarda yapay zekâ, büyük veri ve veri bilimine artan ilgi paralel hesaplama teknolojilerinde GPU teknolojilerinin kullanımını da yaygınlaştırmıştır. Benzetimlerde, matematiksel modeller içerisinde yoğun olarak yer alan, matris üzerinde gerçekleştirilen operasyonlar gibi veri paralelliğinin kullanılabileceği işlemler için GPU kullanımı önemli hızlanmalar sağlamaktadır

Yakın zamanlarda ortaya çıkan diğer bir teknoloji Google’ın sunduğu tensör işlem birimi (TPU) teknolojisidir 4]. TPU’lar yapay sinir ağlarından yararlanılarak üretilen yapay zekâ uygulamalarını eğitmek için kullanılmaktadır. Bazı çalışmalar, TPU teknolojisinin bazı problemler için CPU ve GPU’lara göre 15-30 kat daha hızlı olduğunu belirtmektedir 5]. TPU’lar büyük matris işlemlerinde ve veri yoğunluklu hesaplamalarında kullanılabilecek etkin bir platformdur 6]. Ancak, TPU’lar sadece TensorFlow makine öğrenmesi platformunu desteklediği için kullanım alanı oldukça kısıtlıdır.

Benzetimlerde Kullanılan Paralelleştirme Teknikleri

İleri Modelleme ve Benzetim Teknolojileri Müdürlüğü bünyesinde C++ tabanlı olarak geliştirilmekte olan benzetim çatısı paralel ve dağıtık hesaplama tekniklerinden yararlanarak benzetimleri daha hızlı şekilde sonuçlandırmayı amaçlamaktadır. Bu çatı kapsamında benzetimlerin paralelleştirilmesi iki başlık altında ele alınmaktadır.

Model Seviyesinde Paralelleştirme

Seri olarak çalıştırılan benzetim modelleri için temel problem, koşum süresinin bazı senaryolar için beklenilenden uzun sürmesi ve bu durumun modellerin gerçek zamana yakın çalışma gereksinimlerini ihlal etmesinden kaynaklanmaktadır. Model seviyesinde paralelleştirme, birbirinden bağımsız çalışan benzetim varlıklarının paralel çalıştırılmasıyla hızlanma elde etmeyi amaçlar. Gerçek dünya göz önünde bulundurulduğunda benzetime konu olacak varlıklar paralel olarak işlemektedir. Bu kurgu ile benzetim varlıklarının (hedef, tehdit, ortam, IR karıştırıcı gibi) da uygun konfigürasyonlar sağlanarak paralel çalıştırılması mümkündür. Bir başka deyişle, görev paralelliğini, benzetim varlıkları seviyesinde çalıştırmak doğal bir paralellikten (İng. natural parallelism) kaynaklanmaktadır.

Monte Carlo Benzetimlerinin Paralelleştirilmesi:

Monte Carlo koşumları/analizleri, benzetimlerin farklı başlangıç koşullarıyla çok sayıda çalıştırılarak sonuçlar elde edilmesini amaçlayan bir yöntemdir. Koşum sayısının çok olması, bu sürecin uzamasına ve bazı projelerde yeterince benzetim koşturulamamasına ve yeterli analiz yapılamamasına neden olmaktadır. Bu problemi gidermek için aralarında etkileşim bulunmayan Monte Carlo koşumlarının birden çok çekirdeğe ve/veya bilgisayara dağıtılarak paralel çalıştırılması hedeflenmiştir. Geliştirmekte olduğumuz Paralel ve Dağıtık Monte Carlo Koşturucusu ile Monte Carlo koşumları, farklı işlemciler ve bilgisayarlara dağıtılarak, paralel çalıştırmak mümkündür 8]. Bu yazılım, koşumların kaynaklara dağıtılmasını kullanıcılardan mümkün olduğunca soyutlayacak şekilde geliştirilmiştir (Şekil 3). Böylece geliştiriciler en az çabayla, çok sayıda bilgisayar kaynağı kullanarak Monte Carlo benzetimlerini daha kısa sürelerde tamamlayabilmektedirler. Aynı zamanda mevcut işlem gücünün atıl kalmaması sağlanarak mevcut bilgisayarlar daha etkin bir şekilde kullanılabilmektedir.

Sonuç

Sağlıklı bir sistem geliştirme ve detaylı analizlerin yapılabilmesi için çoklu benzetim koşumu oldukça önemlidir. Katı zaman kısıtlarının bulunduğu projelerde makul sürede yeterince benzetimin koşturulması, uygun altyapı olmadığı için mümkün olmamaktadır. Bununla birlikte, bazı benzetim modellerinin beklenilenden uzun sürede koşması, modellerin gerçek zamana yakın çalışma gereksinimlerini sağlamadığı için gerçekçi analizler yapılamamaktadır. Roketsan, İleri Modelleme ve Benzetim Müdürlüğü’nde geliştirilmekte olan özgün ve bağımsız benzetim çatısı, benzetimlerin paralel ve dağıtık koşturularak daha hızlı sonuçlar alınabilmesini amaçlamaktadır. Bu çatı, mevcut durumda model seviyesinde görev paralelliğini sağlayabilmekte ve Monte Carlo benzetimlerini paralel bir şekilde koşturabilmektedir. Güncel teknolojiler takip edilerek bu altyapının/çatının GPU teknolojilerinden de yararlanması ve dağıtık benzetim ortamlarında Roketsan’daki model geliştiricilerin kullanımına sunulması planlanmaktadır.

Kaynak: Roketsan dergisi 17.sayısı / Kıdemli Uzman Mühendis Müge Canpolat Şahin / Kıdemli Uzman Mühendis Dr. Bilge Kaan Görür

 

Yorum yapın