學習並行編程

今天看到bulletphysics支持opencl,支持蘋果的simd。。。。。。

對於多線程一直停留在win32的幾個API上,到了vista時代的RWLock,interlock函數族都不甚瞭解,也沒有寫過多線程程序。現在看來比較迫切了。移動端和web硬件發展太快了!心慌慌。整理下思路先。

先是CPU端的。

首先是PSM的四核,會有至少2個子線程,因此c#的多線程庫必須掌握。

其次是webcl,async javascript,涉及到ajax和webworker,涉及到資源的讀取和後臺數據處理,不必說必須掌握。

c++的話有c++11的多線程,這涉及到WP8是否兼容,應該沒問題吧。

Android和ios自不必說,這兩個平臺ios還有點了解,Android小白,而且Android貌似4核機子很多啊。記得objective-c好像是block的,Android界面是否也用java多線程?只掌握c++還是不夠。

好在flash沒有。


然後是GPU的。

directx的多線程渲染是cpu端的,不過涉及到gpu渲染,所以就放到gpu來說了。光聽了微軟的一個音頻,看了ppt,唉,我軍還是刀耕火種,敵人已經飛機大炮了。。。。。延遲渲染+多線程渲染。。。。。。

opengl4.x的多線程也不必說,看到一堆atom都不知道那些事幹嘛的怎麼使用。先從openglinsight和spec中尋找吧。


再之後是GPU計算

好像opengl4.x也有了compute stage,不管怎樣還有opencl。對了,好像webgl後來也要加入opencl。

用opencl或者directxcompute,應該可以涵蓋所有了。對了,unity4 支持directx compute shader。

微軟的amp,ppl以及cuda,amd的加速算法因爲和硬件操作系統綁定,不喜歡。


最後是腳本的協同程序。還好。

比如c#和lua。


看了下opengles3.0 的spec,果然是有Sync Objects and Fences,而mali624都有了,三年後應該主流了。

昨天看了下wp8的directx,雖然是directx11的set,還是比較少的,沒有那麼多asynchronous和compute,tessalate,稍稍心安。


最後列個計劃,按如下順序學習其中的並行技術:

c++11,c#,webworker,directx compute shader,dx11,opengl4.x,opencl

以及並行算法和並行設計模式,這些東西是共通的。


我努力學習想追趕技術的潮流,結果發現自己越來越遠!要麼減少知識面,要麼咬牙堅持。想想自己3年前還不知3d爲何物,那時只會更難。。。。。。繼續咬牙吧。和時間賽跑。

發點牢騷心裏舒服了些。就算微軟將來的ie10最終不支持webgl我也不會罵娘。移動,互聯, 遊戲,本來就不容易。

以此作爲並行的第一篇。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章