=Paper=
{{Paper
|id=Vol-1483/73_Deneyim
|storemode=property
|title=Elektronik İstihbarat Algoritma Yazılımlarının OpenMP Kullanılarak Çok Çekirdekli İşlemciler Üzerinde Paralelleştirilmesi
|pdfUrl=https://ceur-ws.org/Vol-1483/73_Deneyim.pdf
|volume=Vol-1483
|dblpUrl=https://dblp.org/rec/conf/uyms/SeverF15
}}
==Elektronik İstihbarat Algoritma Yazılımlarının OpenMP Kullanılarak Çok Çekirdekli İşlemciler Üzerinde Paralelleştirilmesi==
Elektronik İstihbarat Algoritma Yazılımlarının OpenMP Kullanılarak Çok Çekirdekli İşlemciler Üzerinde Paralelleştirilmesi Murat Sever, Alparslan Fişne REHİS, ASELSAN, Ankara, Türkiye {msever,afisne}@aselsan.com.tr Özet. Sayısal Sinyal İşlemciler (DSP) gömülü sistemlerde geniş kullanım alanına sahiptirler. Aşırı güç tüketimi ve ısınma problemleri işlemcilerde çok çekirdekli mimariyi ortaya çıkarmış ve günümüzde bu eğilim de hız kesmeden devam etmektedir. Bu değişime paralel olarak aslen tek çekirdekli işlemcilerde çalışmak üzere yazılmış uygulamaların çok çekirdekli mimariye uygun bir biçimde taşınması yani paralelleştirilmesi, günümüz yazılım geliştirme dünyasının en önemli gündem maddelerinden biri olmuştur. Bu çalışmada elektronik istihbarat amaçlı mevcut sinyal işleme algoritmaları paralelleştirme imkanları açısından incelenerek, OpenMP çatısı kullanılarak Texas Instruments’a (TI) ait 8-çekirdekli işlemci üzerinde paralelleştirilecektir. Yine TI tarafından sağlanan UIA altyapısı ile toplanacak ölçüm sonuçları ile paralelleştirmenin ne kadar ölçeklenebilir olduğu raporlanacaktır. Anahtar Kelimeler: DSP·OpenMP·Sinyal İşleme·Paralelleştirme·Gömülü Sistemler·Comint Abstract. Digital Signal Processors have an extensive use in embedded sys- tems. There is a growing popularity in integration of many cores into one chip due to power consumption and heating considerations. In parallel with the mul- ticore trend, an important aspect of software development today is proper mi- gration to multicore environment. In this paper, we investigate parallelization in existing communication intelligence algorithms. Parallelized versions of select- ed algorithms are implemented on 8-core Texas Instruments (TI) DSP using OpenMP framework. We will present performance results, obtained by Unified Instrumentation Architecture (UIA) and report scalability of OpenMP parallel- ization. Keywords: DSP· OpenMP·Signal Processing·Paralellization· Embedded Systems·Comint 703 1 Giriş Moore yasası, işlemci hesap güçlerinin her 18 ayda bir ikiye katlanacağını öngörmüş ve bu kural uzun bir süre geçerliliğini korumuştur. İşlemcilerin saat hızlarının arttırılması, yakalanan performans başarısı yanında ciddi problemleri de doğurmuştur: Aşırı güç tüketimi ve ısınma. Tek bir işlem birimi ile mümkün olabilecek performans sınırına yaklaşılması çip üreticilerini işi aralarında paylaşıp aynı anda çalışabilen daha verimli çok çekirdekli işlemcilere yöneltmiş ve birden fazla işlem birimi içeren yongalar piyasaya sunulmuştur. Çok çekirdekli mimari sayesinde veri eş-zamanlı olarak işlenerek daha yüksek performans elde edilmektedir. Ancak tek çekirdekli mimaride çalışan kodun çok çekirdekli mimariye aktarılması kolay bir iş olmayıp ayrıyeten bir takım kütüphane ve derleyici desteği de gerektirmektedir. Texas Insruments (TI) firması kendi geliştirme ortamları olan Code Composer Studio'ya (CCS) OpenMP desteği sunarak bu yolda önemli bir adım atmıştır. Bu çalışmada, Aselsan bünyesinde tek çekirdekli işlemcilerde çalıştırılmak üzere elektronik istihbarat amaçlı geliştirilen kod parçacıkları paralelleştirme imkanları açısından incelenecek, paralelleştirme kabiliyeti barındıran kodlar OpenMP programlama modeli kullanarak paralelleştirilip CCS ortamına aktarılacak ardından hedef DSP platformu olan TMDSEVM6678LE üzerinde çalıştırılarak zaman ölçümleri alınacaktır. Zaman ölçümlerinin alımında System Analyzer bileşeni kullanılarak gerçek zamanlı çalışan koda en az biçimde müdahale edileecektir. Farklı alanlardan birçok uygulamanın C6678 hedef DSP platformu üzerinde paralelleştirme örneğini görmek mümkündür. Yakın zamanda yer alan çalışmalardan birinde, HEVC video çözümleme işlemi OpenMP kullanılarak paralelleştirilmiş ve tek çekirdeğe kıyasla %70 civarında hızlanma kaydedilmiştir [1]. Yine TI tarafından yapılan çalışmada Sentetik Açıklıklı Radar (SAR) algoritmaları C6678 platformu üzerinde OpenMP yardımıyla çok çekirdekli mimariye aktarılmış ve SAR algoritmalarının 2, 4 ve 8 çekirdek üzerinde başarılı bir biçimde ölçeklendiği teyit edilmiştir [2]. Bu çalışma şu şekilde biçimlendirilmiştir: Elektronik istihbarat amaçlı kullanılan algoritmalara 2. bölümde yer verilmiştir. 3. Bölümde paralelleştirme ve OpenMP ile alakalı genel bilgiler sunulacaktır. Çalışmada kullanılan gömülü platformlar 4. bölümde tanıtılacaktır. Gerçeklemeye ilişkin detaylar ve sonuçlar 5. bölümde ele alınmıştır. Son bölümde ise çalışmadan elde edilen neticeler değerlendirilecektir. 2 Elektronik İstihbarat Algoritmaları Elektronik istihbarat yeteneklerinin ani tepkilere karşı duyarlı olabilmesi için ilgili algoritmaların hızlı bir şekilde çalıştırabilir olması gerekmektedir. Gelişen işlemci mimarisine bağlı olarak algoritmaların çalışma süreleri giderek azalmakta, paralel işlemeye uygun algoritmaların kullanılması bu süreleri daha da kısaltmaktadır. El- ektronik istihbarat algoritmalarının çok sayıda alt branşı vardır. Bunlardan en önem- lileri, telsiz yayınların kip-çözme işlemleri ve ortamdaki yayın tespitidir. Bu çalışma- da algoritma paralelleştirme çalışmalarına örnek olarak Kip-Çözme (Demodülasyon) 704 Algoritması ve Yayın Tespit Algoritması ele alınmaktadır. Bu iki algoritma par- alelleştirmeye uygun olduğu için çalışmamızın odak noktasını oluşturmuştur. 2.1 Kip-Çözme Algoritması Kip-Çözme Algoritması’nda ele alınan işlem genlik kiplenimine sahip yayınların dinlenmesidir. Almaçlardan alınan taban banda indirgenmiş kompleks verinin genliği alınarak sayısal ses verisi oluşturulmaktadır [3]. Kip-Çözme senaryosu Fig. 1’de sunulmuştur. Taban Bant Kip Çözme Sayısal Kompleks Ham Veri İşlemleri Ses Verisi Fig. 1. Kip-Çözme senaryosu 2.2 Yayın Tespit Algoritması Almaçlardan alınan frekans uzamındaki veri üzerinde öncelikle spektrum oluşturma işlemi yapılmaktadır. Kullanıcı tarafından girilen eşik değerine bağlı olarak spektrumdaki eşik noktasını geçen noktalar yayın olarak tespit edilmektedir. Yayın tespitine ilişkin senaryo Fig. 2’de gösterilmektedir. Frekans Uzamındaki Spektrum Oluşturma ve Yayın Tespit Listesi Kompleks Ham Veri Eşikleme İşlemleri Oluşturma Fig. 2. Yayın tespit senaryosu 3 Paralelleştirme ve OpenMP Donanımdaki çok çekirdekli mimariye geçiş eğilimi ile birlikte, yazılım dünyasın- da da tek çekirdek üzerinde çalışan kodların çok çekirdekli mimaride çalışmasına yönelik birçok paralel programlama modelleri oluşturulmuştur. Message-Passing Interface (MPI), Pthreads, Open Computing Language (OpenCL) ve Open Multi- processing (OpenMP) bu çabanın bir sonucu olarak ortaya çıkmıştır. MPI genelde dağıtık bellek mimarili platformlarda, OpenCL ise heterojen sistemlerde yoğun olarak kullanılmaktadır. OpenMP ise paylaşımlı bellek mimarili çok çekirdekli platformlar için bir programlama çatısı sunmaktadır. Ana iş parçacığı Çatallanma İş parçacıkları Birleşme Fig. 3. OpenMP Fork/Join modeli Ana iş parçacığı 705 OpenMP yeni bir programlama dili olmayıp, mevcut sıralı bir şekilde işleyen kodların çok çekirdekli mimarilere kolay bir şekilde taşınabilmesine yönelik derleyici direktifleri içermektedir. Direktifler kodun hangi parçasının paralel bir şekilde çekirdeklere dağıtılarak çalıştırılacağını belirtir. Uygulama OpenMP desteği ile çalıştırıldığında paralel çalışırken, OpenMP desteği belirtilmediğinde kaynak kodda herhangi bir değişiklik gerektirmeksizin tek çekirdekte çalıştığı gibi çalışabilmektedir. Böylece paralel versiyon ile sıralı versiyon tek bir kaynak kodda tutulabilmektedir. Uygulama ilk çalıştığında tek bir iş parçacığı ile çalışmaya başlar. Paralel bölgeye ulaşıldığında ise iş parçacıkları oluşturulur ve bu iş parçacıkları farklı çekirdekler üzerine atanarak çalıştırılır. Paralel bölgenin sonunda ise senkronizasyon işlemi gerçekleştirilir ve kod ana iş parçacığı üzerinden çalışmaya devam eder. Paralel bölgenin başlangıcı #pragma omp parallel direktifi ile belirtilir. Bu durum Fig. 3'de sunulmuştur [4]. OpenMP yapıları sayesinde mevcut iş yükünün bütün çekirdekler üzerinde paylaşılmasını sağlayan “veri paralelleştirmesi” kolayca tanımlanabilir. Veri paralelleştirmesinin en kolay uygulanacağı bölgeler ise for döngüsü içeren kod parçalarıdır. Yalnız kodda yer alan her for döngüsü iş yükü paylaştırması açısından uygun olmayabilir. OpenMP yalnızca paralelleştirilecek bölgelerin tanımlanmasına ve kullanılacak çekirdek sayısına kontrol imkanı sunar. Kodun tek çekirdek üzerinde çalışma süresini T1; aynı kod parçasının P adet çekirdek üzerinde paralel çalıştığında geçen zamanı TP olarak kabul edersek, hızlanma (speedup) (1) numaralı formüldeki gibi tanımlanır. Hızlanma çekirdek sayısıyla doğru orantılı bir biçimde artarsa sistemin ölçeklenebilir olduğu söylenebilir. 𝑇1 (1) 𝑆= 𝑇𝑃 4 Gömülü Platform Çalışmada bahsedilen algoritmalar iki farklı gömülü platform üzerinde çalıştırılarak ölçümler alınmıştır. Bunlardan ilki algoritmaların asıl üzerinde koştuğu PowerPC platformudur. Platform, 1.0 Ghz işlemci hızına, 32kB L1, 1MB L2 belleğe ve toplamda 35W’lık güç tüketimine sahiptir. OpenMP paralelleştirmenin gerçekleneceği platform ise çok çekirdekli TI6678 platformudur. TMDSEVM6678LE modülü üzerinde 8 adet birbiri ile eşdeğer C66x çekirdeği barındıran, hem sabit hem kayar nokta işlem gücüne sahip bir DSP platformudur. 1GHz saat hızında sadece 10W gibi düşük güç tüketimine sahip oluşu platformu gömülü sistemlerde popüler hale getirmiştir. Sistem 32kBL1, 512 kBL2 belleğe sahiptir. C6678 aynı zamanda 4096kB'lık paylaşılır bir belleğe (MSMCRAM) sahiptir [5]. Bu çalışmada L1 bellekler önbellek olarak L2 bellek ise iş parçacıklarına özel alan olarak tanımlanmıştır. TI OpenMP gerşekleşiminde ise MSMCRAM alanı hem önbelleklenebilir hem de önbelleklenmez olarak kullanıcının erişimine sunulmuştur [6]. Kod ve sabitler önbelleklenebilir alana, çekirdekler arası erişilmesi gereken değişkenler ise önbelleklenemez alana yerleştirilmiştir. 706 5 Çok Çekirdekli Gerçekleştirim Bu bölümde seçili, tek çekirdek için yazılmış mevcut elektronik istihbarat algoritmalarının nasıl CCS ortamına aktarıldığı anlatılacaktır. Algoritmalar içindeki veri paralelleştirmesi kullanılarak değişen sayıda çekirdek kullanarak (1,2,...,8) zaman ölçümleri UIA aracılığı ile alınır. OpenMP kütüphanesinde yer alan omp_set_num_threads metodu ile iş paylaşımı yapacak çekirdek sayısı çalışma anında belirlenebilir. #pragma omp parallel for derleyici direktifi ile paralel bölgenin başlangıcı belirtilir. Zaman ölçümü ise UIA aracı vasıtasıyla Log_write2 metodu ile başlama ve bitiş olayları yayınlayarak yapılır. 5.1 Test Sonuçları Seçilen algoritmalar ilk olarak tek çekirdekli PowerPC8640D (PPC) platformu üzerinde çalıştırılmış ve ölçümler alınmıştır. Ardından C6678 hedef DSP platformuna taşınmış ve burada çok çekirdekli mimaride çalıştırılarak ölçümler tekrarlanmıştır. AM Kip-Çözme için OpenMP paralelleştirmesi neticesinde, 8 çekirdek kullanım durumunda, PPC tek çekirdeğe göre 6,24 kat, TI tek çekirdeğe göre ise yaklaşık 7 kat hızlanma sağlanmıştır. Hızlanmaya ait grafik Fig. 4'te gösterilmiştir. 8 7 6 Hızlanma 5 4 3 2 1 1 2 3 4 5 6 7 8 İdeal 1 2 3 4 5 6 7 8 Hızlanma 0,88 1,78 2,56 3,36 4,12 4,86 5,55 6,24 PPC (Tek çekirdek) Hızlanma 1,00 2,02 2,91 3,82 4,68 5,52 6,31 7,09 TI (Tek çekirdek) Fig. 4. AM Kip-Çözme için sağlanan hızlanma Yayın tespitine ait algoritma da benzer şekilde ilk olarak PPC üzerinde ardından paralelleştirilerek hedef DSP platformunda çalıştırılmıştır. Yayın tespiti için hesaplamada kullanılan nokta sayısı 6400 adet tutulduğunda ölçeklenebilir bir hızlanma sağlanamamıştır. Bu durum, iş yükünün çekirdeklere dağıtılması esnasında mecburen harcanan zamanın (overhead) fazla olmasından kaynaklanmaktadır. Yayın tespitindeki nokta sayısı 25600'e çıkarıldığında ise orijinal tek çekirdekli PPC platformuna göre 3 kata yakın hızlanma sağlanmıştır. Burada önemli bir diğer husus da güç tüketimidir. C6678 platformu 10W'lık, PPC platformu ise 35W'lık bir güç tüketimine sahiptir. Bu durumda yaklaşık üçte birlik bir güç tüketimi ile üç kata varan 707 bir performans artışı kaydedildiği unutulmamalıdır. Yayın tespitine ilişkin hızlanmaya ait grafik Fig. 5'te verilmiştir. 3,00 (PPC'ye göre) 2,50 Hızlanma 2,00 1,50 1,00 0,50 0,00 1 2 4 6 8 Yayın Tespit 0,56 1,05 1,14 1,27 1,31 6400 nokta Yayın Tespit 0,57 1,12 1,83 2,42 2,85 25600 nokta Fig. 5. Yayın tespiti algoritmasının paralelleştirmesi neticesinde sağlanan performans artışı 6 Sonuç Bu çalışmada, Aselsan içinde elektronik istihbarat amaçlı tek çekirdekli mimarilerde çalışması için yazılmış sinyal işleme algoritmalarının, OpenMP kullanılarak paralelleştirilmesi ve TI tarafından geliştirilen C6678 çok çekirdekli DSP platformu üzerinde gerçeklenmesi ele alınmıştır. OpenMP, bellek paylaşımlı mimarilerde algoritmaların hızlı ve kolay bir biçimde paralelleştrimesine olanak sağlayan bir programlama modelidir. Seçilen algoritmalar, hedef platform bellek mimarisi de gözetilerek OpenMP'nin sunduğu iş-paylaşımlı yapılar sayesinde kolayca çok çekirdekli mimaride çalışacak şekilde modifiye edilmiş, yapılan ölçümler neticesinde paralelleştirmeden ölçeklenebilir bir fayda sağlandığı gözlenmiştir. İş yükünün çekirdeklere paylaştırılması sayesinde, seçili algoritmalarında tek çekirdekli orijinal platformdakinin sadece üçte biri kadarlık güç tüketiminde 3 kattan 6 kata varan hız artışı saptanmıştır. Kaynaklar 1. M. Chavarrías, F. Pescador, M. J. Garrido, E. Juárez and C. Sanz, "A Multicore DSP HEVC Decoder Using an Actor-based Dataflow Model," in IEEE International Conference on Consumer Electronics (ICCE), 2015. 2. D. Wang, M. Ali and E. Blinka, "Synthetic Aperture Radar (SAR) Implementation on a TMS320C6678 Multicore DSP," Texas Instruments, 2015. 3. [Çevrimiçi].http://www.radio-electronics.com/info/rf-technology-design/am- reception/amplitude-modulation-detection-demodulation.php. [12 May 2015]. 4. C. Chapman, G. Jost and R. Van Der Pas, Using OpenMP, The MIT Press, 2008. 5. C. Hu and D. Bell, "KeyStone Memory Architecture," Texas Instruments, 2010. 6. OMP (OpenMP Runtime for SYS/BIOS) Users Guide, Texas Instruments. 708