Friday, January 19, 2018

Efisiensi Memory dengan Format Single untuk Matriks Ordo Tinggi

Bismillah. Ordo matriks terbesar yang saya libatkan adalah 60rb x 60rb. Secara default, MATLAB memerlukan memory sebanyak

60rb x 60rb x 8 bytes ~ 29 GB

Memory ram saya cuman 4 GB, virtual memory juga saya set hingga 50 GB. Komputasi menyita sebagian besar prosesor hingga laptop sering tidak responsif. Untuk mereduksi penggunaan memory, saya gunakan format bilangan single yang hanya memerlukan 4 bytes memory. Cara konversinya mudah sekali, misalnya

A=eye(10000);  % matriks identitas ordo 10rb x 10rb, akan disimpan dengan format double
A=single(A);     % konversi format double ke format single

Dengan format single, matriks A yang awalnya perlu 800 MB, kini hanya 400 MB. Dan operasi matematik terhadap variabel 'single' akan menghasilkan variabel 'single' pula.

Tips selanjutnya, adalah menyimpan variabel2 di workspace ke MAT-file, khususnya array berordo tinggi agar kita tidak perlu komputasi ulang yang memakan banyak waktu. Simpanlah dengan perintah save

save('namamatfile.mat', 'namavariabel1', '-v7.3','-nocompression');
save('namamatfile.mat', 'namavariabel2', '-v7.3','-nocompression','-append');

Opsi -nocompression artinya tidak dilakukan kompresi pada variabel, disimpan apa adanya. Apabila dikompresi, memory yang diperlukan jauh lebih kecil namun aksesnya lambat. Opsi ini baru didukung di v7.3.
Opsi -append artinya menambahkan variabel2 ke MAT-file yang sudah ada. Bila tidak ada opsi ini, maka dianggap semua isi MAT-file dihapus dan diisi variabel2 saja.

Referensi
https://www.mathworks.com/help/matlab/ref/single.html
https://www.mathworks.com/help/matlab/ref/save.html 

No comments:

Post a Comment