2009年2月13日 星期五
2009/2 Training course: Cell Programming
1.
問:假如 SPU3 要用mfc_put 把資料丟給SPU4,
我再SPU3裡面這樣寫,
mfc_put(&myps , XXX , sizeof(my_class) , TAG , 0,0);
XXX要放SPU4的 (local store位址) + (變數位址)
我知道local store的位址從problem state可以得到
可是我再SPU3裡面要怎麼抓到SPU4的變數位址呢?
答: 對,這是一個問題,所以你必須在SPU4的code加入"告訴SPU3 它該放在我的Local Store的哪一個address"意思就是你應該在SPU4的Local Store開一個一模一樣的變數,然後用mailbox或signal告訴SPU3這個變數的addr, 叫SPU3將資料傳到這個addr
2.
問:while(spe_out_mbox_status(spe_id[0])==0);
這段code的意思是說SPU0如果他的outbound傳輸是傳給SPU0的話,
就會一直被這個while 迴圈block住嗎?
答:其實是可以直接使用spe_out_mbox_read(),但是有時會出錯,為什麼呢?因為ppe去讀spe的outbound-mailbox是"non-blocking"。所以有可能spe根本還沒把資料寫到out-bound mailbox,但是你卻跑去讀了,所以會得到錯的值。為了預防這樣的錯誤發生,所以我們要去看out-bound mailbox的status,當status的值不是0的時候,代表有資料進來了。而因為你去讀status也是non-blocking,所以要用while loop一直去偵測,直到它不為零。
3.
問:Fenced and Barrier Command
Fenced command: mfc_putfBarrier command: mfc_putb
在每一個SPE當中,會有一個DMA queue,所有要做DMA的command,都會進到這個Queue當中等待執行。但是先送進去DMA不一定會先執行。如果資料送出的先後順序對我們來說是有意義的,但我們又不想要每送一筆就blocking的在等待,所以我們就必須以fenced和barrier command來幫忙將想要資料送出。
於是我們將想要依序的資料用相同的標籤(TAG)標記,然後使用barrier/fencedcommand 將資料送出。
barrier:跟我同樣TAG的DMA指令,比我早進來DMA Queue的指令先做完,才會輪到我做。fenced:跟我同樣TAG的DMA指令,比我早進來DMA Queue的指令先做完,比我後進來指令也可能會先執行,之後再輪到fenced指令去做。
2009年2月11日 星期三
2009/2 Training Course
請 Speakers儘快上傳你的講稿資料
2/9 SystemC - DNA
2/10 SystemC - DNA
2/11 SLIM - 宗胤
2/12 Cell - bbb
2/13 Eclipse - 宗胤、阿凡
上面是Training Course課表
地點皆在4285,時間 9:00~12:00、14:00~17:00
基本上皆是早上講課,下午則是一些實作練習
歡迎各位來參加
另外請主講人在2/6前上傳投影片等資料
SystemC & TLM
SLIM Slide SLIM Source 作業注意事項
Cell Slide Example Source 作業(有修正請重新下載)
Eclipse Slide Example
GEF Slide Lab
2009年2月10日 星期二
推薦書
推薦兩本程式實作的好書:
1) Head 1st Design Pattern
http://supersmalldolphin.blogspot.com/2008/06/head-first-design-pattern.html
2) Effective C++
http://www.books.com.tw/exep/prod/booksfile.php?item=0010264536
第一本可幫助寫出具良好架構易維護的程式,第二本提供許多c++建議讓程式更快且避免錯誤的產生。
如果你/妳尚未閱讀過這兩本書,建議將他們當成打發時間的好朋友…
若有問題歡迎留言或寫信給我。
Thanks.
AL.
2009年2月6日 星期五
2009新春聚餐
當天早上11點,在Scream Lab 4287集合!11點半出發,逾時不候。
今年比較特別的是多辦了一次聚餐, 交換禮物的活動也從尾牙聚餐改到新春聚餐. 時間是下午一點鐘開始, 不過我把地點拉到梁勝富老師家的附近一家叫雲山坊的田園餐廳, 請各位設法早一點到(中午12點前), 外地來的學長姐, 我會安排學弟們騎車載各位過去, 必要時, 我會用車子接送個一兩趟. 應該不會有問題. 假如哪位同學可以借到車子的, 也請幫忙. 請設法通知你可以聯絡到的人, 而她他又還沒在下面名單裡簽到的.
- aaa
- centcent
- starryalley
- mobo
- showmin
- Dawn
- 阿凡
- 塞公
- bbb
- Buffett
- squid
- 皓鈞
- kiwi
- 品皓
- 冠廷
- Rufus Chang
- 育典
- water
下面是雲山坊的網址:
http://winsun.tu.com.tw/03map.htm
以下是幾張照片:
2009年2月4日 星期三
Coware v2007.1.2
使用時請先source 一下 設定檔,指令如下:
ooxx@WS>source /etc/skel/CoWare.csh
然後要使用的時候,只要在你的目錄下打
ooxx@WS>pct &
就可以開始用了
Have Fun!
2009年2月3日 星期二
安裝CUDA --- VC8
選擇 Windows XP
將下面三個都抓下來, 抓2.0就好可以了
1. CUDA 驅動程式:
2. CUDA 工具套件:
3. CUDA 軟體開發套件(SDK):
放Tool Chain:
C:\CUDA\
範例放在這邊
C:\Program Files\NVIDIA Corporation\NVIDIA CUDA SDK\Projects
進到 Project 之後點VC的Project檔就可以開了
一些小問題:
Q1: 有多張顯卡時, 要選另一張顯卡, 可以傳參數 "-device=1"
Q2: VC Syntax Highlight可以看 ~SDK\doc\syntax_highlighting裡面的文件
Have Fun~
2009年1月20日 星期二
進度報告-Cell BE programming-塞公

2009年1月19日 星期一
ABS/OLA Sinusoidal Modeling
這篇全名為Analysis-by-Synthesis/Overlap-Add Sinusoidal Modeling Applied to the Analysis and Synthesis of Musical Tones,是1992年AES的Journal,主要精神在於Analysis-by-Synthesis,概念其實跟 codec 的 encoder 內部包 decoder 很像,它每一圈都會找一個新的 Sinusoid並加入,以致於原訊號扣掉這些Sinusoids後會最小,最後再依照這些Sinusoids來分析下次要找的參數。
本週我報告了ABS流程及公式推導,老師提出了一個問題。
在計算 least square error 時,ω 如果照 paper 上說的只是將每個frequency bin代進去看誰最小,這個動作不就跟做DFT一樣?如果該訊號的頻率介於兩個bin之間又該如何?
論文 p501 第(25)式說明他是用每個bin代進去算的,後面我還沒報告的部份裡有另一個主要觀念 Quasi-Harmonic Modeling 則只有調整 partials 的位置,但前題是 f0 要找得準,其他部份要全部看懂後才能確定它是否沒做特殊處理。
而老師提出一個解決此問題的方向…
既然公式中原本只對 a 跟 b 做微分取極值,我們可以對 cos(ωn) 與 sin(ωn) 先做 Taylor expansion 後對ω做微分取極值,極值不只一個解,先前我們可以知道ω落在哪些bin之間,以此做判斷選出正確的極值即可。
Dec. 9th. 2008 update
上次提到「ω 如果照 paper 上說的只是將每個frequency bin代進去看誰最小,這個動作不就跟做DFT一樣?」的問題,其實在論文上有說明 M 值可自訂,M 值 & Na(Analysis frame size) 與 SNR 的關係可在投影片上看到。之前之所以誤會成是 frame size 是因為 M 同時也是 DFT 的慣用標號,論文第三章的實作說明中只有一小句話有提到原始訊號轉 DFT 前需先 zero padding 到 M 的大小。
Download: slide
Jan. 6th. 2009 update
今天回報已解決bugs及目前遇到的問題。投影片中有列出 4 個case,接下來打算先針對第二個case去找問題所在,這是沒有套用windows function,但FFT size有加長的結果,很明顯phase跑掉了。
Download: slide
Jan. 13th. 2009 update
由於 revise 原本論文的算式已找不出錯誤,某天我翻出同作者在五年後發的另一篇論文:Speech Analysis/Synthesis and Modification Using an Analysis-by-Synthesis/Overlap-Add Sinusoidal Model,雖然這兩篇論文內容極為相似,不過我發現有部份算式不一樣,舊論文在推導MSE時使用
新論文則是用
換了新論文的算式,套上pure sine後結果很正確 (case 4-4),很開心的套用到 violin 第一個frame也正確,但跑到第四個frame時便找錯頻率了 (case 4-5)。也因為如此,找出了另一個主要問題。
論文在反推phase時是用 -arctan(bi/ai),這是因為公式的推導中會出現 sinφ/cosφ,但是,原本φ的範圍是介於 0~2π,arctan的結果卻只會落在 +-0.5π,導致當我們用 cos 去製造 sinusoids 時,phase的平移範圍太小,當這個frame起始的幾個samples值是呈現遞減趨勢時,phase的誤差會剛好差π。解決的辦法就是改用 Matlab 的 angle function。(case 4-6)
最後,實驗結果還是有phase的偏移,所以開始針對phase再開新的case來討論。目前的問題出在:在找第一個 sin 時是正確的,找第二個時 phase 便會出錯,可參考 case 5-2,第一個 sin 的frequency index落在 14, 15, 16,第二個在 17, 18, 19。中間的圖說明能量上跟原訊號是很完美的貼近,但下圖的 phase 卻跑掉,導致上圖的波形有所差異。
Download: slide
2009年1月18日 星期日
2008畢業照
2008年, 我教的這屆學生要畢業, 其實我自這屆以後, 大學部我開的都是選修課, 所以跟學生的關係不再似以前一樣密切, 不過我在每屆學生畢業照之時, 一定會抽空參加.
這系的老師不知怎地, 不太參加學生的活動, 甚至連畢業照show up的老師也不多. 師生的關係疏離嚴重. 我想跟老師的研究升等壓力超大有關吧! 也怪不得老師們, 我見到系上的新老師通常來不到一年, 其氣色與健康就走下坡的很多, 這也令人憂心. 教育事業走到這一步, 不知道該怪誰, 不知道該怎麼說與怎麼辦?
話說2008畢業照, 一班在星期五 , 另一班竟然定在星期六, 星期五參加的人都少了, 星期六一定更慘. 我是周末一定要陪家人的, 何況內人星期六到北部開會, 留我一個人要搞定兩個孩子, 出門對我來說簡直是恐怖與不可能的任務. 所以我只答應星期五出現, 星期六的就抱歉了.
沒想到我星期五的時間記錯了, 一點記成兩點, 等跑到圖書館錢已經曲終人散, 沒辦法, 我又不想缺席任一屆的畢業照, 星期六上午硬著頭皮出門.
出門前先幫Diane與Joanne洗一下屁屁, 10點開始餵午餐, 10點45分出門. 10點55分到學校. 11點多一點與學生會合.
大家可以想像到學生驚訝驚喜的樣子, 因為我事前沒說, 而當天也確實沒其他老師出席, 學生失望之極可想而知, 但是突然有一個老師出現, 心情可想而知, 何況還多了兩個如花似玉的小女生.
所以大家爭相跟我們三人拍照, 可惜我家Diane靦腆到家了, 所以一直沒太多笑容, 但是學生的滿足我可以感受到. 我想這會是我以及這一屆學生永生難忘的畢業照.
真的, 其實做老師的多用一點心, 事情總是會不一樣, 就像這2008的搞笑畢業照一樣.
其實我的心裡面也多少帶著一點心酸.
這是我跟我的專題生的合照. Diane跟Joanne在拍照後, 我待開他們後就開始恢復頑皮了, 玩得起勁得很, 挖勒! 一直玩到下午三點半才回家. 除了他們高興之外, 我也真的佩服自己.
一個字, 猛啦! ㄟ! 我是說Diane跟Joanne很猛, 不是我啦.
那天 !我累癱了.
