Fakultas Ilmu Komputer
Universitas Brawijaya 1165
Implementasi Pemrosesan Paralel untuk Ekstraksi Fitur QRS pada data Electrocardiography (ECG) menggunakan Algoritma Pan-Tompkins
dengan Framework Renderscript
Sabit Ihsan Maulana1, Agung Setia Budi2, Adhitya Bhawiyuga3
Program Studi Teknik Komputer, Fakultas Ilmu Komputer, Universitas Brawijaya Email: 1[email protected], 2[email protected], 3[email protected]
Abstrak
Teknologi telemedicine semakin banyak dibutuhkan untuk keperluan perawatan pasien secara jarak jauh. Khususnya pada pasien dengan resiko penyakit yang tinggi seperti jantung. Karena peran dan manfaatnya yang besar, banyak penelitian yang dilakukan untuk mengembangkan teknologi ini agar relevan dengan perkembangan zaman. Salah satu teknologi terkini yang diadaptasi oleh penelitian telemedicine adalah cloud computing. Dengan perpaduan ini, kebutuhan komputasi yang besar dapat dialihkan menuju cloud. Namun, terdapat permasalahan baru yang muncul dimana sistem yang dihasilkan akan selalu bergantung kepada internet, sedangkan tidak semua wilayah tercover atau memiliki jaringan internet yang baik. Maka dari itu, peneliti mengajukan sebuah sistem pendeteksian QRS dengan pemrosesan dilakukan secara paralel pada edge device menggunakan algoritma Pan- Tompkins dan Renderscript framework. Sistem ini merupakan sebuah aplikasi berbasis Android yang menerima data ECG kemudian melakukan proses pendeteksian QRS dengan memanfaatkan Renderscript untuk melakukan pemrosesan secara paralel. Proses pendeteksian oleh sistem akan diukur waktu eksekusinya untuk mengetahui perbedaan performa dengan pemrosesan secara serial. Hasil dari proses pendeteksian akan dibandingkan untuk mengetahui tingkat akurasi dari sistem. Sebuah aplikasi profiler juga akan dipakai untuk mengetahui tingkat CPU Utilization. Dalam pengujiannya, sistem memperoleh waktu eksekusi 3 kali lebih kecil dengan rata-rata kecepatan pemrosesan sebesar 301,340 baris/detik. Sistem juga memperoleh nilai sensitivity sebesar 99.64% dan nilai positive predictivity sebesar 99.47%. Rata-rata CPU Utilization pada sistem berada pada nilai 82%, lebih tinggi 32%
dibandingkan dengan pemrosesan secara serial.
Kata kunci: Pemrosesan Paralel, Fitur QRS, ECG, Algoritma Pan-Tompkins, Framework Renderscript.
Abstract
Telemedicine technology is increasingly needed for remote patient health care. Especially for patients with a high risk/severe disease such as heart disease. Due to its important role and benefits, a lot of research has been carried out to improve this technology so that it's relevant with current state-of-the- art technologies. One of the latest technologies that have been adapted on telemedicine research is cloud computing. With this combination, CPU intensive task can be transferred to the cloud. However, a new problems arose. The resulting system now will always depend on the internet, while not all areas are covered or have a good internet connection. Therefore, this researcher proposes a QRS detection system with parallel processing on the edge device using the Pan-Tompkins algorithm and Renderscript framework. This system is an Android-based application that receives ECG data and then performs the QRS detection process by utilizing Renderscript to perform parallel processing. Execution time on the detection process will be measured to determine the difference in performance with serial processing.
The results of the detection process will be compared to determine the level of accuracy of the system.
A profiler application will also be used to find out the CPU Utilization level. In testing, the system obtained 3 times smaller execution time with an average processing speed of 301,340 row/second. The system also obtained a sensitivity value of 99.64% and a positive predictivity value of 99.47%. The average CPU utilization on the system is at 82%, 32% higher than serial counterpart.
Keywords: Parallel processing, QRS Feature, ECG, Pan-Tompkins Algorithm, Renderscript Framework.
1. PENDAHULUAN
Menurut WHO, penyebab kematian nomor 1 di dunia adalah penyakit kardiovaskular (CVD).
Dengan perkiraan angka kematian per tahun sebesar 17 juta orang atau 31 persen, dimana penyakit tersebut menempati porsi terbesar dari total kematian di dunia. CVD merupakan sekelompok penyakit yang terdiri dari beberapa kelainan jantung dan pembuluh darah, seperti penyakit jantung koroner, penyakit jantung rematik, dll. Aritmia adalah salah satu penyakit jantung yang banyak diderita oleh pasien penyakit jantung. Aritmia merupakan suatu kondisi di mana laju atau ritme detak jantung tidak normal. Kondisi ini terbagi menjadi dua jenis, yaitu tachycardia dan bradycardia.
Dimana kedua jenis tersebut menunjukkan detak jantung yang terlalu cepat atau terlalu lambat. Di Indonesia terdapat sekitar 2 juta kasus penderita aritmia pada tahun 2011. Dan diperkirakan jumlahnya akan terus meningkat. Meskipun tidak ada konsekuensi yang fatal untuk sebagian besar jenis aritmia, beberapa jenis dapat berpotensi menyebabkan komplikasi seperti stroke atau bahkan gagal jantung.
Dengan sebuah prosedur yang disebut dengan elektrokardiografi, beberapa gangguan jantung seperti penyakit jantung koroner dan aritmia dapat diidentifikasi dengan menggunakan analisis sinyal jantung yang disebut elektrokardiogram. Proses elektrokardiografi menggunakan sebuah elektroda yang dihubungkan ke bagian tubuh manusia yang berdekatan dengan jantung, yaitu di dada sebelah kiri. Sinyal yang dihasilkan dari proses perekaman dapat dipecah menjadi 3 komponen utama, yaitu gelombang P, QRS complex, dan gelombang T. Gelombang P mewakili fase depolarisasi atrium. QRS complex mencerminkan proses depolarisasi ventrikel, dan gelombang T mencerminkan proses repolarisasi ventrikel. Dengan menghitung jumlah R-Peaks yang terjadi dalam satu menit, penyakit jantung seperti aritmia dapat diidentifikasi menggunakan gelombang QRS complex.
Dalam studinya, Jiapu Pan dan Willis J.
Tompkins merilis algoritma yang digunakan untuk mendeteksi QRS Complex dalam data ECG secara akurat. Algoritma yang disebut dengan algoritma Pan-Tompkins ini menggunakan sekumpulan filter dan operasi aritmatika yang dibagi menjadi 2 fase, pre- processing dan decision making. Tahap pre-
processing berusaha meminimalkan gangguan noise dan memperkuat gelombang QRS.
Sedangkan tahap decision making mencoba melakukan identifikasi peak pada sinyal yang telah difilter. Para peneliti ini menggunakan sampel data dari MIT-BIH Arrhythmia Database. Hasil yang diperoleh dibandingkan dengan data referensi dan diperoleh nilai akurasi sebesar 99,3%.
Para peneliti terinspirasi untuk mencari solusi agar penyakit jantung dapat diidentifikasi secara dini dan pencegahan dapat dilakukan secara cepat dan tepat. Sebuah studi tentang sistem telemonitoring ECG dan tekanan darah dilakukan oleh Bai et al (1999) dengan tujuan untuk merancang sistem home-care telemedicine yang hemat biaya. Peneliti menggunakan konfigurasi perangkat yang terdiri dari detektor
& pemancar ECG, desktop portable monitor, dan blood pressure watch. Sistem ini menggunakan sebuah PC sebagai sink, untuk kemudian melakukan transfer data melalui jalur telepon (PSTN). Namun pada saat penelitian tersebut dibuat, tidak banyak orang yang memiliki PC / sejenisnya. Maka dari itu, teknologi serupa terus dikembangkan guna mencapai biaya dan efisiensi serendah mungkin.
Wen et al (2007) kemudian mengajukan penelitian dengan menggunakan sebuah portable Holter yang dapat digunakan pasien dan data hasil klasifikasi kemudian dikirim melalui GPRS dengan menggunakan MMS.
Seiring dengan perkembangan teknologi dan jaringan internet, dibutuhkan sistem yang lebih baik dalam hal pemrosesan dan pengiriman. Di berbagai belahan dunia saat ini, teknologi perangkat seluler dan cloud computing telah banyak tersebar. Jaringan internet telah banyak berkembang melalui kabel / fiber optics dan jaringan seluler. Untuk mengikuti perkembangan teknologi ini, Xiaoliang Wang et al (2014) mengajukan penelitian untuk mengembangkan teknologi telemedicine dengan melakukan kombinasi antara komputasi pada perangkat seluler dan cloud untuk menciptakan personal healthcare system yang cerdas. Untuk proses pengambilan data yang dibutuhkan, peneliti menggunakan teknologi jaringan sensor nirkabel yang dipasang pada tubuh pasien.
Smartphone kemudian melakukan pengumpulan data, noise filtering dan feature extraction, dari sensor. Data tersebut kemudian dikirimkan menuju cloud untuk dilakukan proses training dan hasil pemrosesan berupa klasifikasi detak
jantung dan diagnosis decision making akan dikirimkan kembali ke smartphone.
Pertumbuhan teknologi cloud computing membuat sebuah solusi dari banyak permasalahan menjadi cloud centric. Tidak terlepas pada bidang telemedicine. Seperti pada studi yang dilakukan oleh Xia et al (2013), data dari pasien akan dikirim ke cloud untuk diproses, termasuk didalamnya proses pendeteksian QRS Complex. Selain beberapa keuntungan yang didapatkan, seperti peningkatan keamanan dan kecepatan pemrosesan, hal ini juga membawa beberapa dampak, salah satunya adalah ketergantungan sistem pada internet, dimana sampai sekarang, terdapat beberapa daerah yang tidak terjangkau oleh internet.
Penelitian yang dilakukan oleh peneliti bertujuan untuk mengembangkan metode pengolahan data ECG pada perangkat edge (dalam hal ini smartphone) untuk memanfaatkan resource device yang semakin meningkat, menggunakan framework Renderscript untuk proses komputasi paralel dan tanpa membutuhkan koneksi internet. Task yang dilakukan secara paralel akan disebarkan pada beberapa unit pemrosesan, seperti CPU, GPU dan DSP, sehingga proses pendeteksian akan berjalan lebih cepat. Untuk membuktikan hal tersebut, sistem yang dihasilkan akan melakukan pengukuran waktu eksekusi dari proses deteksi serial dan paralel dan membandingkannya untuk mengetahui hasilnya. Selain itu, untuk mengevaluasi perbandingan efisiensi antara proses pendeteksian paralel dan serial, akan dihitung tingkat akurasi berupa sensitivitas dan positive predictivity serta utilisasi CPU.
2. PERANCANGAN DAN IMPLEMENTASI 2.1 Arsitektur Sistem
Gambar 2 Arsitektur Sistem
Gambar 2 adalah perancangan arsitektur sistem yang dibuat dimana terdapat tiga bagian utama yaitu Android runtime, Renderscript runtime, dan memori. Renderscript runtime
menyediakan API (Application Programming Interface) dalam bahasa C99 yang dapat digunakan untuk keperluan low-level seperti allocation data access dan interoperability dengan Android runtime. Android runtime sendiri merupakan tempat dimana komponen yang berhubungan dengan user berada. Seperti halnya komponen GUI pada sistem yang dibangun menggunakan bahasa pemrograman Kotlin dan Jetpack Compose library. Kedua komponen yaitu Android runtime dan Renderscript runtime akan melakukan proses binding untuk mendapatkan alamat memori yang akan di-share dan dipakai secara bersama.
Alamat memori ini berfungsi untuk menyimpan data yang diperlukan dalam pemrosesan dimana memori ini dapat diakses pada Android runtime maupun Renderscript kernel script. Task yang dieksekusi kemudian akan dijalankan pada processing unit pada device tersebut, seperti CPU & GPU.
2.2 Representasi Data
Data pada sistem direpresentasikan sebagai array dengan jumlah sebanyak data ECG yang dibaca pada database. Di dalam memori, array merupakan sebuah kelompok data yang berdekatan satu sama lain dengan alamat yang berkelanjutan (contiguous address). Fungsi Allocation melakukan alokasi data dengan tipe Integer dan jumlah yang ditentukan dari hasil pembacaan database oleh File Reader. Data yang dimuat dalam memori memiliki tipe Integer sehingga data perlu dikonversi terlebih dahulu jika berasal dari tipe yang berbeda (seperti float).
Gambar 3 Representasi Data 2.3 Alur Kerja Sistem
Gambar 4 Alur Kerja Sistem Keseluruhan Sistem dimulai dari pengambilan file database oleh user menggunakan system file picker. Database ini merupakan file yang berisi data ECG hasil dari perekaman pada pasien.
Data yang telah dipilih akan dimuat ke dalam memori. Setelah data dimuat, user dapat memulai pemrosesan secara paralel dan serial dengan masing-masing pemrosesan akan dilakukan pengukuran waktu eksekusi. Setelah proses selesai, sistem akan menampilkan perbandingan waktu eksekusi antara pemrosesan secara serial dan paralel serta akurasi dari hasil pemrosesan yang didapatkan dari perbandingan hasil pemrosesan dan data referensi.
File picker pada sistem akan ditempatkan dalam CardView seperti komponen lainnya.
Proses awal akan menginisialisasi BrowseCard yang digunakan sebagai penampung tampilan lain yang digunakan di File Picker. Sistem kemudian menginisialisasi EditText dan Tombol. EditText dalam tampilan ini digunakan sebagai pemicu yang digunakan oleh pengguna untuk memanggil Intent guna memanggil system file picker. Sebelum mengirimkan Intent, sistem akan memeriksa izin yang diperlukan untuk membaca file di penyimpanan smartphone Android. Saat aplikasi dibuka pertama kali dan izin belum diberikan, sistem akan menampilkan jendela pop up yang berisi permintaan izin. Di sini, pengguna diharuskan memberi izin agar sistem dapat melanjutkan prosesnya. Ketika izin tidak diberikan, pengguna tidak dapat melanjutkan ke tahap berikutnya dan jendela pop
up akan muncul kembali saat pengguna menekan bagian EditText. Tombol pada sistem digunakan sebagai pemicu untuk membaca dan memuat data yang terdapat dalam file ke dalam memori.
Sebelumnya, Tombol akan dinonaktifkan terlebih dahulu jika pengguna belum memilih file. Hal ini dilakukan untuk meminimalisir kesalahan saat penggunaan aplikasi.
Gambar 5 Alur Kerja Algoritma Pan-Tompkins Pada rancangan algoritma Pan-Tompkins, makro yang berisi beberapa konstanta yang digunakan dalam proses deteksi R-Peaks akan ditentukan oleh program. Sample rate, ukuran buffer, dan nilai delay akan disimpan di beberapa makro ini. Program ini memiliki dua antarmuka yang berinteraksi dengan dunia luar, yaitu fungsi ambil input dan simpan output. Seperti namanya, kedua fungsi ini memiliki tugas untuk memasok proses dengan input dan menyimpan output ke dalam buffer. Metode pengambilan input dan penyimpanan output dilakukan satu per satu dengan bantuan masing-masing indeks dalam proses pengambilan dan penyimpanan.
Fungsi proses deteksi adalah fungsi utama di mana semua proses pendeteksian R-Peaks terjadi. Fungsi ini dimulai dengan tahap inisialisasi dari beberapa variabel, antara lain Read Index dan Output List untuk proses input dan output pendeteksian, Processing Index yang berisi sekumpulan indeks yang digunakan untuk proses deteksi, Input dan Output Buffer untuk penyimpanan data input dan output, dsb. Proses pendeteksian akan dilakukan dalam sebuah loop.
Loop akan dimulai dengan memeriksa apakah buffer sudah penuh. Jika kondisi ini valid, program akan menggeser konten buffer dan membuang data terlama. Data baru akan selalu dimasukkan pada posisi terakhir di buffer. Satu per satu input akan diambil oleh program dan disimpan di buffer input. Program akan keluar dari loop dan berakhir jika input telah dibaca.
Beberapa filter akan memproses data yang telah dibaca. Filter Blok DC digunakan untuk menghilangkan noise DC pada data. Kemudian low pass filter dan high pass filter akan digabungkan untuk mendapatkan bandpass filter yang digunakan untuk menghilangkan sinyal di bawah dan diatas batas cutoff. Setelah itu,
dengan menggunakan filter turunan, data disaring untuk mengekstrak slope/kemiringan data. Slope ini menunjukkan laju perubahan data ECG yang diproses dan merupakan data yang kita cari dalam proses deteksi QRS.
Gambar 6 Hasil filter bandpass
Gambar 7 Hasil filter derivative
Data tersebut kemudian akan dikuadratkan untuk meningkatkan amplitudo dan memisahkan sinyal QRS dari gelombang T setelah filter turunan dilakukan. Sistem kemudian akan menerapkan moving window integration untuk menghasilkan data yang berisi informasi slope/kemiringan dan lebar. Data kemudian dilakukan pengecekan dengan menggunakan threshold. Jika data memiliki nilai lebih besar dari threshold, maka data tersebut akan disimpan dalam variabel PeaksCandidate. Kemudian dilakukan pengecekan kembali dengan syarat jika data memiliki nilai lebih dari kedua threshold, maka kemungkinan kedua data tersebut adalah R-Peaks. Data selanjutnya akan dilakukan pengecekan latensi sinyal, berdasarkan latensi 200ms dan 360ms. Jika data mengikuti kedua kondisi tersebut maka dapat ditetapkan bahwa data tersebut adalah R-Peaks.
Jika data tidak mengikuti dua persyaratan latensi yang ditetapkan di atas, maka R-Peaks tidak ditemukan dan data tersebut merupakan noise.
Produk dari deteksi tersebut kemudian disimpan dalam sebuah variabel.
Gambar 8 Hasil squaring
Gambar 9 Hasil filter moving window integration Sistem akan memperbarui nilai interval RR dan rata-rata RR ketika metode di atas mendeteksi keberadaan R-Peaks. Jika nilai rata- rata RR terdeteksi sebagai nilai rata-rata RR pada denyut jantung normal, nilai rata-rata akan dimasukkan dalam buffer RRAVG Normal.
Progam akan menyimpan hasil yang terdeteksi dalam buffer dan loop akan dimulai. Program akan memverifikasi data dengan variabel RR Miss jika R-Peaks tidak diidentifikasi. Proses back search akan dilakukan jika panjang pengamatan dari R-Peaks terakhir telah melebihi nilai RR Miss dan sinyal memenuhi kriteria latensi 200ms.
Pada bagian pemrosesan data, system menggunakan Renderscript framework yang dapat ditemukan di Android SDK. Rendercript memungkinkan pengembang untuk membagi pemrosesan secara merata pada unit pemrosesan (CPU, GPU, dan DSP). Rancangan pemrosesan pada sistem ini meliputi logika pemrosesan dalam bentuk paralel dan serial.
Program akan menginisialisasi Renderscript dan Variable Binding sebagai jembatan antara runtime Android dan runtime Renderscript.
Program akan membuat instance Renderscript dalam fase inisialisasi Renderscript yang akan digunakan selama pemrosesan. Split Count akan dihitung dari jumlah baris data dalam file yang dibaca oleh sistem sebelumnya. Variabel ini digunakan dalam pemrosesan paralel untuk mengevaluasi jumlah data yang dipertukarkan.
Dengan menggunakan instance RS dan angka yang telah dihitung, program akan menginisialisasi alokasi yang diperlukan oleh perangkat.
Program mengisi Allocation dengan data ECG dari file yang dibaca dalam tahap pemilihan file. Program akan memulai pengolahan data setelah dilakukan proses binding dengan mendeteksi QRS complex secara serial dan paralel pada data ECG. Kedua prosedur ini akan dilakukan dengan menggunakan coroutine yang terdapat dalam bahasa pemrograman Kotlin sehingga tidak terjadi blocking. Program kemudian akan menginisialisasi ID untuk
pembagian dalam pemrosesan paralel. ID ini kemudian digunakan dalam Renderscript runtime untuk mengevaluasi jumlah pemrosesan. Program akan menjalankan Renderscript kernel script dengan parameter yang diperlukan sembari menjalankan Counter untuk menghitung waktu eksekusi. Setelah pemrosesan selesai, program akan menginisialisasi array yang digunakan untuk menyimpan hasil pemrosesan secara serial dan paralel. Hal ini dilakukan untuk perbandingan dan pengukuran akurasi pada tahap selanjutnya.
Gambar 10 merupakan tampilan dari rancangan antarmuka sistem. Tampilan pertama adalah Browse View yang digunakan oleh pengguna untuk mengambil data. Ada beberapa elemen View di dalamnya yang digunakan. Salah satunya adalah komponen EditText yang bertindak sebagai tombol / pemicu sekaligus sebagai tempat untuk melihat file path dari file yang dipilih oleh user.
Dalam Process View, tombol yang disediakan digunakan untuk memulai proses deteksi yang diperlukan, yaitu deteksi secara serial dan paralel. Sistem menggunakan tombol ini sebagai trigger dalam mengaktifkan Renderscript untuk memulai pemrosesan.
Perangkat akan menunjukkan hasil pengukuran waktu eksekusi dan keakuratan hasil pemrosesan dalam Result View. View ini merupakan View terakhir dari aplikasi.
Gambar 10 Rancangan antarmuka sistem
3.3 IMPLEMENTASI
Berikut adalah hasil implementasi sistem berdasarkan rancangan di atas. Sistem menggunakan Jetpack Compose sebagai GUI library menggunakan bahasa Kotlin dengan konsep View Model dan pertukaran event-state.
Gambar 11 Implementasi Browse View dan Permission Request
Browse View card akan ditampilkan saat aplikasi dijalankan pertama kali. Card view ini berisi EditText atau teks input yang dapat digunakan oleh pengguna untuk memanggil file picker dan memilih dataset untuk diproses.
Program akan memeriksa izin yang diperlukan sebelum memanggil file picker. Program akan meminta izin pengguna saat aplikasi dijalankan untuk pertama kalinya.
Gambar 12 Pemanggilan file picker dan loading dataset
Pada gambar 12, pengguna akan memilih file yang akan diproses ketika izin telah diberikan dan aplikasi akan menunjukkan file path di bagian EditText. Program akan membaca dan memuat konten file ke dalam memori ketika tombol 'Load' ditekan. Metadata file juga akan
dibaca oleh program. Metadata file yang ditampilkan adalah nama file, ukuran file, dan jumlah baris file sesuai pada gambar 13.
Gambar 13 Pemanggilan file picker dan loading dataset
Aplikasi akan secara otomatis menampilkan Card View selanjutnya yaitu Processing View ketika tombol load ditekan. Ada beberapa komponen UI pada Processing View ini yaitu Text, Load Indicator, dan Button. Program akan mengolah data terlebih dahulu secara serial ketika tombol ditekan, baru kemudian akan diproses secara paralel. Indikator load akan menunjukkan tanda silang ketika data belum diproses (x) dan menunjukkan tanda centang (✓) setelah proses selesai dijalankan.
Hasil perhitungan waktu selama proses eksekusi dan hasil pendeteksian akan ditampilkan di Result View. Waktu eksekusi akan ditampilkan dalam satuan detik dan ketepatan hasil pemrosesan dalam persentase.
Selanjutnya, sistem juga melakukan perhitungan match dan mismatch dari R-Peaks.
3. PENGUJIAN DAN ANALISIS 3.1 Pengujian Waktu Eksekusi
Dengan menggunakan fungsi measureTime yang ditemukan di Kotlin stdlib, setiap metode deteksi dapat diukur waktu eksekusinya.
Diperoleh waktu eksekusi untuk pemrosesan serial dan paralel dari proses pendeteksian yang dipaparkan dalam tabel berikut.
Tabel 1 Hasil Pengujian Waktu Eksekusi Record Serial Time
Execution
Parallel Time Execution 100K
300K 500K 700K 900K 1100K
923 ms 2.82 s 4.67 s 6.61 s 8.50 s 10.3 s
309 ms 950 ms 1.67 s 2.44 s 2.93 s 3.67 s
1300K 1500K 1700K 1900K 2100K 2300K 2500K 2700K 2900K 3100K
12.3 s 14.2 s 16.0 s 17.9 s 19.8 s 21.6 s 23.6 s 25.4 s 27.3 s 29.3 s
4.30 s 4.97 s 5.52 s 6.32 s 6.97 s 7.92 s 8.86 s 8.73 s 9.74 s 10.5 s
Gambar 14 Grafik waktu pemrosesan sistem Pemrosesan secara serial mendapatkan pertambahan waktu eksekusi sebesar 1.8 – 2 detik tiap kenaikan 200 ribu data. Sedangkan pemrosesan secara paralel mendapatkan pertambahan waktu eksekusi sebesar 0.55 – 0.95 detik. Dari sini dapat kita hitung juga kecepatan pemrosesan yang didapatkan oleh kedua metode pemrosesan, dimana pemrosesan secara serial mencatatkan rata-rata kecepatan eksekusi sebesar 106,305 baris/detik, sedangkan pemrosesan secara paralel mencatatkan rata-rata kecepatan eksekusi sebesar 301,340 baris/detik dimana terdapat peningkatan sebesar ~3x lipat dibandingkan dengan pemrosesan secara serial.
3.2 Pengujian Sensitivity dan Positive predictivity
Hasil dari proses pendeteksian secara serial dan paralel akan diproses untuk mengetahui tingkat sensitivitas dan prediksi positif dari sistem. Pemrosesan data hasil ini akan dilakukan melalui perbandingan menggunakan program bxb pada WFDB Software package. Program ini akan menghasilkan keluaran dalam bentuk sensitivity dan positive predictivity.
Tabel 2 Hasil Pengujian Akurasi Pemrosesan Serial Record
Serial Processing Sensitivity Positive
predictivity 100K
300K 500K 700K 900K 1100K 1300K
100.00%
100.00%
99.93%
99.95%
99.96%
99.97%
99.97%
100.00%
100.00%
100.00%
100.00%
99.85%
99.88%
99.89%
1500K 1700K 1900K 2100K 2300K 2500K 2700K 2900K 3100K
99.57%
99.63%
99.65%
99.67%
99.70%
99.73%
99.57%
99.57%
99.41%
99.91%
99.92%
99.93%
99.94%
99.94%
99.95%
99.61%
99.42%
99.46%
Average 99.76% 99.85%
Dari hasil pengujian didapatkan rata-rata sensitivity untuk pemrosesan secara serial adalah sebesar 99.76% dan rata-rata positive predictivity sebesar 99.85%.
Tabel 3 Hasil Pengujian Akurasi Pemrosesan Paralel
Record
Parallel Processing Sensitivity Positive
predictivity 100K
300K 500K 700K 900K 1100K 1300K 1500K 1700K 1900K 2100K 2300K 2500K 2700K 2900K 3100K
99.67%
99.56%
99.56%
99.71%
99.85%
99.88%
99.87%
99.50%
99.59%
99.53%
99.64%
99.69%
99.65%
99.56%
99.61%
99.40%
99.17%
98.99%
99.71%
99.71%
99.55%
99.47%
99.79%
99.64%
99.51%
99.46%
99.69%
99.69%
99.72%
99.29%
99.18%
99.36%
Average 99.64% 99.47%
Sedangkan pada pemrosesan secara paralel didapatkan rata-rata sensitivity sebesar 99.64%
dan rata-rata untuk positive predictivity adalah sebesar 99.47%. Kedua nilai pada pemrosesan secara paralel ini memiliki nilai yang lebih kecil dibandingkan dengan pemrosesan secara serial dikarenakan error/miss pada algoritma pendeteksian terakumulasi saat proses penggabungan data kembali.
3.3 Hasil Monitoring Resource
Proses monitoring dilakukan menggunakan aplikasi Trepn profiler dengan resource yang di monitor berupa All CPU Load, All CPU Load Normalized, CPU1 Load, CPU2 Load, CPU3 Load, dan CPU4 Load. Data Load yang direkam merupakan nilai persentase yang memiliki rentang nilai 0-100%. Dimana 0% merupakan tanda jika sebuah CPU dalam kondisi idle atau tidak melakukan proses apapun, dan 100%
menandakan sebuah CPU dalam keadaan full load.
CPU Utilization pada pemrosesan secara serial memiliki rentang nilai antara 48% sampai 56%. Dengan rata-rata CPU Utilization untuk proses ini adalah 50%. Sedangkan CPU Utilization untuk proses pendeteksian secara paralel memiliki rentang nilai dari 71% sampai dengan 90%. Dengan rata-rata 82%. Besar nilai CPU Utilization ini dipengaruhi oleh penggunaan semua CPU yang ada pada device yang digunakan. Pada pemrosesan secara serial, data akan diproses pada salah satu CPU yang ada pada device.
Tabel 4 Hasil Pengujian Akurasi Sensor pH Record CPU Utilization
Serial Parallel 100K
300K 500K 700K 900K 1100K 1300K 1500K 1700K 1900K 2100K 2300K 2500K 2700K 2900K 3100K
56%
51%
51%
52%
49%
51%
49%
49%
48%
51%
53%
48%
48%
51%
50%
51%
71%
72%
74%
76%
80%
82%
83%
83%
86%
84%
90%
88%
87%
88%
85%
89%
Average 50% 82%
Gambar 15 Grafik CPU Utilization pada sistem
4. KESIMPULAN DAN SARAN
Sistem memanfaatkan CPU yang terdapat di perangkat dengan menerapkan pemrosesan paralel menggunakan framework Renderscript.
Sistem yang dibuat dalam penelitian ini menggunakan data-level parallelism sebagai metode paralel yang digunakan. Hasil pemecahan tersebut akan digunakan oleh kernel script untuk melakukan proses deteksi QRS Complex secara paralel. Pemrosesan secara serial mendapatkan pertambahan waktu eksekusi
sebesar 1.8 – 2 detik tiap kenaikan 200 ribu data.
Sedangkan pemrosesan secara paralel mendapatkan pertambahan waktu eksekusi sebesar 0.55 – 0.95 detik. Pemrosesan secara serial juga mencatatkan rata-rata kecepatan eksekusi sebesar 106,305 baris/detik, sedangkan pemrosesan secara paralel mencatatkan rata-rata kecepatan eksekusi sebesar 301,340 baris/detik.
Didapatkan rata-rata sensitivity untuk pemrosesan secara serial adalah sebesar 99.76%
dan rata-rata positive predictivity sebesar 99.85%. Sedangkan pada pemrosesan secara paralel didapatkan rata-rata sensitivity sebesar 99.64% dan rata-rata untuk positive predictivity adalah sebesar 99.47%. Rata-rata CPU Utilization untuk pemrosesan secara serial adalah 50%. Sedangkan CPU Utilization untuk proses pemrosesan secara paralel memiliki rata- rata 82%
Saran dari peneliti untuk penelitian selanjutnya adalah dengan menerapkan algoritma dan dataset lain untuk mengetahui masing-masing performa yang dihasilkan. Serta melakukan eksplorasi terhadap algoritma dengan task-level parallelism.
5. DAFTAR PUSTAKA
Bai, J., Zhang, Y., Shen, D., Wen, L., Ding, C., Cui, Z., . . . Zhang, J. (1999). A portable ECG and blood pressure telemonitoring system. IEEE engineering in medicine and biology magazine : the quarterly magazine of the Engineering in Medicine
& Biology Society, 63–70.
Bailey, R. (2019). Heart Nodes and Electrical Conduction. Retrieved November 4, 2019, from thoughtco.com/heart-nodes- anatomy-373242
Braunwald, E. (1997). Heart Disease: A Textbook of Cardiovascular Medicine, Fifth Edition (5th ed.). Philadelphia: W.B.
Saunders Co.
Ju, Q., Chen, S.-T., & Zhang, Y. (2015).
Benchmarking renderscript: potential for energy efficient multi-core . 2015 12th Annual IEEE International Conference on Sensing, Communication, and Networking - , 1-6.
Lilly, L. S. (2016). Pathophysiology of Heart Disease: A Collaborative Project of Medical Students and Faculty (6th ed.).
Philadelphia: Lippincott Williams &
Wilkins.
Liu, F., Liu, C., Jiang, X., Zhang, Z., Zhang, Y., Li, J., & Wei, S. (2018). Performance Analysis of Ten . Journal of Healthcare Engineering, 1–8.
Pan, J., & Tompkins, W. J. (1985). A Real-Time QRS Detection Algorithm. IEEE Transactions on Biomedical Engineering, BME-32(3), 230-236.
Perednia, D. A. (1995). Telemedicine Technology and Clinical Applications.
JAMA: The Journal of the American , 483.
Wang, X., Gui, Q., Liu, B., Jin, Z., & Chen, Y.
(2014). Enabling Smart Personalized Healthcare: A Hybrid Mobile-Cloud . IEEE Journal of Biomedical and Health Informatics, 739-745.
Wen, C., Yeh, M.-F., Chang, K.-C., & Lee, R.- G. (2008). Real-time ECG telemonitoring system design with mobile phone platform. Measurement, 463–470.