Monday, February 04, 2019

Phase Unwrapping

Samakah hasil perhitungan: $ \cos (420^\circ)$ dengan $\cos (420^\circ-2\pi)$? Ide inilah yang (menurut saya) melatarbelakangi teknik phase unwrapping pada analisa sinyal.

Phase unwrapping adalah metode untuk "membuka" fase sinyal. Algoritma metode untuk unwrapping fase ini adalah sebagai berikut: "Jika selisih antara dua skalar fase dalam array lebih dari dikont, yakni $\pi$ (3.14, dalam radian), maka nilai skalar yang lebih tinggi tadi dikurangi $2 \pi$. Nilai diskont ini bisa dirubah, namun defaultnya adalah $\pi$.

Perhatikan contoh berikut. Vektor $x$ adalah array yang berisi fase dari suatu sinyal.

$$ px = [0~ 1~ 3.24~ 5~ 6.28~ 10~ 13~ 16]$$

Jika selisih antara $x[n]$ dengan $x[n+1]$ lebih besar dari $\pi$ maka dilakukan unwrapping fase. Sehingga untuk vektor fase $x$ diatas hasilnya adalah,

$$ px2 = [0.0~        1.0~        2.0~        3.24~      5.0~     
       6.28~      3.72~  6.72~ 9.72] $$

Vektor $px2$ merupakan hasil phase unwrapping dalam radian agar tracking fase terlihat lebih halus. Lihar gambar di bawah ini untuk hasil plot fase (atas) dengan unwrapping fase (bawah).

Plot fase (atas) dengan unwrapping fase (bawah)

Friday, February 01, 2019

Zero Padding dan efeknya pada FFT

Zero padding berarti menambahkan nol diakhir sinyal. Misal kita memiliki vektor x sebagai berikut,

$$ x = [0 ~1~ 2 ~3 ~1~ 2~ 3~ 2~ 4~ 3] $$

Vektor tersebut memiliki ukuran 10 data. Zero padding adalah menambahkan nol di belakang vektor tersebut, misalnya kita tambahkan lima nol di belakang data terakhir sehingga menjadi,

$$x = [0 ~1~ 2~ 3~ 1~ 2~ 3~ 2~ 4~ 3~ 0~ 0~ 0~ 0~ 0]$$

Zero padding ini biasanya digunakan agar spektrum yang kita plot menjadi lebih halus.

Implementasi dengan Python

Implementasi zero padding dengan python bisa bermacam-macam, salah satunya dengan np.pad (salah lainnya dengan menggunakan np.zeros).

Contohnya adalah sebagai berikut:

>>> x = np.array([1, 2, 3, 4, 5])
>>> xpad = np.pad(x, (0, 5), 'constant')  # menambahkan lima nol di belakang vektor a
>>> x
    [1, 2, 3, 4 , 5, 0, 0, 0, 0, 0]

Friday, January 18, 2019

Merobohkan penghalang dalam "menulis"

Sebetulnya saya ingin membaca sebuah buku "How to Write a lot: A practical guide to productive academic writing", tapi setelah saya cari cari-cari di perpus tidak ketemu (padahal saya cek di web ada: "borrowable" dan "in place"). Saya baca versi ebooknya, tidak puas. Dari googling, saya menemukan seseorang sudah meresumenya. Berikut adalah terjemahan bebas saya atas resume tersebut.
  1. Penghalang #1: "Saya tidak punya waktu untuk menulis"
  2. Solusi: Alokasikan waktu menulis, sediakan dan jadwalkan waktu tersebut.
  3. Penghalang #2: "Saya butuh membaca lebih banyak, menganalisa tulisan orang lain, dll untuk menulis"
  4. Solusi: Lakukan sekarang juga dan tulislah hasil bacaanmu dan analisamu, langsung setelah itu.
  5. Penghalang #3: "(Kayaknya) Saya butuh laptop baru ..."
  6. Solusi: Tidak, kamu tidak butuh laptop baru. Tulisan ini ditulis dengan laptop produksi 6 tahun yang lalu.
  7. Penghalang #4: "Saya tidak punya inspirasi untuk menulis"
  8. Solusi: Kamu tidak perlu menunggu inspirasi datang, cukup duduk, tulis. Gerakkan tanganmu di atas tuts keyboard, tulis.
  9. Penghalang #5: "Saya tidak punya motivasi (untuk menulis)"
  10. Solusi:


    A post shared by Bagus Tris Atmaja (@bagustris) on
That's all! Penghalang ke #5 di atas bukan dari buku, tapi dari saya sendiri. Selamat menulis!

Wednesday, January 16, 2019

Ketidaklinearan sistem pendengaran [6]

Catatan kuliah "Human perceptual model and its system", pertemuan ke-6.

Telinga manusia merupakan sistem yang tidak linear. Apa buktinya? Fakta berikut merupakan beberapa bukti ketidaklinearan sistem pendengaran manusia. Meskipun ada beberapa bukti kelinearan pada fenomena berikut (misalnya emisi spontan pada otoakustik), dengan menggunakan sifat ketidaklinearan fenomena tersebut justru menjadikannya masuk akal.

Respon basilar membrane (pemilihan frekuensi)

Pemilihan frekuensi: Kemampuan telinga untuk memisahkan komponen frekuensi dari suara kompleks. Basilar membrane hanya bergetar pada tempat/lokasi dimana frekuensinya sama (resonansi). Seperti diketahui sebelumnya, respon frekuensi pada basilar membrane berjalan dari frekuensi tinggi (base) menuju frekuensi rendah (apex). Response basilar membrane merupakan filter dimana fitter tersebut gabungan dari banyak bandpass filter. Karenanya filter auditori ini disebut filterbank.

Respone basilar membrane ini tidak liner. Dilihat dari skala yang digunakan (Bark dan ERB), keduanya menggunakan spasi logaritmik. Meski model auditory seperti gammatone masih menggunakan filter linear, namun model yang lain seperti double-resonance nonlinear (DRNL) menggunakan konsep nonlinear yang memberikan hasil yang lebih bagus daripada filter linear.

Contoh skala bark yang diturunkan dari konsep critical band (Zwicker model) seperti terlihat pada gambar di bawah. Perlu diingat bahwa skala yang lain, yakni ERB-rate, lebih banyak dipakai karena hasilnya cocok baik dari eksperimen psikoakustik maupun psikologi.
Auditori filter dalam frekuensi Bark

Wednesday, January 09, 2019

Fisiologi dari peripheral auditori dan pemodelannya [5]

Catatan kuliah human perceptual system and its model, pertemuan kelima, kelanjutan kuliah sebelumnya.

Sistem auditori merupakan sistem pemrosesan aktif, otak  turut andil dalam memproses gelombang mekanik suara menjadi sinyal nerve. Otak bisa menambah dan mengurangi gain dalam sistem auditori.

Mekanika kontrol otak ke sistem pendengaran tersebut juga meliputi  kemampuan otak untuk mengendalikan hair cell, artinya sistem efferent (dari otak ke peripheral) bisa mengontrol ketidak-linearan sistem pendengaran.

Lagi, bagian-bagian telinga dapat dipecah sebagai berikut:
Anatomi manusia (dimodifikasi dari Wikipedia)

Sunday, January 06, 2019

Analisa sinyal (suara) dan teknik sintesis [4]

Ini adalah catatan kuliah Human perceptual system and its model, pertemuan ke-4.

Suara yang dihasilkan microphone bukan murni suara kita, namun suara kita dikalikan dengan respon microphone (yang tidak flat).

Bagaimana menganalisa sinyal (suara)?
1. Pendekatan non-parameterik
2. Pendekatan parametrik

Analisa Non-parametrik

Untuk mendapatkan sinyal target digunakan metode tanpa mengasumsikan model tertentu.
Contoh:
$$Y(z) = H(z)X(z) + N(z)$$

Contoh dalam analisa suara:
- short term autocorrelation analysis
- short term spectral analysis
- cepstrum analysis
- band pass filter bank
- zero cross analysis

Friday, January 04, 2019

Pentingnya intuisi dalam memahami persamaan matematika: Teorema Bayes

Intuisi dari sebuah persamaan Matematika sangat penting, tanpanya kita tidak bisa memahami sebuah fenomena melalui sebuah rumus. Contohnya adalah hukum Newton, F = ma. Gaya yang sama yang dikenakan pada masa yang berbeda akan menghasilkan percepatan yang berbeda (Dosen saya dulu mengajarkannya, a = F/m, bukan F = m.a). Gaya yang sama diberikan pada bola akan menghasilkan percepatan yang besar, namun tidak pada sebuah mobil. Perhatikan gambar di bawah ini.


Kali ini bukan Hukum Newton yang kita bahas, melainkan Bayes rule, Teorema Bayes.

Teorema Bayes

Teorema Bayes merupakan formulasi "tingkat kepercayaan" terhadap probabilitas suatu event berdasar pengetahuan sebelumnya. Teorema Bayes dirumuskan sebagai berikut,

$$ P\left( W \middle| O \right) = \frac{P\left( O \middle| W \right)P\left( W \right)}{P(O)} $$

Untuk memahami persamaan di atas, perhatikan sebuah contoh berikut. Pada suatu populasi, 1% penduduknya adalah musisi sedangkan 10% dari total populasi adalah kidal. Sebuah survey terbaru menyatakan bahwa 60% musisi adalah kidal. Berapa probailitas bayi yang baru lahir yang kidal akan menjadi musisi?

Tuesday, December 25, 2018

Representasi suara dan pemrosesannya [3]

Tulisan ini adalah kelanjutan tulisan sebelumnya, catatan kuliah "Human perceptual system and its model", pertemuan ketiga.

Motivasi:
Apa perbedaan pemrosesan linear dan pemrosesan non-linear?
Pemrosesan linear:Transformasi Fourier, Laplace, Z, Wavelet
Pemrosesan non-linear: Sistem auditori, sistem produksi suara, sistem audio
Lebih jauh tentang perbedaan sistem linear dan non-linear bisa dilihat disini: https://youtu.be/nxGmkAgJaA8

Bagaimana mempelajari pendengaran?
- Fisiologi auditori
- Psikofisika auditori (psikoakustik)

Monday, December 17, 2018

Pengolahan sinyal auditori [2]

Ini adalah catatan kuliah yang saya transkrip ketika kuliah berlangsung: I656 - Human Perceptual Systems and its Models, pertemuan kedua.

Sistem auditori merupakan sistem pendengaran manusia.
Video tentang sistem auditori berikut memvisualisasikan tulisan di bawah ini:

Telinga manusia terbagi menjadi 3:
1. telinga bagian luar
2. telinga bagian tengah
3. telinga bagian dalam

Gambar berikut menjelaskan bagian-bagian telinga tersebut yang akan dijelaskan lebih detil di bawahnya.

Friday, December 14, 2018

Bermain (virtual) Piano di Ubuntu

Di zaman serba canggih ini, kita tidak harus memiliki piano untuk bisa bermain piano. Cukup dengan menggunakan laptop dan keyboard laptop-pun bisa dijadikan tuts piano. Begini caranya.

Instalasi
Saya menggunakan Ubuntu 16.04 untuk instalasi aplikasi piano ini. Anda bisa juga menggunakan OS lainnya. Aplikasi yang akan kita gunakan/install adalah vmpk (virtual midi piano keyboard). Untuk menginstallnya cukup mudah,

sudo apt install vmpk

Perintah tersebut juga akan menginstall qsynth, yang akan menginterface (menghubungkan) vmpk dengn sound output Ubuntu  (vmpk tidak menghasilkan suara, sehingga perlu interface untuk menghasilkan suara).

Monday, December 10, 2018

Pengantar Persepsi Manusia dan Pemodelannya [1]

Ini adalah catatan kuliah yang saya transkrip saat kuliah berlangsung untuk mata kuliah "Persepsi Manusia dan Pemodelannya", pertemuan pertama.

Persepsi: organisasi, identifikasi dan interpretasi informasi sensori untuk merepresentasikan dan memahami lingkungan.

Semua persepsi melibatkan sinyal dari sistem saraf (nerveous) yang dihasilkan dari stimulasi fisis dari organ pengindera.

Lima indera manusia:
- penglihatan
- pendengaran
- sentuhan
- perasa/pengecap
- penciuman

Kelima indera penglihatan tersebut diindera oleh mata, telinga, kulit, lidah dan hidung.

1. Penglihatan
Mata merupakan indera penglihatan yang memiliki struktur kompleks terdiri atas lensa transparen yang memfokuskan cahaya pada retina. Retina sendiri terdiri atas dua organ penting, cell-rods dan cones. Cell-rods tidak sensitif terhadap warna namun sensitif terhadap cahaya daripada cones. Cones sensitif terhadap warna dan terletak pada bagian retina yang disebut fovea, dimana cahaya difokuskan oleh lensa. Manusia memiliki tiga cone (Red, green, blue) sedangkan anjing hanya memiliki dua saja (green dan blue), sehingga anjing tidak bisa membedakan warna hijau, kuning atau merah.

Penampang retina: rod, cones dan lapisan saraf (kiri-kanan)

Wednesday, October 17, 2018

Review Buku: 201 teknik presentasi

Dalam bukunya "Presentation skills 201", William "Bill" Steele (presentation skill trainer) membagikan kecakapan atau teknik presentasi sebagai berikut.

Perencanaan

Perencanaan sangat penting sebelum melakukan presentasi. Presentasi yang baik dipersiapkan dengan rencana yang baik pula. Jangan melakukan presentasi tanpa persiapan, dan jangan percaya pada orang yang bisa melakukan presentasi tanpa persiapan, kecuali dia sudah ahli. Diantara kecakapan atau teknik presentasi pada tahap perencanaan ini meliputi: bersungguh-sungguh melakukan persiapan, mendefinisikan apa yang ingin dicapai, memilih/memiliki tema, tekankan bahwa anda bukan audiens (tapi presenter), keluar dari kebiasaan, jangan abaikan suara kecil, jangan melalukan persiapan yang berlebihan, dan masukkan cerita pada presentasi anda.

Siapkan data dan buat data anda hidup, masukkan humor namun jangan mencoba melucu, bangun pemahaman dengan contoh, gunakan analogi untuk menjelaskan sains dan teknologi, bekerja dengan lawan, sitasi pengarang aslinya, nyatakan dengan jelas, mulai dengan mantap dan akhiri dengan mantap pula, sediakan rangkuman, pancing pertanyaan, pastikan pesan tersampaikan, hindari perubahan di menit-menit terakhir, dan persiapkan penamilan anda di panggung.

Persiapan Slide

Pada tahap persiapan slide kita bisa mencoba teknik brainstorming dulu: apa pesan yang ingin kita sampaikan baru kemudian beralih ke slide. Gunakan visualisasi yang baik, pewarnaan dan tema yang memukau namun tidak norak. Persiapkan juga untuk tampil tanpa slide (mati lampu misalnya, tidak ada LCD dll). Peragakan dan gunakan bahasa tubuh sebanyak mungkin jika ingin menggambarkan secara visual. Beralih dari slide ke slide selanjutnya secara halus. Jangan menjadi korban teknologi, intinya pada anda, bukan pada teknologi yang anda gunakan. 

Slide anda merelfeksikan siapa anda. Jika anda menggunakan template milik kantor atau institusi anda, slide tersebut sepenuhnya milik anda. Anda bebas mengeditnya sebaik mungkin.

Latihan

Saturday, September 29, 2018

Pendakian Gn Fuji via Fujinomiya Trail: Rute, Estimasi Waktu dan Biaya

Persiapan

Video berikut sangat membantu untuk persiapan mendaki Fuji, khususnya via Fujinomiya trail. Langsung cus ke link youtube di bawah ini. Simak dengan baik, kalau perlu catat hal-hal penting yang sekiranya bermanfaaat ketika mendaki nantinya.

Rute

Rute yang kita gunakan adalah Fujinomiya trail. Selain Fujinomiya, ada tiga rute lainnya: Gotenba trail, Subashiri trail, dan Yoshida (Kawaguchiko) trail. Fujinomiya trail sendiri bukan rute yang populer, karena terletak di arah selatan. Kebanyakan orang mendaki dari arah Tokyo, khususnya rute Yoshida trail beserta dua rute lainnya. Awalnya, saat ibukota Jepang masih di Kyoto, rute Fujinomiya trail ini (katanya) adalah yang paling populer. Namun, begitu Ibukota Jepang berpindah ke Tokyo (Utara), maka rute yang populer adalah dari sisi utara Gunung Fuji.

Thursday, August 02, 2018

Deep Learning: CNN

Tulisan ini adalah kelanjutan dari tulisan sebelumnya tentang Jaringan Syaraf Tiruan (JST) .

Deep learning (tidak hanya) terbagi menjadi dua cabang algoritma besar: CNN (Convolutional NN) dan RNN (Recurrent NN). Masih banyak metode lainnya, namun seolah tenggelam oleh dua algoritma tersebut. Perbedaan utama CNN dan RNN adalah sebagai berikut.

CNN:
  1. Input berupa tensor dengan ukuran tetap (e.g: image)
  2. Output juga berupa vector dengan ukuran tetap (e.g. probablitias dari beberapa kelas berbeda)
RNN:
  1. Beroperasi pada sekuen vector atau tensor
  2. Contoh aplikasi: Text translation, speech to text, speech recognition, text to speech.
Sederhanya, jika input bisa diubah dalam bentuk "image", kita pakai CNN, jika data berupa vektor kita pakai RNN. Contoh, data ujaran (speech) juga bisa ditraining dengan metode CNN dengan memberi input jaringan berupa "image" spectrogram.

Kembali ke CNN. Masalah tersbesar JST/NN. Jika sebuah image berukuran 50 x 50 pixel sebagai input, dan JST memiliki konfigurasi 2 hidden layer dengan layer pertama berisi 7500 neuron (node) dan layer kedua berisi 2000 node dan 2 ouput, maka jumlah weight (bobot) pada arsitektur JST tersebut:
$$ (7500 \times 2000) + (2000 \times 2) = 15004000 $$
Jumlah yang cukup "berat" untuk dijalankan dengan komputer spek standar. Sebagai solusinya, ditawarkan arsitektur JST yakni CNN yang bisa bekerja dengan mempelajari pola pada skala yang lebih kecil, dan menggunakannya untuk mengidentifikasi gambar yang lebih besar. Contohnya adalah apakah gambar input merupakan gambar singa atau macan. Dengan mempelajari sebagian kecil bagian gambar (misal: bagian mulut), maka informasi tersebut dapat digunakan untuk menentukan gambar yang diinputkan adalah singa atau macan.

Ilustrasi CNN untuk deteksi gambar macan/singa

Konvolusi

Ide dasar dari CNN adalah kovolusi itu sendiri. Jadi, setiap bagian pada image dikonvolusikan dengan kernel atau filter. Sebagai contoh, kita memiliki data image dengan ukuran 5 x 5 pixel, kemudian kita buat filter ukuran 2 x 2. Setiap bagian (2 x 2) pada data image dikonvolusikan dengan kernel atau filter 2 x 2 tadi. Lihat gambar berikut untuk lebih jelasnya.

Monday, July 30, 2018

Mengestimasi lokasi node pada Wireless Sensor Network berbasis Raspberry Pi dengan Algoritma Particle Filtering

WSN

Wireless Sensor Network (WSN) merupakan sekumpulan sensor yang saling terhubung secara nirkabel. WSN merupakan salah satu implementasi dari Wireless Ad Hoc Network. (Jaringan) Ad hoc sendiri merupakan jaringan yang dibuat "untuk tujuan khusus" dengan memanfaatkan fasilitas yang ada pada node itu sendiri. Contoh jaringan ad hoc adalah ketika menghubungkan dua laptop atau lebih dengan wifi internal dari salah satu laptop, bukan melalui router. Selain WSN, ada bentuk jaringan ad hoc yang lain seperti: Mobile Ad Hoc networks (MANET), Wireless Mesh Networks (WMN), dan Vehicular Ad Hoc Networks. Silahkan cari sendiri jika ingin tahu lebih detil tentang hal tersebut

Posisi node raspi. Idealnya antar node bisa dikondisikan pada jarak >= 1 m, terletak pada tinggi yang sama dan tidak ada rintangan antar node (pada gambar di atas dock bisa menjadi penghalang/barrier sinyal wifi antar node)

Membuat Jaringan Ad Hoc (dengan Ubuntu dan Raspi)

Untuk membuat jaringan Ad Hoc dengan beberapa Rasperry Pi, kita bisa menggunakan Laptop dengan OS Ubuntu (disini saya memakai Ubuntu 16.04). Langkah-langkah membuat jaringan ad-hoc dengan Ubuntu adalah sebagai berikut:
Setting jaringan ad-hoc pada Ubuntu 16.04
  1. Pada panel jaringan/wifi (gambar panah naik turun), klik "Create new network"
  2. Tulis nama jaringan ad hoc, contoh milik saya: bta-mbp-adhoc
  3. Isikan password jika perlu, kosongi jika ingin menyambungkan raspi dengan jaringan ad hoc tanpa password.
  4. Klik lagi top panel jaringan/wifi, pilih "edit connection"
  5. Pada tab "wifi" pastikan memilih "ad-hoc"
  6. Pada tab "IPV4 Setting", isikan IP address, misal 10.42.0.1, pada net mask isikan "255.255.255.0"
Selesai, cukup mudah. Catatan: Langkah selanjutnya diasumsikan bahwa Raspi telah konek dengan internet dan menginstall paket serta konfigurasi yang dibutuhkan (lihat halaman 1-9 slide INI).

Setelah login melalui ssh (atau bisa juga dengan mengeditnya melalui micro SD), kita perlu menyetting Raspi sebagai berikut.

Edit file /etc/network/interface:
sudo nano /etc/network/interfaces 

Tambahkan file berikut,
auto wlan0
iface wlan0 inet static
    address 10.42.0.3
    netmask 255.255.255.0 
    mtu 1500
    wireless-channel 13 
    wireless-essid bta-mbp-adhoc
    wireless-mode ad-hoc
    wireless-ap any

Ganti IP address dengan IP address yang tadi dimasukkan saat membuat jaringan Ad Hoc di Ubuntu, contohnya tadi saya memasukkan IP 10.42.0.1, maka pada raspi pertama di atas saya masukkan (misal) 10.42.0.3, pada raspi kedua 10.42.0.5, raspi ketiga 10.42.0.7 dan raspi keempat 10.42.0.9. Anda bisa memasukkan IP lain selama tidak bertubrukan, namun akan lebih mudah untuk memberi IP berurutan dan konsisten. Setelah itu restart semua raspi, dan coba konek dengan ssh dengan IP yang diberikan.

Jika anda ingin sharing internet dari PC Ubuntu ke raspi, anda bisa mengikuti tutorial di link ini.

Friday, June 29, 2018

Mengenal arsitektur MIPS: single-cycle vs pipelining

Arsitektur komputer merupakan hal yang menarik untuk dipelajari. Dengan memahami cara kerja komputer, khususnya processor, kita akan lebih mudah belajar IT, khususnya pemrograman dan komputasi. Masalahnya processor era modern menggunakan sistem yang kompleks, contohnya seperti i9, i7, m3 maupun processor buatan AMD dan IBM. Untuk mempelajari cara kerja processor, kita bisa memakai MIPS, processor jaman baheula yang sudah tidak dipakai lagi, namun konsepnya tetap digunakan oleh processor modern yang sekarang kita gunakan.

Secara umum, cara kerja processor dilihat dari data pathnya dapat dibagi menjadi dua yakni single-cycle dan pipelining.

Gb 1. Simple data path pada arsitektur MISP

Berdasarkan gambar diatas, bisa dijelaskan tahapan datapath pada eksekusi single-cycle sebagai berikut:
  1. PC (program counter): menahan alamat dari instruksi yang akan dieksekusi.
  2. Add: Menambahkan nilai dari PC(alamat saat ini) dengan nilai konstan 4, dan menghasilkan alamat tentatif untuk instruksi selanjutnya. (jika instruksi selanjutnya adalah percabangan dan syaratnya terpenuhi, maka alamat tersebut tidak dipakai).
  3. Add/ALU result: bagian ini menghitung alamat target selanjutnya (branch target address). Inputnya adalah PC+4 dan output dari konstan 16 bit yang di-sign extend menjadi 32 bit dan digeser kiri (left shifted) 2 bits.
  4. Mux: bagian ini menghasilkan alamat selanjutnya. Jika instruksi selanjutnya adalah conditional branch, maka output dari 3 dipilih, selainnya digunakan outout dari 2.
  5. Sign-extend: bagian ini meng-extend/memperluas input 16 bits menjadi 32 bit (dengan menambahkan 16 bit baru dengan "tanda" yang sama dengan bit paling kanan).
  6. Mux: memilih data yang akan ditulis pada register tujuan dari data yang dibaca dari memory dan data hasil perhitungan ALU.

Meskipun cara kerja processor single cycle diatas dapat bekerja dengan baik namun tidak dipakai di komputer modern karena:
  • Semua instruksi harus dieksekusi dalam satu siklus.
  • Lama waktu eksekusi merupakan jumlahan dari tiap instruksi, artinya jika ada instruksi yang dieksekusi cukup lama, maka instruksi lain akan menunggu,
Sebagai solusinya, diperkenalkan pipelining. Analogi yang cukup sederhanan adalah proses mencuci, mengeringkan, menyeterika dan melipat/memasukkan lemari. Pada teknik single-cycle (satu siklus), semua tahapan dilakukan berurutan, mencuci dulu, setelah selesai baru dikeringkan, kemudian diseterika dan dimasukkan lemari, baru mencuci lagi. Pada teknik pipelining, sambil mengeringkan, kita bisa mencuci lagi, saat cucian pertama diseterika, cucian kedua dikeringkan, dan cucian baru (ketiga) bisa mulai dicuci. Dengan cara pipelining seperti ini, waktu pemrosesan menjadi jauh lebih sedikit. Gambarnya ditunjukkan seperti di bawah.

Monday, May 21, 2018

Menginstall library CUDA 9.2 dan CuDNN 6 pada Ubuntu 16.04

Catatan singkat instalasi CUDA 8 (Upgaded ke 9.2) dan CuDNN 6 pada Ubuntu 16.04 Xenial Xerus.

OS: Ubuntu 16.04.4 LTS, 64-bit
CPU:  i9-7900X CPU @ 3.30GHz × 20
GPU: GeForce GTX 1060 6GB/PCIe/SSE2

Untuk instalasi CUDA 9.2, baca bagian bawah tulisan ini.

Langkah-langkah instalasi

Jalankan langkah-langkah berikut pada terminal, saya sarankan anda berada di "/tmp".
$ wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_8.0.61-1_amd64.deb
$ wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1604/x86_64/libcudnn6_6.0.21-1%2Bcuda8.0_amd64.deb
$ wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1604/x86_64/libcudnn6-dev_6.0.21-1%2Bcuda8.0_amd64.deb
$ sudo dpkg -i cuda-repo-ubuntu1604_8.0.61-1_amd64.deb
$ sudo dpkg -i libcudnn6_6.0.21-1+cuda8.0_amd64.deb
$ sudo dpkg -i libcudnn6-dev_6.0.21-1+cuda8.0_amd64.deb

Kemudian tambahkan path instalasi di ~/.bashrc seperti berikut:
$ vim .bashrc
Anda bisa meggunakan Gedit jika tidak ingin menggunakan vim.
# cuda path
export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

Untuk mengeceknya, gunakan perintah `nvcc-version` dan `watch nvidia-smi`:

Monday, May 07, 2018

Pengalaman membeli simcard/HP di Jepang tanpa kartu kredit

Memiliki nomor Jepang saat di Jepang hampir mendekati kebutuhan, karena untuk "hidup" kita butuh HP. Contoh kecil adalah ketika bertransaksi online, baik untuk pembelian, pembayaran tiket dll, telfon tetap dibutuhkan untuk konfirmasi, utamanya saat akan menerima barang. Nah, hampir semua provider telekomunikasi di Jepang mensyaratkan kartu kredit sebagai alat pembayaran, the only one. Namun, ada beberapa provider yang menyediakan alternatif pembayaran melalui deposit transfer dari akun bank (振り込み/furikomi), tanpa mengeluarkan biaya yang mahal.

Provider apa sajakah itu...? Berikut pengalaman saya.

1. Softbank Prepaid
Softbank merupakan provider yang paling nyaman untuk foreigner karena ketersediaan layanan berbahasa inggris. HP pertama saya adalah softbank flip (non-smartphone) prepaid. Saat itu harganya hanya 2000 yen plus pulsa 1500 yang berlaku sebulan. Nomor tersebut aktif selama setahun (hanya bisa menerima saja ketika bulan pertama habis), dan bisa diisi ulang per bulan (3000 yen).
Saat ini saya juga masih menggunakan softbank prepaid, bedanya tahun lalu saya beli SIM cardnya saja (HP dari Indonesia), biaya awal 3000 yen plus pulsa 3000 yen untuk dua bulan, masa tenggan satu tahun dan jika diisi lagi akan bertambah masa tenggang setahun lagi.
Pembayaran kartu prepaid ini bisa secara tunah/cash di counter softbank.

2. Softbank
Saat saya kerja, saya beralih ke Softbank pasca bayar, dapat HP Dell (diskon 50%). Biaya bulanan sekitar 2000 yen plus modem mobile 4000 yen per bulan, jadi totalnya sekitar 6000 yen. Biaya yang besar, namun hanya itu cara saya bisa berkomunikasi dengan tanah air saat itu. Dengan masa kontrak minimal 2 tahun, saya harus setor ke softbank minimal 24x6000 = 134000 yen plus biaya awal 10000 dan tagihan yang membludak jika roaming atau over kuota.
Pembayaran kartu ini melalui deposit tranfer atau furikomi, potong tabungan tiap bulan.

3. Rakuten Mobile
Selain Softbank prepaid, saat ini saya juga menggunakan kartu rakuten mobile untuk akses internet di luar kampus. Plan yang saya gunakan adalah "data only", jadi tidak bisa menerima telfon dan sms. Kuota yang saya ambil adalah 3.1 GB per bulan dengan biaya per bulan 900 yen. Biaya awal sebesar 4000 yen dan ada biaya administrasi tranfer karena saya menggunakan akun bank untuk furikomi, yakni 100 yen. Jadi saya harus membayar 1000 yen tiap bulan selain biaya awal tadi.

4. Skype Credit
Skype sebenarnya bukan merupakan provider, tapi IP Phone atau VoIP. Jadi bisa digunakan untuk telfon (termasuk sms, dan ada nomornya) namun harus memiliki koneksi internet. Saya beli kredit skype 1000 yen (tanpa langganan dan batasan waktu) via amazon.co.jp. Metode pembelian kredit (pulsa) skype yang lain adalah via kombini dan debit/credit card. Untuk dapat nomor, kita perlu langganan.

Selain metode diatas, masih ada beberapa provider lain seperti AU, dan provider bayangan (MVNO, Mobile Virtual Network Operator) lainnya selain tiga MNO utama: AU, softbank dan Docomo. Sekali lagi, jika menginginkan harga termurah, pembayaran dengan kartu kredit tetap lebih murah.

Friday, April 27, 2018

Menulis Kanji pada Latex

Ada dua cara/metode utama yang menurut saya simple untuk menulis kanji dengan latex, pertama tetap menggunakan engine pdflatex, kedua dengan menggunakan engine platex, dengan tool ptex2pdf. Cara kedua ini sebetulnya gabungan antara platex/ptex dan dvipdfmx. Keduanya engine tersebut (pdflatex dan platex) merupakan engine latex modern. Latex adalah kumpulan makro dan banyak engine yang digunakan selain engine asli "Tex" yang dibuat oleh Donald Knuth tahun 1978. Tex kemudian dikembangkan menjadi \LaTeX oleh Leslie Lamport pada tahun 1983. By default, latex menggunakan engine etex (Ubuntu/Debian versi sekarang masih menggunakan etex rilis 1994). Pdflatex juga menggunakan engine etex dengan output pdf. Kedua metode yg saya jelaskan di bawah menggunakan dua pendekatan yang berbeda untuk menulis kanji yakni pdflatex(tex) dan platex (eptex). Pada pdflatex (selanjutnya disebut latex), kita perlu menginput package CJK yang bisa digunakan untuk menulis kanji, sedang pada platex/ptex, kita tidak perlu menginput package tambahan, karena sejatinya ptex/platex dibuat agar bisa men-support kanji by-default.

Hasil penulisan kanji dengan pdflatex (atas) dan platex (bawah). Platex menunjukkan tampilan kanji yang lebih halus daripada hasil generasi pdflatex.

Tuesday, April 24, 2018

How to obtain CoE from Kanazawa Immigration Buerau (Nagoya Branch) and send to your country

Here is a small note I made when applying for Certificate of Elibility in Kanazawa Immigration office (branch of Nagoya Immigration office).

List of document (as described by Immigration office web site):
  1. Application Form for Certificate of Eligibility (available on the Immigration Bureau website).
  2. Proof of applicant’s relationship with the student. One of the following documents indicating the relation under the student’s country’s laws: A copy of an applicant’s family register, marriage certificate for spouse, and/ or birth certificate for children.
  3. A copy of the student’s Residence Card or a copy of his/her passport
  4. Proof that the student will be able to support his/her family throughout their stay in Japan. 
    1. Privately financed students should submit their bank statement indicating balance of deposit or a duplicate copy of remittance from home country. 
    2. Japanese Government (Monbukagakusho) scholarship students should submit Certificate of Monbukagakusho Scholarship Student.
  5. Certificate of Studentship issued.
  6. 1 photo (4cm×3cm) of each family member taken within 3 months of the day of application
  7. A self-addressed envelope affixed with a 392-yen stamp (for the recorded delivery purpose)
Note: In some cases, additional documents will be requested by the Immigration Bureau.

List document I submitted

Related Posts Plugin for WordPress, Blogger...