DemodülasyonAlgoritmaları İçin En...

Preview:

Citation preview

Kasım 20151/46

Demodülasyon Algoritmaları İçin En İyilenmiş Windows İşletim Sistemi

Uygulamaları

Alparslan Fişne

afisne@aselsan.com.tr

1

Kasım 20152/46

İçerik

• Giriş

• Demodülasyon Algoritmaları

• Optimizasyon

• JNI Kullanımı

• Sonuçlar

2

Kasım 20153/46

Giriş

• Haberleşme yayınlarından ses ve mesajların elde edilmesi için demodülasyon algoritmaları kullanılmaktadır.

• Hedef sinyallere ait demodüle edilmemiş ham veriler çevrimiçi ya da çevrimdışı (veri kayıt) üretilmektedir.

• JAVA tabanlı Kullanıcı Arayüzü’nde demodülasyon algoritmaları gerçek zamanlı işleme ile yapılması için algoritmaların optimize çalışması gerekmektedir.

3

Kasım 20154/46

Giriş

• JAVA diliyle yazılmış algoritmalar C/C++ diliyle yazılmış algoritmalara göre daha yavaş çalışabilmektedir.

• JNI kullanımı sayesinde C/C++ dili ile yazılmış optimize kütüphaneler JAVA projelerinde kullanılmaktadır.

• JNI yöntemi ile gerçekleştirdiğimiz JAVA tabanlı uygulamada Intel Vektör İşleme Mimarisi dikkate alınarak çeşitli optimizasyonların gerçekleştirildiği algoritma kütüphanesi ile çok sayıda hedef kaynağı işleyebilen bir yazılım mimarisi sunulmuştur.

4

Kasım 20155/46

Giriş

5

Kasım 20156/46

Sunum Akışı

• Giriş

• Demodülasyon Algoritmaları

• Optimizasyon

• JNI Kullanımı

• Sonuçlar

6

Kasım 20157/46

Demodülasyon Algoritmaları

• Demodülasyon işlemleri analog ve sayısal modülasyonluyayınlarındaki seslerin üretilmesi için kullanılmaktadır.

• Analog demodülasyon işlemlerinin karmaşıklık düzeyinin az olması sebebiyle çalışmamızda analog demodülasyonalgoritmaları incelenmiştir.

7

Kasım 20158/46

Demodülasyon Algoritmaları

• AM Demodulasyon Algoritması

8

Kasım 20159/46

Demodülasyon Algoritmaları

• FM Demodülasyon Algoritması

9

Kasım 201510/46

Demodülasyon Algoritmaları

10

Kasım 201511/46

Sunum Akışı

• Giriş

• Demodülasyon Algoritmaları

• Optimizasyon

• JNI Kullanımı

• Sonuçlar

11

Kasım 201512/46

Optimizasyon

• Optimizasyonlar en iyi çalışan seri kod üzerine yapılmaktadır. Demodülasyon algoritması için JAVA’da en iyi çalışan seri kodlar yazılmıştır.

• Tek bir hedef kaynağı olduğunda hiçbir optimizasyon gerek kalmadan JAVA’da yazılan algoritmalar gerçek zamanlı çalışabilmektedir.

• Çok sayıda hedef kaynağı için aynı anda algoritmalar çalıştırılınca JAVA’da gerçekleştirilen en iyi seri kodun performansı gerçek zamanlı işlemeye yeterli olmamaktadır.

12

Kasım 201513/46

Optimizasyon

• JAVA tabanlı bir uygulamada algoritmaların optimize çalışabilmesi için performansı yüksek (C/C++) bir dille yazılmış kütüphanelere ihtiyaç duyulmaktadır.

• Günümüzde kullanılan masaüstü ve dizüstü bilgisayarlarda çoğunlukla Windows İşletim Sistemi yüklü olmakla beraber Intel işlemcilerin farklı kombinasyonları ile karşılaşmaktayız.

• Intel işlemciler sahip oldukları vektör işleme mimarisi ile optimizasyon yapılması istenen uygulamalara optimizasyon olanağı sağlamaktadır.

13

Kasım 201514/46

Optimizasyon

• Intel işlemciler geçmişten günümüze kadar farklı vektör işleme mimarilerine sahip olmaktadır. Bu mimariler SIMD (Single Instruction Multiple Data) mimarisi tabanlı olarak çeşitlenmektedir.

– SSE/SSE2/SSE3/SSE4

– AVX/AVX2 (2011, 2013)

– AVX-512 (~2016)

14

Kasım 201515/46

Optimizasyon

• SIMD mimarisi ile aynı anda bir işlem mimarinin kapasitesi kadar veri işleyebilmektedir.

• SSE mimarileri aynı anda 4 adet float32 veri işlenebilirken, AVX ile 8 adet , AVX-512 ile 16 adet float32 veri işlenebilmektedir.

• 1 GHz işlemci hızına sahip olan bir Intel işlemci AVX-512 mimarisi ile tek çekirdekte 16 GFLOPs veri işleme hızına sahip olabilmektedir. Dolayısıyla vektör işleme mimarisi kullanılarak çalıştırılan algoritmalar saniyede 16 GFLOP veri işleyebilmektedir.

15

Kasım 201516/46

Optimizasyon

• Vektör işleme mimarisi üzerinde koşan algoritma için farklı optimizasyon teknikleri uygulanarak maksimum verim elde edilmeye çalışılmıştır.

– Loop Unrolling

– Temporal Locality

– Spatial Locality

16

Kasım 201517/46

Optimizasyon

• Intel mimarisinin olanak sunduğu optimizasyonlar için ayrıca Intel C++ derleyici kullanılarak otomatik optimizasyonlar yapılabilmektedir.

• Yavaş çalıştığı bilinen döngüler için optimize kod üretilmesini sağlamak için derleyiciye bazı pragmalar sunulabilmektedir.

17

char foo(char *A, int n){

int i;

char x = 0;

#ifdef SIMD

#pragma simd // Generates incorrect code

#endif

#ifdef REDUCTION

#pragma simd reduction(+:x) // Generates correct code

#endif

#ifdef IVDEP

#pragma ivdep

#endif

for (i=0; i<n; i++){

x = x + A[i];

}

return x;

}

Kasım 201518/46

Optimizasyon

• Yapılan optimizasyonların yanı sıra Intel’in halihazırda sunduğu Intel IPP (Integrated Performance Primitives) Kütüphanesi’deoptimizasyon içeren vektör ve ses işleme fonksiyonlarına sahiptir. Bu çalışmamızda yapılan otomatik ve manuel optimizasyonların yanı sıra Intel IPP Kütüphanesi ile çalışmalar yapılıp sonuçlar alınmıştır.

18

Kasım 201519/46

Sunum Akışı

• Giriş

• Demodülasyon Algoritmaları

• Optimizasyon

• JNI Kullanımı

• Sonuçlar

19

Kasım 201520/46

JNI Kullanımı

• Mevcut durumda demodülasyon işlemleri için iki tane yazılım kullanılmaktadır. Fakat bu iki yazılım aynı birim üzerinde de çalışabilir.

• Bu durumda iki yazılım arasındaki arayüzkullanılarak yazılım karmaşıklığı artırmak yerine daha verimli çözümler tasarlanabilir. – Kullanıcı Arayüzü Yazılımı (JAVA)– Analiz Kontrol Yazılımı (C++)

20

Kasım 201521/46

JNI Kullanımı

• Analiz Kontrol Yazılımı’na bağımlılık algoritmaların C++ tabanlı IPP kütüphanesi kullanımı ile ortaya çıkmaktadır.

• IPP kütüphanesinin JAVA ile geliştirilen Kullanıcı ArayüzYazılımı’nda kullanıldığı bir mimari tasarlandığı takdirde sadece Kullanıcı Arayüz Yazılımı ile demodülasyonişlemleri gerçekleştirilebilir.

21

Kasım 201522/46

JNI Kullanımı

• JNI kullanımında en önemli dezavantaj vektör işlemlerinde dizilerin başka bir platforma kopyalanması sebebiyle oluşan ek yük süresidir.

• Dolayısıyla JNI kullanılarak yapılan algoritma işlemleri için veri transferinin az olmasına dikkat edilmesi gerekmektedir.

• Uygulamaya özel olarak en uygun bir veri boyu seçilerek platformlar arası veri transfer süresinin önemsiz yapılması hedeflenmelidir.

22

Kasım 201523/46

JNI Kullanımı

• Intel IPP Kütüphanesi ile Analog Kip Çözme Algoritmaları için Intel C++ derleyici kullanılarak dinamik bağlı kütüphane (.dll) yaratılmaktadır.

• Bu kütüphane projesi JAVA Derleyici ile derlenerek JAVA Projesi’nde kullanılacak başlık dosyası oluşturulur.

• Böylece JAVA Projesi’ne başka bir programlama dili ile yazılmış bir fonksiyon tanıtılmış olmaktadır.

• Görüntü işleme ve bazı Android İşletim Sistemi Uygulamaları’nda JNI ve IPP kullanımı vardır. (Android NDK)

23

Kasım 201524/46

Sunum Akışı

• Giriş

• Demodülasyon Algoritmaları

• Optimizasyon

• JNI Kullanımı

• Sonuçlar

24

Kasım 201525/46

Sonuçlar

• JNI yöntemi ile algoritma işlemleri JAVA uygulamasına aktarılmış olup yazılım mimarisi tamamlanmıştır.

• Ayrıca optimizasyonlardan dolayı elde edilen başarım sayesinde çok sayıda hedef kaynağının gerçek zamanlı olarak demodüle edilip ses ve mesajların alınmasına olanak sağlanmıştır.

• İki yazılım kullanmanın getirdiği arayüz ve senaryo karmaşıklığı yerine tek bir yazılım kullanarak yazılım mimarisi daha kaliteli hale getirilmiştir.

25

Kasım 201526/46

Sonuçlar

26

Kasım 201527/46

Sonuçlar

• JNI & IPP kullanımı sayesinde 10 kata yakın hızlanma sağlanmıştır.

• Tek hedef kaynağı yerine çok sayıda hedef kaynağı olduğunda demodülasyon işlemleri gerçek zamanlı olarak yapılabilmektedir.

• Benzetimlere bakıldığında JNI kullanımının getirdiği ek yük süresi optimum vektör uzunluklarında önemsiz olmaktadır.

• Gelecek çalışmalarda algoritmaların koşut olarak çok çekirdekli mimarilerde çalışması için optimizasyon çalışmaları planlanmıştır.

27

Kasım 201528/46

TEŞEKKÜRLER

Sorularınız

?

28

Recommended