Tuesday, January 16, 2018

Menghitung Matriks Ordo Puluhan Ribu

bismillah. kali ini saya berurusan dengan matrix berordo sangaaaaaaaaaaaat besar. kira2 30rbx30rb. operasi matrix nya sih perkalian dan penjumlahan saja, tapi tidak bisa dilakukan. ada beberapa pesan yang saya jumpa dari MATLAB:
OUT OF MEMORY
Requested 2x19682x2x19682 (11.5GB) array exceeds maximum array size preference. Creation of arrays greater than this limit may take a long time and cause MATLAB to become unresponsive.
dari kasus ini, saya jadi tahu batas maksimun MATLAB dalam komputasi array. sebelumnya saya tak pernah mengira ini sama sekali.

untuk mengetahui batas kapasitas MATLAB, gunakan perintah 'memory'. disitu akan muncul:
 Maximum possible array : 4000 mb (karena ram saya segitu2nya)
padahal kebutuhannya: 30rb x 30rb x 8 bytes ~ 7200 mb

saya browsing2 di mathworks, adakah jalan keluar dari persoalan ini. beberapa solusi yang ditawarkan antara lain:
[1] menambah memory ram
[2] meningkatkan memory swap/virtual/pagefile
[3] menggunakan toolbox parallel computing
[4] menggunakan penyimpanan matfile

cara 1 jelas ndak mungkin, males beli ram. ram saya 4 gb, cukuplah. cara 2 saya coba, saya setting virtual memory menjadi 20 gb (restart required). cara 3 tidak saya lakukan. cara 4 sempat saya coba tapi ribet banget.

setelah mengubah virtual memory, saya cek lagi kapasitas MATLAB:
Maximum possible array : 20000 mb
wah, saya gembira sekali. sepertinya bisa nih mengoperasikan matriks besar. setelah dicoba, ternyata TIDAK!!!
Requested 2x19682x2x19682 (11.5GB) array exceeds maximum array size preference. Creation of arrays greater than this limit may take a long time and cause MATLAB to become unresponsive.
tamat sudah... sepertinya memang tidak ada solusi. namun Allah berkehendak lain...

malamnya, secara tidak sengaja iseng2 membaca Helpnya MATLAB. lalu saya jadi tahu bahwa, MATLAB hanya menggunakan memory ram untuk menghitung array. agar memory virtual bisa dilibatkan, opsi berikut (di bagian preferences) harus di non aktifkan:
Limit the maximum array size to a precentage of RAM
setelah dicoba, BISA!!!!

walaupun laptop serasa macet total, sempat tidak respons beberapa detik, karena energi dan memorynya terkuras untuk mengolah array, kira2 60-90 menitan saya menanti, namun bisa dan ketemu hasilnya.
alhamdulillah ...
alhamdulillah ...
entah betapa banyak jalan keluar yang Allah berikan dalam kesulitan2 saya, namun saya tidak pandai bersyukur dan malah banyak bermaksiat kepada-Nya.
astaghfirullah wa atuubu ilaika...

referensi:
beberapa dokumentasi dari mathworks.com

No comments:

Post a Comment