Paralelisasi Transformasi Fourier pada Arsitektur General Purpose Graphic Processing Unit Untuk Klasifikasi Alat Musik Dengan Instrumen Solo Ridwan Rismanto 5109201049 DOSEN PEMBIMBING Dr. Nanik Suciati, S.Kom, M.Kom Wahyu Suadi, S.Kom, MM, M.Kom
Outline Tujuan Klasifikasi Alat Musik Instrumen Solo General Purpose Graphic Processing Unit (GPGPU) Implementasi GPGPU pada Klasifikasi Alat Musik Instrumen Solo Uji Coba dan Evaluasi Kesimpulan Future Work
Tujuan
Mempercepat proses klasifikasi
Pada proses ekstraksi fitur
Memanfaatkan paralelisme pada Graphic Processing Unit (GPU) Mengapa GPU?
Tingkat paralelisme yang tinggi (hingga 200 core + 20 multiprocessor) Bandwith memori yang tinggi (hingga 2Gbps) Arsitektur SIMD (Single Instruction Multiple Data)
Klasifikasi Alat Musik Instrumen Solo
Klasifikasi Alat Musik
Mengklasifikasi (mengenali) jenis alat musik
Solo instrumen single instrumen Berdasarkan fitur-fitur yang telah diekstraksi
Tahap-tahap klasifikasi
Pengambilan Sampel Ekstraksi Fitur Training data dengan Neural Network
Klasifikasi Alat Musik
Pengambilan Sampel
Data training dan testing
Pengambilan Sampel (2)
Pengacakan Frame
Untuk menghilangkan pengaruh elemen musik seperti beat dan not
Ekstraksi Fitur
FFT
Mengubah sinyal dari domain waktu ke domain frekuensi – Discrete Fourier Transform
Analisa Spektrum
Analisa statistikal pada spektrum frekuensi sinyal Dapat membantu menentukan timbre
Dengan menganalisa kombinasi frekuensi
Centroid, Kurtosis, Slope, Spread, Skewness, Rolloff
Spectral Features
Centroid
Kurtosis
Menunjukkan tingkat penyebaran spektrum
Skewness
Menunjukkan indikasi pengurangan amplitudo
Spread
Nilai flatness dari distribusi spektrum
Slope
Titik pusat dari spektrum Menunjukkan tingkat kejernihan suara
Ukuran distribusi asimetris dari nilai rata-rata spektrum
Rolloff
Menunjukkan frekuensi yang sinyal energinya dibawah 95%
Neural Network
Melakukan data training dengan menggunakan algoritma Neural Network Input berupa vektor fitur :
Vektor fitur data training Vektor target training Output berupa vektor output data training
Supervised Learning Single Perceptron
Fungsi aktifasi unit (g) : sigmoid (logistic) x : vektor input, w : vektor bobot
Neural Network (2)
Single Perceptron
Learning Algorithm
Optimization
Backpropagation Quasi-Newton
Iterasi : 1000
Arsitektur Perangkat Lunak
Implementasi GPGPU
General Purpose Graphic Processing Unit (GPGPU)
General Purpose Graphic Processing Unit (1)
Pemrograman parallel yang dilakukan pada Graphic Processing Unit (GPU) Perbedaan antara CPU dan GPU
CPU : dirancang untuk memproses satu instruksi secara sekuensial, menangani percabangan, dll. GPU : dirancang untuk memproses satu instruksi pada set data yang besar secara parallel.
NVIDIA CUDA
Arsitektur general purpose pada GPU Mengapa general purpose?
Pada GPU konvensional : dibagi menjadi vertex shader dan pixel shader Pada GPGPU : hanya satu unified shader pipeline, yang dapat digunakan untuk memproses perhitungan secara umum, selain visual dan grafis
Bahasa C/C++ untuk memprogram GPGPU
General Purpose Graphic Processing Unit (2)
Perbedaan arsitektur CPU dan GPU
Thread, block dan grid pada CUDA
Hirarki memori pada CUDA
General Purpose Graphic Processing Unit (4)
Kernel
Sebuah fungsi yang dieksekusi pada GPU Kernel akan dieksekusi sebanyak N kali pada N thread CUDA yang berbeda
Contoh kode untuk menjumlahkan dua vektor A dan B dengan besar N dan menyimpan hasilnya dalam vektor C
Contoh kode kernel CUDA untuk menjumlahkan dua vektor A dan B dengan besar N dan menyimpan hasilnya dalam vektor C
General Purpose Graphic Processing Unit (5)
Invokasi kernel yang dieksekusi oleh lebih dari satu blok
Implementasi GPGPU pada Klasifikasi Alat Musik
Implementasi GPGPU
Tahap-tahap
Zero padding dan data precission
Arsitektur GPGPU dengan thread, block, grid paralel FFT lebih optimal dengan jumlah N = 2n (powers of single factor)
Beberapa tahap eksekusi
Dilakukan zero padding untuk mendekati powers of single factor Dilakukan packaging, untuk menyatukan bilangan riil dan imajiner pada satu vektor Dilakukan konversi dari tipe data double precission ke single precission Mapping data ke tipe data complex pada CUDA
Pseudo-code
Eksekusi FFT
Alokasi device memori untuk input
Alokasi device memori untuk output
TransformSize : 2048 Enumerasi tipe data : COMPLEX BATCH : 1
Eksekusi FFT
Host to device
FFT plan creation
Dimensi : cufftComplex * TransformSize
Upload
Dimensi : cufftComplex * NDFT
Jenis eksekusi : in-place Enumerasi arah FFT : FORWARD
Destroy plan Download
Device to host
Flowchart
Uji Coba dan Evaluasi
Evaluasi
Perbandingan waktu eksekusi pada CPU dan GPU
Pengukuran waktu tanpa mempertimbangkan MMT (Memory to Memory Transfer) Pengukuran waktu dengan mempertimbangkan MMT
Secara umum, peningkatan waktu eksekusi dihitung dengan persamaan :
TPC adalah waktu komputasi FFT pada CPU dan TGPU adalah waktu komputasi FFT pada GPU dan waktu yang dibutuhkan untuk transfer data antara host dan device.
Hardware dan Software
Hardware
CPU Intel Core 2 Duo U7300 @ 1733 MHz Memory 4096 MB DDR3 GPU NVIDIA GeForce G210M 512 MB
CUDA Cores : 16 CUDA Driver : 3.0.1
Software
CUDA Toolkit 3.0 Win64 GPU Computing SDK 3.0 Win64 Microsoft Visual Studio 2008 Sistem Operasi Windows 7 64bit Matlab 7.6
Data dan Konfigurasi frame
N-DFT point :
fS (frekuensi sampling) : 44.100 Hz Tframe (durasi frame) : 25 ms DFT Point : 1102
Transform size : 2048 (211) Jumlah data untuk training :
N DFT fS T frame
500 frame x 6 instrumen alat musik = 3000 data
Jumlah data untuk testing :
250 frame x 6 insturmen alat musik = 1500 data
Ekstraksi Fitur CPU dan GPU CPU Min 32.3324 37.3986 41.0316 45.2845 45.8316 62.8219
Max 198.686 235.602 210.3 186.877 242.018 529.852
Mean StdDev 86.8537 32.5745 102.81 26.5253 105.445 21.9769 102.292 29.1531 125.659 25.372 141.045 43.7304
Spectral Centroid Trombone Tenor Sax Alto Sax Trumpet Clarinet Flute
Min 41.6186 90.1043 78.1423 49.2287 79.9132 84.521
Max 257.392 255.673 257.104 244.628 246.76 304.841
Mean StdDev 149.101 46.5633 191.827 27.97 176.817 30.4931 162.812 38.2708 171.901 32.8969 185.57 32.1773
Spectral Spread Trombone Tenor Sax Alto Sax Trumpet Clarinet Flute
Min 1.61309 0.996228 1.26793 1.85378 1.04801 -0.521252
Max 12.1898 5.68915 6.86113 8.95893 6.60184 5.50606
Mean 4.3398 2.91493 3.16398 3.74684 3.02053 2.65037
Spectral Kurtosis Trombone Tenor Sax Alto Sax Trumpet Clarinet Flute
Min 4.54328 3.13727 3.57505 5.47075 3.39984 1.64252
Max 207.139 41.2365 58.538 113.643 57.6642 43.2564
Mean StdDev 28.0402 25.3983 11.7906 5.00968 13.9228 6.26455 19.5384 12.8011 13.6677 6.17365 10.6864 5.0428
Spectral Slope Trombone Tenor Sax Alto Sax Trumpet Clarinet Flute
Min -2.49E-07 -2.46E-07 -2.44E-07 -2.42E-07 -2.42E-07 -2.33E-07
Max -1.62E-07 -1.43E-07 -1.56E-07 -1.68E-07 -1.40E-07 9.52E-09
Spectral Rolloff Trombone Tenor Sax Alto Sax Trumpet Clarinet Flute
Min 581.396 21.5332 301.465 43.0664 258.398 602.93
Max 3466.85 10335.9 4026.71 4715.77 8527.15 17312.7
Spectral Centroid Trombone Tenor Sax Alto Sax Trumpet Clarinet Flute Spectral Spread Trombone Tenor Sax Alto Sax Trumpet Clarinet Flute Spectral Skewness Trombone Tenor Sax Alto Sax Trumpet Clarinet Flute
GPU Min 32.3324 37.3986 41.0316 45.2845 45.8316 62.8219
Max 198.686 235.602 210.3 186.877 242.018 529.852
Mean StdDev 86.8537 32.5745 102.81 26.5253 105.445 21.9769 102.292 29.1531 125.659 25.372 141.045 43.7304
Min 41.6184 90.1044 78.1422 49.2287 79.9132 84.5211
Max 257.392 255.673 257.104 244.628 246.76 304.841
Mean StdDev 149.101 46.5633 191.827 27.97 176.817 30.4931 162.812 38.2708 171.901 32.8969 185.57 32.1773
Min 1.61309 0.996228 1.26793 1.85378 1.04801 -0.521252
Max 12.1898 5.68916 6.86114 8.95893 6.60185 5.50606
Mean 4.3398 2.91493 3.16398 3.74684 3.02053 2.65037
Spectral Kurtosis Trombone Tenor Sax Alto Sax Trumpet Clarinet Flute
Min 4.54328 3.13727 3.57505 5.47075 3.39984 1.64252
Max 207.139 41.2364 58.538 113.644 57.6643 43.2564
Mean StdDev 28.0402 25.3983 11.7906 5.00968 13.9228 6.26455 19.5384 12.8011 13.6677 6.17365 10.6864 5.0428
Mean StdDev -2.20E-07 1.69E-08 -2.12E-07 1.38E-08 -2.11E-07 1.14E-08 -2.12E-07 1.51E-08 -2.00E-07 1.32E-08 -1.92E-07 2.27E-08
Spectral Slope Trombone Tenor Sax Alto Sax Trumpet Clarinet Flute
Min -2.49E-07 -2.46E-07 -2.44E-07 -2.42E-07 -2.42E-07 -2.33E-07
Max -1.62E-07 -1.43E-07 -1.56E-07 -1.68E-07 -1.40E-07 9.52E-09
Mean StdDev -2.20E-07 1.69E-08 -2.12E-07 1.38E-08 -2.11E-07 1.14E-08 -2.12E-07 1.51E-08 -2.00E-07 1.32E-08 -1.92E-07 2.27E-08
Mean StdDev 1234.39 390.597 671.916 705.3 1312.71 553.166 1534.1 378.264 2289.95 1076.38 2241.69 1676.2
Spectral Rolloff Trombone Tenor Sax Alto Sax Trumpet Clarinet Flute
Min 581.396 21.5332 301.465 43.0664 258.398 602.93
Max 3466.85 10335.9 4026.71 4715.77 8527.15 17312.7
Mean StdDev 1234.39 390.597 671.916 705.3 1312.71 553.166 1534.1 378.264 2289.95 1076.38 2241.69 1676.2
StdDev 1.82134 0.660201 0.697917 1.17038 0.662237 0.765084
Spectral Skewness Trombone Tenor Sax Alto Sax Trumpet Clarinet Flute
StdDev 1.82134 0.660201 0.697917 1.17038 0.662237 0.765084
Hasil Klasifikasi
Error rate
CPU : 1670 GPU : 1081
Hasil Klasifikasi (2)
FFT CPU Trombone Tenor Sax Alto Sax Trumpet Clarinet Flute Trombone 94.20% 4.80% 0.00% 0.00% 0.80% 0.20% Tenor Sax 0.80% 98.20% 0.80% 0.00% 0.20% 0.00% Alto Sax 0.00% 10.40% 89.60% 0.00% 0.00% 0.00% Trumpet 3.00% 0.00% 0.00% 95.00% 1.40% 0.60% Clarinet 0.80% 0.00% 0.00% 0.20% 98.60% 0.40% Flute 0.60% 0.20% 1.00% 12.80% 1.20% 84.20%
FFT GPU Trombone Tenor Sax Alto Sax Trumpet Clarinet Flute Trombone 99.40% 0.00% 0.20% 0.20% 0.00% 0.20% Tenor Sax 0.40% 98.80% 0.60% 0.00% 0.00% 0.20% Alto Sax 0.60% 0.20% 97.20% 0.20% 0.00% 1.80% Trumpet 0.80% 0.00% 1.20% 94.40% 0.00% 3.60% Clarinet 0.40% 0.20% 0.40% 0.00% 97.60% 1.40% Flute 1.40% 0.00% 0.20% 0.40% 0.00% 98.00%
Pengukuran Waktu
Waktu eksekusi
Tgpu Th 2 d TFFT Td 2 h Tgpu : total waktu eksekusi FFT pada GPU Th2d : waktu transfer memori dari host ke device TFFT : waktu eksekusi FFT pada GPU Td2h : waktu transfer memori dari device ke host
Hasil Pengukuran Waktu Pengukuran waktu per-instrumen alat musik 0,012 0,01 Waktu (detik)
0,008
MMT
0,006
GPU CPU
0,004 0,002 0 Trombone Tenor Sax
Alto Sax
Trumpet
Instrumen
Clarinet
Flute
Hasil Pengukuran Waktu (2) Pengukuran waktu per-iterasi pada tahap ekstraksi fitur 0,012 0,01 Waktu (detik)
0,008 CPU
0,006
GPU + MMT
0,004 0,002 0 1
100
199
298 Iterasi
397
496
Peningkatan Kecepatan
Eksekusi FFT Instrumen Waktu 1 2 3 4 5 6
Peningkatan Kecepatan
GPU
CPU
Waktu tanpa MMT
0,010042 0,010049 0,010081 0,010057 0,010096 0,010053
Waktu dengan MMT
0,000396 0,000393 0,000413 0,000395 0,000401 0,000385
0,002379 0,002354 0,002382 0,002349 0,002349 0,002345
Ekstraksi Fitur Instrumen
CPU
1 2 3 4 5 6
10,271058 9,833668 9,852464 9,890035 9,838902 9,777052
GPU 6,690781 6,142269 6,026518 6,111425 6,060907 5,997911
Peningkatan Kecepatan 1,5 1,6 1,6 1,6 1,6 1,6
Tanpa Dengan MMT MMT 25,4 25,6 24,4 25,5 25,2 26,1
4,2 4,3 4,2 4,3 4,3 4,3
Waktu (detik)
Selisih Waktu Eksekusi 0.0045 0.004 0.0035 0.003 0.0025 0.002 0.0015 0.001 0.0005 0
h2d fft d2h
2^11
2^16
2^17
2^18
Jumlah Elemen
11
2 2 16 2 17 2 18
Host to Device 0.000047 0.000529 0.000953 0.002370
FFT Device to Host 0.000048 0.000094 0.000081 0.000816 0.001734 0.002277 0.001906 0.004010
Kesimpulan
Peningkatan kecepatan eksekusi FFT
Peningkatan kecepatan proses ekstraksi fitur : 1,6x
Tanpa MMT : 25x Dengan MMT : 4x
Total tahap ekstraksi fitur adalah 6
Transfer antar memori menjadi bottleneck
83% waktu eksekusi adalah transfer antar memori Transfer rate pada G210M
Device to host : 1352,2 MBps Host to device : 1820,4 MBps
Future Work
1x proses transfer memori
Proses FFT dilakukan pada tiap iterasi tanpa harus melakukan transfer data antar memori
Memanfaatkan fitur batch CUFFT Memparalelisasi tahap-tahap ekstraksi fitur lainnya
Sekian
Terima kasih