歐巴不知道你值的是那些操作,如果是乘法,算法所限,你不可能有本質的提高。又比如求逆,相信廣大屌絲程序員立馬會意識到:高斯-喬丹,小於五階用伴隨除矩陣以行列式,然后用SSE優化浮點速度。想再快就得去翻論文了,可是matlab那群鳥人,就是寫論文的人,他們的數學知識是我等碼農無法相比的,而matlab十幾年前就在做SSE優化。你唯一能做的就是算法上的突破,一旦逆襲高斯-喬丹算法,你必將為國爭光,名垂青史。
不過作為一個屌絲,你得明白,必須要抓住一切機會逆襲,因為題目只要求快,其他的限制一概沒有,而matlab好像只有在特定情況下,才會有並行支持,所以逆襲計划如下:
1 去換塊好的顯卡,最好是geforce泰坦.
2 去下個opencl
3 把數據發到泰坦上,開個1000條線程算,就用最通用G-J算法好了。
4 完爆matlab。
其實在着色器里算,更快,因為着色器對程序的控制流程有一定限制,目的就是為了速度,而且着色器的並行程度比matlab高。
當然你也許會問,你這屌絲都懂的問題,別人matlab怎么可能不知道?他們還真知道,不過matlab需要支持任意精度,而且他不知道你啥時候需要並行,啥時候不需要,也不知道你的顯卡是啥。至於最新的matlab版本是否支持基於GPU的並行計算,這個俺也不知道,好久沒玩過了。如果支持的話,你就省事了。
其實你可以去關注一下並行計算的三方庫,特別是那些支持OpenCL的。