星期三, 10月 17, 2007

輸了,不帶遺憾的

呵呵,我想,不論是輸贏,這篇總是難以下筆的。

雖然滿懷著期望,但是總是讓大家失望,總是要說一聲抱歉的。只能說自己實力真的不足,或許當下那一刻我以為我們的演算法實作是輸人的,但是李春良老師告訴我,還有SIMD這個重要的東西被我們忽略了,一個會導致三倍的差異的指令集。

是我自己的問題,學了那麼多硬體,似乎也沒有派上用場,或許,可以藉此說服別人,我沒有什麼,我自己也知道,我也真的沒有什麼,只有一身的不要命,但是有時候得承認,我聰明才智不如人,會再努力的

下個比賽,中華電信比賽,拿第一名吧!!

---
呵,總是要有企圖心的前進

Eclipse with C/C++, Java

如何在 Windows 底下使用Eclipse 進行 C/C++,Java 進行開發
Eclipse 本身是針對 Java 的一個開發工具,但是經由 CDT(Eclipse C/C++ Development Tooling) 的載入,亦可開發 C/C++ 專案。

要安裝的有



安裝提醒
  • Java Runtime Enviorment: 直接線上安裝即可
  • Java Standard Edition: Accept後,下載安裝即可
  • MinGW: 選擇Automated MinGW Installer下載,安裝時請選擇candinate,加選g++ compiler, mingw make
  • Eclipse + CDT: 下載Eclipse Classic,和其 CDT,兩個解壓縮至同一資料夾即可,Eclipse是綠色軟體,解壓後執行Eclipse.exe即可執行


那麼接下來就是設定環境變數了
在 我的電腦(右鍵) >> 內容 >> 進階 >> 環境變數 >> 系統變數 中設定,path和classpath(如果沒有自行新增),將下列路徑新增至該值的尾端(以Java SE 1.6 Update3, JRE 1.6.03為例),以;區隔
pathclasspath
Java Runtime EnviormentC:\Program Files\Java\jre1.6.0_03\binC:\Program Files\Java\jre1.6.0_03\lib
Java Standard EditionC:\Program Files\Java\jdk1.6.0_03\binC:\Program Files\Java\jdk1.6.0_03\lib
MinGWC:\MinGW\binC:\MinGW\lib


在這邊簡單解釋一下
  • path: 為comand line底下尋找執行程式的路徑,一般而言,從所在的資料夾尋找,若找不到則開始尋找path所列出的路徑
  • classpath: 為連結程式庫時所需的路徑,一般而言,從所在的資料夾尋找,若找不到則尋找classpath所列出的路徑


上述都做好,可以享受一下Eclipse嘍

---
雖然不難,但是常跟別人說明,寫一下也好

星期日, 10月 14, 2007

念書

第一次覺得念書是一件很輕鬆的事,雖然今天沒有念到什麼,不過還是有疲倦感,事實上這個假日還是拿來念書了(笑)

學校的作業系統上的七零八落,或許還不足以形容,那麼做人只好自救了,沒有好老師也要有好用心,花了一整天念書兼整理重點,在冼鏡光先生所寫的簡報的幫忙下,我也才念了三小節,或許沒有抓到要訣,但是筆記用XeLaTeX,真的需要一點時間來適應就是了,也第一次覺得,書自己一個念念不完的感覺,或許會尋求合作之道。當然,會非常希望重點有做完的一天,這樣子又有一項資料可以開放啦,呵呵,就盡量努力嘍

呵呵,這個blog一般時候會偏向閒聊,當然還是希望偶爾可以po出一些有趣的東西

---
寫作有助於解壓XD

星期五, 10月 12, 2007

最近

又到了禮拜五,雖然還沒上課,總有喘口氣的感覺。efang回家,沒有朋友來訪,這個週末可以一人較為隨性。

最近總有追著時間跑的感覺,雖然不再像從前天天作息不正常了,但是總有一股無法帶走的疲倦感,或許,從高中以來,沒有花那麼多時間在念課內書? XD

有時候會想問自己,到底可以把心思分給多少人呢? 分給太多就忽略我覺得很重要的人,不分的話,總覺得自己過於自私,什麼時候要分給自己呢? 或許,這答案顯然不那麼重要,呵。

有一個寧靜的早晨不錯,至少還可以胡思亂想XD

---
又是廢話一篇XD

星期四, 10月 11, 2007

小考


傳說中,這是以小考聞名的學校XD

---
我該說什麼XD

星期三, 10月 10, 2007

Desktop

桌上型電腦竟然掛了,經研判是掛在主機板,是我太久沒有用了嗎...Orz

---
只剩MacBook ??

星期二, 10月 09, 2007

The Matrix Game: 16 Matrix Multiplication

最後的程式碼釋出,比賽的文件分享也告一段落啦!!

打包嘍

稍微說明一下

  • document.pdf: 此次比賽最後繳交的文件,李春良老師指導(不然我們應該寫的很難看...Orz)。
  • MatrixMult.c: 主程式,最主要用來執行16個矩陣相乘
  • Matrix.h, Matrix.c: 矩陣的相關基本工具。
  • MCPT.h, MCPT.c: Matrix Chain Product Tree,但是在此比賽中是簡化版,已建比賽資料,彈性非常低。
  • utility.h, utility.c: 一些通用工具,包括產生讀檔檔名。


事實上此次程式不甚完備,不過時間有限,但是我自己目前尚無時間修改,所以就容許我這樣子偷懶釋出吧XD

---
歡迎自由取用,轉載不需告知

Matrix Chain Product Tree with Parallel Modify

事實上整個程式和簡報參照

Heejo Lee, Jong Kim, Sungje Hong, Sunggu Lee, "Processor Allocation and Task Scheduling of Matrix Chain Products on Parallel Systems, " IEEE Transactions on Parallel and Distributed Systems vol.14 no.4, pp. 394-407, April 2003.

相關資料如下


---
歡迎自由取用,轉載不需告知

MPI Programming & MPI_Group

MPI 本身是message passing interface,是一個專門為平行運算所規範的Library interface,目前較有名的實作體有Open Source的MPICH,而幾個cluster的大廠IBM, hp 也有各自的implemenatation,不過稍微查一下,在天瓏並沒有中文書籍說明相關MPI,而英文書籍也不多,在這個比賽中,我並沒有使用任一英文教科書,我使用的書如下

  • MPI 1.1: 這份文件是Standard,所幸並不難讀,我的MPI_Group就是利用Standard和老師的協助完成學習的。MPI 1.1支援C和Fotran
  • C語言平行計算程式設計: 此份文件極具參考價值,一開始看這份會有很大的幫助,雖然在後面二維陣列的平行計算切割時,變數定義不明,但仍暇不掩瑜,此份文章由國網人士所撰寫,極具參考價值,當然,此份文件也有Fotran
沒有列出MPI 2.0是一件極遺憾的事,MPI 2支援C, C++, Fortran,支援超過500個function,也支援一些更好的平行運算特性,不過在此次的比賽中國網主機是不支援的,所以並沒有特別去研究,不過大概看了一下,有很多向下相容的function,在C++中只是多了一層包裝去呼叫C所實作的function。

MPI_Group是一個極為有趣的function series ,雖然MPI支援針對所有的CPU進行集體通訊的動作,但是若將母群體的CPU分割成數個子群體進行類集體通訊的動作,卻得依靠MPI_Group_xxx 等的function來進行子群體的定義。

一些相關function如下
MPI_Group_size()取得目前這個Group共分得幾顆CPU
MPI_Group_rank()取得目前這顆CPU在此Group的編號
MPI_Comm_Group()建立一個Group
MPI_Group_incl()從一個Group中選取一些CPU建立一個sub-group,而被選取的CPU 仍在原來的Group
MPI_Group_excl()從一個Group中選取一些CPU建立一個sub-group,而被選取的CPU不在原來的Group
MPI_Group_free()針對此Group的CPU做釋放動作,但是同時此CPU也不再屬於任何一個Group,只屬於MPI_COMM_WORLD
MPI_Comm_create()針對某一個Group(MPI_Group),建立一個Communcator(MPI_Comm)
當然,這邊只是提起一些function,還有一些很有趣的Group相關動作,例如說可以針對兩個Group做AND, OR, XOR,還有比較,再提起兩個常數
  • MPI_COMM_NULL: 用於Commucator為NULL的狀況
  • MPI_GROUP_NULL: 此CPU不屬於此Group,即會傳回NULL


範例使用方法

MPI_Group universalSet, subset; /* 宣告母群體和子群體Group */
MPI_Comm universalComm, subComm; /* 宣告母群體和子群體Communcator */

/* 設置母群體 */
MPI_Comm_group(MPI_COMM_WORLD, &universalSet);
MPI_Comm_create(MPI_COMM_WORLD, universalSet, &universalComm);

/* 設置子群體 */
int ranks[] = {0, 1, ,2, 3};
MPI_Group_incl(universalSet, 4, ranks, &subset); /* 設置完後,此4顆cpu仍在原來母群體中 */
MPI_Comm_create(universalComm, subset, &subComm);

/* 針對子群體的集體通訊動作範例 */
int a, subID;
MPI_Group_rank(subset, &subID);
if(subID==0) a = 5;
if(subComm!=MPI_COMM_NULL) MPI_Bcast((void*)&a, 1, MPI_INT, subComm); /* boardcast a 資料給subset這個子群體 */

當然,還有很多很有趣的使用方法,不過我比賽中所使用的技巧僅此而已,呵呵,有錯誤歡迎指教嘍。

---
歡迎自由取用,轉載不需告知

星期一, 10月 08, 2007

how to save a life

經過兩天的休養(睡著的時間比醒著的時間多),一餐吃下兩餐的份量(我有偉大的老媽),比賽後的身體調養算是告一段落了XD

下一步,如果聽了Josh Ko的建議,這將會是無敵大的計畫XD

星期日, 9月 30, 2007

Matrix Multiplication

在這次比賽中,我用簡單的實作碼實作出兩種Matrix Multiplication Algorithm,分別是

Matrix Multiplication: Naive Algorithm
Matrix Multiplication: Strassen's Algorithm

其中參考Introduction to Algorithm 2/e Ch28.1 28.2所做出來的簡報如下(LaTeX + beamer)
Strassen's Algorithm: Slide

---
歡迎自由取用,轉載不需告知

The Matrix: Reloaded

The Matrix: Reloaded
長庚大學資訊工程學系
指導老師: 李春良 cllee 助理教授
學生: yen3, fire7617, decay

這次的比賽對我,第一次這麼投入一件事(笑)
首先要感謝李春良老師,我很愛找他聊天,他也常常告訴我一些很有趣的事,當然不乏對於人生的態度,最該感謝時,在於我們沒有放棄時,他拉了我們一把,可謂是一代神手級老師,老師,謝謝你m(__.__)m

小祥和小花是我難得一見的好隊員,辛苦大家了,三人常常一同奮戰到四點,程式的乘法與轉Fortran的功勞居不可沒,我只想說,沒有互相,我們不能不帶有遺憾完成這個比賽,小祥小花,你們是我遇過最好的夥伴~呵

父母和宜芳在這次比賽中陪伴我一路走來,雖然在學校時,我一有心煩就會尋求避難之地,這三個月來,麻煩了

scorenn 和 Josh Ko 是我的朋友兼明師 ,在我轉C Programming Language時,兩人在編程上的概念助我甚多,讓我少走許多不冤枉路,平常或許有時間會自己走,只是比賽要節省時間,能不厭其煩被我一直詢問,是需要相當高的耐心(笑)

竹竹是一個相當神奇的學伴,她只有抽過一次學伴,呃,我自己亂抽抽了好幾次就是XD 一路上樂當後援會兼啦啦隊,常常給予鼓勵,非常感謝,mandy對於小花有非常決定性的幫助,唉,都怪我們兩個大男生不會照顧人,下次你要不要來當個隊醫之類的,專醫小花一人XDXD

當然,我不否認我是一個非常愛聊天的人,這段日子中,聊天的次數大幅度的下降,感謝大家讓我專心比賽,應該是說,讓我戒掉了這個好與不好的毛病,哈哈哈

呃,事實上從第一版180秒到第二版的111秒,到第三版的90秒,可謂是進步良多,不過90秒是不是一個好成績,我也不知道,當然,有關比賽的文章不會就此結束,我想我會發一系列的文是有關這次比賽中所學到的東西,可能一兩篇,可能五六篇,看學習的有多少了,不過,這篇才是我認為最重要的,學會感謝,人才有可能走的更遠

若要說我從這場比賽中學到什麼,程式一路走來轉換了三個語言(C++ -> C -> 一點點的Fortran) ,學了一點點MPI Programming,老實說,還真的沒有學到什麼東西,不過我從李春良老師和小祥小花上學到

堅持不放棄,才能不帶有遺憾向前衝
這點或許不難,實作起來或許就很難了(笑),中間也發生許多搞笑事,我們三個玩在一塊(還好比完小花就可以恢復女兒身了XD),也辛苦在一塊,當然,把桌面炸的跟鬼一樣也是我們的專長之一XD,這次比賽對我而言是一個美好的經驗。半夜可以唱忠孝東路走九遍,一直有人叫我請Friday,哇哈哈,至少,我們撐過來了

我也想對李春良老師說,並不是所有學生都會放棄的,相信你,我們撐過來了,雖然我們很混,但是我們不想因為一些事,就少了一位好老師,我們從來都不是好學生,但是至少,我是一個為了事情可以不要命的學生。

當然,中間身體紅燈一直亮起來,我想,賽後是該休養一陣子了,不過我又是一個閒不下來的人,天知道我那天又開始忙起來了XD

---
好零碎的感想,事實上是太多話想說了XD

星期六, 9月 29, 2007

Some Photo about The Matrix Game

這裡

用手機照的,品質不怎麼好,故且看之 XD

---
有好老師就有不要命的學生XD

星期四, 9月 27, 2007

ver 3.0A

完工

---
效率進步了20%

星期日, 9月 23, 2007

ver 3.0

開工XD

---
聽說是相對而言最難的一版XD

星期六, 9月 22, 2007

ver 2.0

finished

---
效能進步了100% XDXD

星期五, 9月 21, 2007

感觸

雖然我到現毫無鬥志,不過我只有一個心情---我不想輸給以前的自己

---
一行文好多...Orz

ver 2.0

debuging

---
希望有突破性進展


4:31 AM 發現只快了15%..Orz

星期三, 9月 19, 2007

ver 1.0

現身

---
三天沒睡好了XD


7:32 PM 有想法了,繼續動工了

極限

挑戰吧

---
v1接近完工


7:02 AM 結果睡不到兩個小時就被蚊子虰起來看程式XD