新聞報導,中國大陸設計的超級電腦「星雲」,以每秒1270萬億次(1.27 peta flop)計算能力,在世界500大超級電腦中,名列第二,僅次於美國的「美洲豹」(1750萬億次/秒)。
另一部「天河一號」,名列第七。
掌握計算能力,不僅是國家的夢想,也是許多工程師的夢想。
1980年,在德國留學時,八位元的電腦剛剛成為商品,有一種品牌:commodor-64,已經初具個人電腦功能。
當時許多大陸學者,捨不得吃,捨不得穿,但是要買一個小電腦,因為可以在家裡做一些計算工作。
當時研究所裡,有個波蘭來的訪問學者,他有一台HP的Calculator,可以寫程式,竟然,他的論文數據,是在上面計算出來。
我後來自己組裝了一台Z80A的電腦,又擴展成MC68008的電腦,蒐集了許多免費的軟體,帶回台灣。
最後,都丟了。
雖然我的專業不是計算,擁有自己的計算能力,一直在我的潛意識中。
工作的時候,有許多想學習的技能,都與掌握自己的計算能力有關。
其中,高階語言Matlab與C++的相互呼叫,一直使我怦然心動。
另外還有基本的parallel computing,以及romote monitoring等。
過去四天來,開始學習Matlab與C++的互相呼叫。
先弄會在C++中開啟及使用Matlab的資料檔mat files,這部分比較簡單。
接著,在Matlab中呼叫C++程式。
我用Visual C++ V9.0修改以前寫的一批檔案,總是不成!
後來發現,Matlab自己有一個Mex檔,可以編譯C語言的程式。
但是,還是不行!
用top-down方式修改了幾個檔案,都已經刪減到只剩骨架,code已經沒有問題,卻還是不行!
最後,改用bottom-up方式,由一個非常簡單,但是ok的程式,慢慢擴大,寫成以前的模樣。
也不成!
最後發現,是一碰到非線性數學計算,就當掉,而那些數學計算,例如開根號,或求指數,都不可或缺。
最後一試,把牽涉到數學計算的變數宣告為output variable,居然成了!
Why?
不知道!
終於,可以由Matlab中呼叫C++程式,以後,Matlab的方便,與C++的快速,可以結合了!
掌握計算能力,要做什麼呢?
什麼也沒用,只是一種潛在的心理傾向。
以前有一句話:掌握計算機的手,就是掌握世界的手。
中國大陸有了「星雲」與「天河」,那將增強他們掌握世界的能力。
而我,在筆記型電腦的Matlab中,成功呼叫另一個C++程式,雖然什麼也掌握不了,但是,已經填補了我內心的一個小小空格。