電子信箱 service [at] bituzi.com
幣圖誌首頁 facebook粉絲團 google plus google plus


記憶體爆炸?虛擬矩陣來救你!



大家好,貓大又來了!今天貓大要跟大家談的是虛擬矩陣(Virtual Matrix)。每一位程式人在寫程式時(尤其是大程式),一定常常遇到記憶體不足(Out of Memory)的問題。尤其在採礦程式中,我們需要大量的泥土(資料),並從資料內挖掘有利益價值的礦物(有用的資料),但當電腦的記憶體無法容下如此大量的泥土(資料)時,便會跑出記憶體爆炸的錯誤。

程式運作的流程

接下來我們來談談程式運作的方式。最一開始,程式會儲存在硬碟(Hard Disk)或光碟(Compact Disk)等輔助儲存系統中,當我們要求程式運作時,作業系統會將我們的程式由硬碟載入到主記憶體(Memory)內,並作適當的修正,使程式成為可執行的狀態。若程式需要使用資料庫內的資料,則會從資料庫載入需要的資料到主記憶體中供程式運作,接著便由CPU來執行程式內的運算。


記憶體不足的問題在於當「程式過大」或「資料量過大」時,造成載入主記憶體後其無法負荷。而虛擬矩陣的用意,便是為了解決資料量過大造成的記憶體不足,並且讓我們的程式可以使用大量的資料供程式運算分析。

虛擬矩陣運作方式
虛擬矩陣是如何運作的呢?試著把我們的程式想像成是在採礦,那麼資料庫就是我們的礦場,我們需要從大量的資料中,找出有用的資訊。而主記憶體就是我們分析礦石的場所,有可能是你家的後花園,也有可能是車庫。而CPU便是用來分析的工具。因此,當你需要從礦場的泥土中找出貴重金屬時,不可能將整個礦場搬到家裡的後花園。並不是因為家中沒有後花園,而是因為後花園並沒有這麼大,而造成後花園空間不足(Out of Garden)也就是程式中的記憶體不足。
但是,如果我們不要一次將整個礦場搬到家裡的後花園,而是將礦場切成一個N x N的矩陣,每次只搬運矩陣中一點點的泥土跟礦石到後花園中,那麼就不會造成花園空間爆炸,導致沒有辦法分析礦石了。
所以,我們會虛擬化地「將所需要的資料以矩陣的方式切割」,當我們程式需要這些資料時,再每次只從資料庫取一部分的資料供程式分析使用。


稱呼虛擬矩陣的原因
為什麼要叫虛擬矩陣呢?按照前一段落的介紹可以發現,我們可以不以矩陣方式去切割我們的礦場,我們也可分層或利用其他的分割方式為之。
其實會叫做虛擬矩陣式有原因的,在大多數的資料採礦程式(Data Mining Program)的分析方法中,不管是支撐向量機(SVM)或羅吉斯回歸(logistic regression)等,都是需要資料與矩陣的方式儲存。而虛擬矩陣的機制正好是要解決資料採礦程式中,資料量過多造成的記憶體不足問題。因此虛擬矩陣都是以矩陣的方式切割來源資料的。
虛擬矩陣是專門解決記憶體不足的機制,以防止當資料採礦程式的資料量太大時,欲一次將所有資料抓取到記憶體後,造成程式無法運作的解決辦法。藉由一次只從資料庫抓取一部分的資料,並且讓程式中能夠以矩陣方式簡單操作,使程式能夠穩定執行。

採礦貓

採礦貓過去在許多金控公司當過顧問,看到很多台灣散戶投資者被國外的投資公司坑殺,因而希望能提供散戶強大的投資工具與武器以提升獲利率、避免走上被坑殺的道路。

0 意見: