2009年3月6日 星期五

SIMD programming -- 雙魚

文件名稱:Cell Broadband Engine Programming Handbook
從第22章「SIMD Programming」開始看
已經看完第一節 SIMD Basics

∮SIMD Basics
1. SIMD: one instruction to be applied to the multiple data elements of a vector in parallel
2. Vectors are also called SIMD operands or packed operands.

→ 一個vector裡有4個element

3. SIMD coding 舉例

→ 一般作法是先把 b[1]、c[3]先load出來,將兩者相加後store回a[2]

→ SIMD作法則是把b、c memory stream都向左shift,利用 vector-add instruction 把數值相加,相加完的數值先向右shift,再存回a中對應的位置。

4. Auto-SIMDization:有些撰寫程式要注意的準則,按照準則能讓程式被Compiler有效地SIMDized
(1) Memory 要 data aligned,data存在記憶體中要盡量對齊。
(2) 盡量用array,不要使用pointer去存取資料。
(3) Function calls are not SIMDizable,因為Compiler可能會不知道function call 裡面的code,最好用 marco 跟 inline。

(4) Trip Count 至少要超過3次,否則Compiler不知道alignment。
→ trip count=4,如果a[0] is aligned 可以 auto-SIMDized

(5) 有相同的Left hand value比較好,可以用select bits instruction來SIMDize。

→ if – else部份可以改成 m[i] = a[i] > b[i] ? a[i] * 2 : b[i] * 3 ;







































2009年3月5日 星期四

多媒體專論課程-論文

我找了五篇論文,其中有一篇張數較少但數學很多,篇名分別是:

  • A Novel Pitch Period Detection Algorithm Based on Hilbert-Huang Transform, 2004
  • Use of Temporal Information: Detection of Periodicity, Aperiodicity, and Pitch in Speech, 2005
  • Speech pitch determination based on Hilbert-Huang transform, 2005
  • A comparison study of improved Hilbert–Huang transform and wavelet transform: Application to fault diagnosis for rolling bearing, 2005
  • A COMPARISON OF DIFFERENTIAL  SCHEMES FOR LOW-RATE SINUSOIDAL AUDIO CODING, 2003

這裡下載。

冠廷提供的paper:

  • AUDIO-BASED COVER SONG RETRIEVAL USING APPROXIMATE CHORD SEQUENCES: TESTING SHIFTS, GAPS, SWAPS AND BEATS
  • ALGORITHMS FOR POLYPHONIC MUSIC RETRIEVAL: THE HAUSDORFF METRIC AND GEOMETRIC HASHING
  • CONTENT-BASED MUSICAL SIMILARITY COMPUTATION USING THE HIERARCHICAL DIRICHLET PROCESS

這裡下載。

文森提供的paper:

  • A model-based approach to partial tracking for musical transcription
  • A Partial Searching Algorithm and Its Application for Polyphonic Music Transcription
  • BINAURAL PARTIAL TRACKING
  • Enhancing the Tracking of Partials for the Sinusoidal Modeling of Polyphonic Sounds
  • IMPROVED HIDDEN MARKOV MODEL PARTIAL TRACKING THROUGH TIME-FREQUENCY ANALYSIS
  • Networks of Adaptive Oscillators for Partial Tracking and Transcription of Music Recordings

這裡下載。

20090305

今天三人報的paper分別是:

showmin: Speech pitch determination based on Hilbert-Huang transform

cent: Enhancing the Tracking of Partials for the Sinusoidal Modeling of Polyphonic Sounds

冠廷: A TEXT RETRIEVAL APPROACH TO CONTENT-BASED AUDIO RETRIEVAL (下載)

2009年3月4日 星期三

師父與弟子

說來慚愧, 這兩年孩子們的到來, 我中斷了多年打坐與頌經的習慣, 幾天前在一次清晨, 家人都還在睡夢之中, 我上了香, 決定打一下坐, 下坐後, 念了三遍心經, 然後準備叫家人起床, 開始一天的活動. 這一天我覺得很好, 所以第二天決定繼續下去. 到了第三天, 也就是2/3.

2/3下午六點回到家聽到師父捨報的消息, 我沒有太多震驚與難過, 因為如師父說的, 他是每一天都準備要死的, 佛也說生命是在呼吸之間的. 對每一個人來說, 這一天總是會到來, 師父說過他發願下一世還要來這人間, 還要出家, 師父說過他會再來, 以師父的願力之大, 我知道師父是不會黃牛的, 所以我的心也是安的.

這一天, 我也如往常地忙完孩子的事, 陪孩子上床睡覺, 2/4清晨一樣打坐後叫家人起床. 一樣如往常到學校做事, 我的表面也如往常一樣平靜, 遇到同事一樣地寒暄, 不過我的胸口一直好似有什麼東西梗著, 下午接完德恩回家, 我打開電視, 電視裡播著跟師父有關的消息, 我一邊忙著準備晚餐, 陪家人吃完晚餐, 孩子的媽咪幫孩子洗澡時, 我得空坐下來, 一樣看著電視.

一直到電視裡出現師父為四川地震祈禱的那張照片, 這畫面一閃即逝, 但是我的淚水終於如潰堤一般流了下來.



1996年, 我的母親患了重病, 當時我許願不再吃肉與願意減壽一紀, 希望母親可以好起來, 母親在1997年初動手術後, 漸漸康復, 母親出院後, 我接她到新竹與我同住, 以便一邊照顧. 母親在新竹期間, 我們會一起看宗教節目, 那時的我, 其實對法鼓山是陌生的. 偶而看到師父, 覺得師父是一位親切與有學問的出家人, 看起來跟其他的法師有很大的差別, 他的樣子比較像做學問的人, 這一點跟我的職業相同, 後來知道師父在日本拿博士學位後, 我更尊敬師父了, 因為那個年代在日本拿博士非常不容易, 尤其是人文方面的.

母親在六月份康復回到彰化老家, 我則回到平常的教學研究的常軌. 有一天, 我看到華視的法鼓山的節目裡, 有一個出家生活體驗營活動, 時間是在七月底, 訊息一閃而逝, 但是我的記憶力一向不錯, 記下了電話號碼, 當時, 我在七月份有一個國際會議要出國報告, 回來剛好可以趕得上, 我心中好奇, 想想左右無事, 我又是單身一人, 於是打電話去報名, 沒想到卻額滿了. 我心中在想, 這是什麼樣的活動, 怎麼一下子就額滿了, 不過負責人還是要我留下電話號碼, 假如還有空額才通知我. 我也不以為意, 出國後就把這件事忘了. 回國的第二天, 我被通知剛好有人退出, 我就決定參加了.

因為當值的法師跟我說不必帶什麼東西, 報到當天, 我也就真的只帶兩套換洗衣物以及車資. 坐著由農禪寺準備的車子到了法鼓山. 老實說, 這也是我第一次到農禪寺.所以著實花了一番功夫才找到農禪寺.

在此之前, 我不但是跟師父與農禪寺沒有任何淵源, 連跟任何道場都沒淵源, 所以一般佛教信眾會的日常禮儀都不知道, 當然更不知道早晚課頌, 禪七, 佛七, .....等等之類的事務了, 等我到了法鼓山, 我發現除我之外, 參加的師兄們應該都是資深的悅眾菩薩. 現在回想起來, 我真是福緣深厚. 不過剛到法鼓山時我可不這麼想.

因為, 等到主持活動的法師宣布要在舊大殿旁(現在的居士寮)落髮, 我才發現情況有點不對, 因為跟我想像的救國團營隊不太一樣, 這是玩真的. 我一再猶豫要不要打道回府, 不過我的個性是一旦凡事起了頭就會做一陣子, 等了解狀況再做打算, 何況法師也說中途可以退出, 反正理光頭髮也不算是太嚴重的事.

我被分配到二班二號, 寮房是在大殿左側, 小小的一個位子, 跟我平常睡的比起來算小的, 真怕半夜踢到隔壁的師兄. 第一天晚上, 師父出來做了簡單的開示, 要我們安心, 把外面的一切忘掉, 師父的開示很風趣, 跟我在電視上看到的師父差不多, 不過很奇怪的是我的心中對師父起了一種莫名的親近心, 同時也伴雜著一點敬畏心, 對一向高傲的我, 這是不太常見的.

雖然我是連問訊都不知道是什麼的, 不過經過了前一天的演練以及臨時請教二班的班長一些日常應該注意的禮儀, 第二天的剃度典禮算是沒出糗, 這一天, 天氣非常熱, 加上攝影用的燈光, 讓我既熱, 眼睛又不舒服, 當時我在想, 典禮完我就該下山了, 反正知道是怎麼一回事了.

師父在典禮的開示說明了出家的功德一節讓我決定再待下來, 因為雖然母親開刀後狀況良好, 假如真是如師父所說, 那麼出家七天的功德我可以回向給母親, 哪真不錯呢! 所以我又決定留下來了.

就這樣, 每一天我都有一點理由想要打道回府, 不過因為師父的開示實在精彩讓我捨不得就這樣走人, 到後來, 我變得一點想走的意思也沒有了.

捨戒的前一天, 師父開示, 要我們從內觀自己的心, 對於一生的所造諸業,, 自內心慚愧與懺悔, 對於一個像我這種自小就心高氣傲, 課業一帆風順, 從來就不服人的人, 我第一次見是到內心的陰暗處, 師父的開示開啟我認識自己的門. 那一刻, 我痛哭失聲, 不能自己.

最後的一天, 我不想走了, 想留下來在師父身邊繼續學習, 但是該來的總是要來, 捨戒儀式進行時, 我再一次流淚, 這次是流下不捨的淚水. 師父勉勵我們, 在學佛的路上精進, 這一次雖然捨戒了, 以後因緣具足時還是會有機會再一次出家的. 師父說他發願要生生世世來這娑婆世界出家, 當天我也發願以後要跟著師父出家的.

經過了這一次的活動, 我知道了今生安身立命的方式, 對於多數學佛的人該了解的事情也略知一二, 也從這時開始, 我才開始研讀師父的著作, 第一與第二本書就是正信的佛教與學佛群疑, 這是果品法師賜給我的, 我也非常感念法師的恩惠, 也從這兩本書開始, 我漸漸了解佛法歷來被誤會的地方, 老實說, 我過去以為佛教就是我家裡一般跟道教或其他信仰那樣的宗教呢!

此後, 我只要周末有空, 就會前往農禪寺聽師父開示, 即使偶有師父不在寺裡的時候, 也常有其他法師代為開示. 此時, 師父在進行一系列關於楞嚴經的開示, 本來楞嚴經對我這剛開始學佛而國學基礎又很淺薄的人是太太難了, 但是當師父用說故事的方式, 風趣又詼諧, 讓一向對古文, 尤其是佛經這類語意艱深感到頭痛的我, 很快地抓住他的要點, 而師父講解七處徵心八還辨見的時候, 在開始我是覺得很好玩的, 而且非常合乎做研究的羅極與辯證法則, 可是回家後, 深思師父的開示以及細讀經文中這段文字後, 我起了恐怖心與慚愧心, 因為, 我自己常連自己在想什麼都不清楚, 無法掌握, 而我自己還在當人家的老師呢!! 這怎麼了得.

接下來, 我參加了農禪寺的初級禪訓班, 開始自己在家裡學著打坐, 並且開始讀金剛經, 我除了聽師父對於金剛經的開示之外, 也讀師父的老師道源法師的講錄.

這時, 果品法師要找一位幫忙錄音的義工, 我剛好對音響與錄音略知一二, 所以即使師父不在的時候, 我也會在農禪寺幫忙整理一些舊的錄音, 遇到師父開示的時候, 我則是負責當時的錄音以及事後剪接的工作. 這份差事對我而言是自出生以來三十多年, 能學到對我一生影響最大的事情.

那時師父的身體狀況還很好, 在多次的禪七與禪三, 師父每天都會有二到三次的開示,而且是親自來講, 不是透過錄音或錄影, 我經常就蹲在師父的後面進行錄音工作, 我從耳機裡, 從喇叭裡, 從近距離裡, 聽著師父的講話, 經常地歡喜讚嘆, 也慶幸自己的福報, 仿佛自己也一起在打七一樣, 當時 , 我除了整理的工作之外, 也會跟著一起打坐, 而晚上在大家就寢後, 如果白天還沒整理完錄音, 就還要做完才睡覺, 而一大早就要起床準備, 睡眠很少, 但是整天都精神奕奕的, 一點也不覺得累.

這樣的日子過了近一年, 不過我一直沒有真正跟師父當面講過話, 要說有的話, 就是那一天我剛好在農禪寺的樓上整理資料時, 因為感到有一點累, 所以出來透透氣, 又剛好師父走進來, 我本來要閃身讓師父可以過去, 師父親切突然地問我, 整理的工作累不累, 我還記得我當時用抖顫的聲音回說, 還好, 那時我的腳直發著抖呢!

師父給我的多是智慧上的啟發, 師父對義工們也一向很親切, 那為什麼我會不敢找師父直接問問題呢? 甚至跟他講話都會發抖呢? 這是有兩段故事的. 第一次是我自己參加禪三的時候, 師父在第二天上午的開示時發生的. 我還記得我當時坐在師父右手邊第二排. 這是我第一次正式參加禪修的活動, 雖說看過多次別人打禪七, 自己來還是不一樣. 那時的我因為學校的事情放不下, 因此打坐的時候, 可能包含其他非打坐的時候, 我都在想我自己研究上的一些問題. 人是坐在禪堂裡, 但是心還在外面. 而師父開示時, 我還是一邊聽開示, 一邊在想著研究, 老實說, 我真的忘了師父當時開示時講了什麼, 只知道師父突然頓了一下, 話鋒一轉, 把臉朝向我的位子, 口氣突然嚴厲起來, 說有人坐在這裡, 心裡還在想研究. 我當時嚇一跳, 心裡在想, 怎麼有可能? 然後師父又回到前面的話題, 而我的注意力又開始分散, 又回去想我的研究, 然後第二次師父又轉過頭來好像對著我說, 人就是心猿意馬, 師父還是怎麼都拉不回來, 這樣不能放下俗世的事, 怎麼禪修呢? 我當時嚇出一身冷汗, 再也不敢亂想了.

漸漸地, 我感到在農禪寺的日子讓我覺得很自在, 我開始嚮往出家的日子, 不過多數的原因跟當時我的處境有關. 那幾年裡, 我身邊有幾位認識的人相繼離世, 我的祖父與母親均罹患癌症開刀, 我的生活, 事業, ....等幾乎都不是太順利, 而在農禪寺裡, 我似乎找到一個一般人稱的安身立命的所在, 可以舒適安逸地過日子, 不必擔心多餘的雜事, 而聽法師說, 要是父母親人生病了, 還是依樣可以回去照料一切, 不是說一出了家就六親不認, 棄父母於不顧了, 我心裡最放不下的一部分的顧慮也沒了. 那時, 紐約農禪寺新建的象崗道場需要一位通英文, 且熟悉當地環境的法師, 而我在紐約念書多年, 英文不是頂好, 但是還應付得過去, 想到出了家後還可以回到我喜歡的都市過日子, 實在太美好了. 那時, 我的心裡在盤算著如何回家說服父母親關於我想要出家這件事.

正當我自我陶醉在自己對未來美好日子的幻想, 在一次的護七的錄音工作, 師父在前面開示, 講的是默照的方法, 而我因為已經聽過了兩三次, 所以又開始幻想以後在象崗的日子了, 突然師父又是話鋒一轉, 說起了修行與出家的功德, 並且說明出家是為了渡眾生, 而非求一己之安樂, 假如只是為求一己安樂來出家, 豈不是對不起佛與師父的教誨, 講到這裡, 當時師父的語氣其實是變得蠻嚴厲的, 而我也聽得出了一身的汗, 心中感到非常慚愧與懺悔, 虧得自己號稱讀了那麼多本經典, 講起經典裡的道理也頭頭是道, 打起坐來也可以一兩小時不下坐, 打坐時也可以做到似乎身體輕安甚至消失, 可是老實說心裡一點也沒有轉變, 還是大凡夫一個.

師父開示完後, 經過我的身邊, 好似有意地望著我, 當我的目光接觸到師父的眼神時, 我慚愧地低下頭來, 當師父離去時, 我跪在地上, 感謝師父的教誨. 那一次的禪七結束前, 師父照例開示要大家報佛恩, 報師恩與報眾生恩, 要能慚愧與懺悔, 要能努力修行, 有朝一日也可以渡眾生的, 而在家修行的人對於接引眾生有時會更方便, 要我們努力, 參加禪七的師兄師姐很多都掉下眼淚, 而我更是慚愧得無地自容, 哭得比誰都厲害.  因為這話正是說給我聽的.

自此, 我遇見師父時, 總是低頭繞路, 似示有意躲著師父, 因為我實在是怕師父一言或一語就洞穿了我的心思, 而我的心裡深處確實是如此不堪的啊! 可是我還是常常找機會在可以望見師父身影的地方靜靜地以無比敬仰的心仰望著師父.

自此, 我再也不敢自己大言不慚地說自己是師父的弟子, 也不再動不動就搬出佛經來教人要怎樣怎樣, 不再見人就以阿彌陀佛跟人打招呼, ..., 等, 甚至不輕易讓人覺得我是一個學佛之人, 平常跟朋友同事相處總是嘻嘻哈哈地, 因為吃素, 朋友總是會問我是否是因為宗教因素, 我總回答不是, 只有在人問我有皈依否, 皈依師父是誰時, 我才會回答, 因為自知自己的淺薄, 怕有辱師門, 對於出家一事是暫時不敢提了. 師父提到他生生世世都要出家來幫助眾生的, 我也同樣發願有一天我也是要跟著師父出家的.

跟師父最近距離接觸的一次是帶著一群十幾位中華大學的學生到農禪寺辦活動的一天晚上. 那時我是學校佛學社的老師, 這社團的人數不多, 活動也少, 我自願擔任指導老師, 其實是很惶恐的. 我用我初淺的知是教學生看一些經典, 也辦一些佛教文物與書的展覽, 也請過知名人士如陳履安先生蒞臨演講, 但是總覺得長此以往是不夠的, 所以帶著學生到農禪寺進行三天的參訪, 蒙果品法師慈悲, 安排了數位法師帶著學生打坐, 做功課, 講解行儀, ..., 等等, 當果品法師知道其實多數同學並未皈依時, 法師馬上答應請師父為同學們皈依, 那天晚上九點多, 師父走了下來, 在大殿為同學皈依並講解皈依的道理, 隨後親自為每一位帶上刻有觀世音菩薩的項鍊, 期許大家要盡心盡力, 利他利己. 當師父將項鍊掛在我的頸上, 師父的手接觸到我的頭頂時, 我的全身如觸電一般, 感動到眼淚又掉了下來. 師父真正是有如孔子一般的望之儼然, 即之也溫的長者.

1999年, 我與我的同修結婚, 2000年, 因為工作的關係遷徙台南, 由於路途較遠, 到農禪寺去的機會就少了, 2002年同修患病, 在治癒後需要長時間服藥與照顧, 2005年後, 我的女兒, 德恩與慈恩相繼出生, 日常我就透過師父的節目跟著孩子們一起看, 每次德恩在電視裡看到師父時都會說要聽師父講話. 而我也就只有在重大典禮時才會過去幫忙, 但是每當在人群中見到師父, 我的敬仰之心依然, 但是每次看到師父日益佝僂的身體, 我的心又是那麼的捨不得, 就這樣 胸口總是漲得滿滿地, 眼淚總是在眼睛裡打轉.

我的身體自小就不好, 每隔幾年就會生一場大病, 每次身體微恙, 我往往會停下手上做到一半的事情, 等身體恢復時, 又往往因為外在現實的因素, 沒能延續之前做到一半的事情, 我常在想, 師父的身體比我還差, 為什麼師父可以一路走來, 不屈不撓呢? 即使在身體狀況不好的時候呢? 我想這是因為師父的心的力量太強大了. 這讓我想起兩件事情. 第一件事是有一年, 師父去看牙齒, 牙醫師也是師父的弟子, 由於太過於戰戰兢兢, 反而不慎, 沒拿好鑽子, 把師父的嘴鑽破了一個大洞, 流了許多血, 可是師父那天原定要講開示的, 回到農禪寺, 師父還是照原訂計畫上堂, 講到一半, 師父痛得瞇起了眼睛, 拿出手巾, 將血吐到上面, 一邊笑著說, 他那是痛, 不是苦, 打坐時, 腳痛就注視著這痛, 一下就過去了, 但是心中不要有覺得這是苦, 要是覺得苦就不對了, 說的大家一邊笑,卻也一邊難過. 接著師父果然用接著的幾十分鐘的時間不間斷地把方法講完, 等師父下了座 , 那時學員們都還在拍手, 可是我在後方錄音的坐位上看到師父痛到摀著嘴, 彎下了腰, 那一幕只有我跟少數幾位法師看到. 我是又欽佩又心疼呀! 另一次是果品法師轉述的, 那是有一次, 師父帶團到大陸去, 遇到一個階梯級數很多的建築或是山, 那時大家還在想, 這麼高的階梯要爬上去, 一般年輕人都不容易了, 何況師父! 只見師父意態安詳地, 慢慢地一步一步往上走, 一邊走還可以一邊看周圍的景物, 隨行的人與法師卻一個個由跟在師父身邊而慢慢落後, 等師父臉不紅氣不喘地到了頂端, 很多隨行的人還停在半途休息呢! 能跟師父同時走到頂端的人也是氣喘吁吁的. 果品法師回憶說: 出國前師父還因為身體不適, 看了醫生, 那時大家還在想是否要取消出國的活動呢!

今年, 我打電話給林江標師兄拜年, 師兄說師父生病了, 今年過年沒有出來講話. 又說去年師父為了法鼓大學的成立與招生還在努力, 有一次師父病得重了, 都沒了呼吸了, 大家都不知道師父是入定去了還是捨報了, 那時果廣法師在師父耳邊輕輕說著, 師父, 您還不能走, 眾生還需要您啊! 聽說師父眼角滴下一滴慈悲的淚水, 張開眼睛, 說是要大家不必擔心. 去年我聽到師兄的轉述時, 心中既感恩又難過, 師父為了眾生真的是無比的辛苦呀!

2/15這天, 我一大早就跟著林江標師兄的車子到了法鼓山, 前一天還是大太陽的日子, 到了山上, 我試著用雙腳在法鼓山的每一條路上走著, 我想像著這些都會是師父走過的路, 我的辦公室裡放著師父站在七顆樹下的照片, 我也一個人在樹下靜靜地坐著. 我走到大殿裡, 看著我最親愛的師父平靜地坐著, 示現著人生的無常. 這一天一早就飄起雨來了, 但是身上只是微濕而已, 我近年身體不算好, 所以覺得有點冷. 看著大家忙著, 我的心中沒有悲傷, 我只是靜靜地看著, 想著, 當年第一次參加出家生活體驗營時, 我記得的師父所講的話, 以及那時師父清瘦的身影. 中午時分, 雨停了, 隨著典禮的開始, 我選擇不到大殿那邊去, 而回到居士寮那邊看著轉播, 這居士寮的外在跟十多年前我第一次來法鼓山的時候沒有大多變化, 彷彿歲月就停在1997年時一樣, 可是除了看電視節目之外, 我再也聽不到師父親自出來講話了, 但是師父講過的, 寫過的, 我以後會時時取出來溫習, 就好像師父從來也沒有離開過一樣, 而師父也確實從來沒有離開過我, 即使我沒有經常跟在師父跟前. 師父是來了又去了, 師父也是沒有來也沒有去的. 師父在大殿裡示現著無常的同時, 師父也無所不在地示現著, 如同佛在數千年前所宣講的: 常, 樂, 我, 淨.

我的耳裡一直沒有聽到電視裡的話語, 直到當方丈法師講話時, 心頭一震,  我知道是該跟師父說再見了, 我看著師父帶著眾人走到園區, 我的眼淚無法停下來, 雖然我知道這眼淚實在多餘, 可是我就是忍不住. 師父用最平凡的方式, 示範了一個人從出生到捨報, 可以是這麼的簡單, 簡單到無比輝煌的地步, 真是可以思議, 也真是不可思議.

從下午三時許, 天空又下起雨來, 不過奇特的是, 我身體不再感到寒冷, 我站在法華鐘旁, 聽著法師們, 一遍又一遍地敲著鐘, 好像師父在對我說話, 再次一遍又一遍地嵌進了我的心裡. 師父用這山, 這水, 這音聲, ...., 等等慈悲地對我說法.

我是個駑鈍的人, 到現在, 身上的壞習氣還是改不過來. 喜怒哀樂, 貪嗔癡, ..., 等等, 一樣也沒少過. 今天的我, 要是有一點點可取的地方, 那還是拜師父的殷殷教誨所賜. 十多年前, 師父在國父紀念館所講的四要: 需要, 想要, 能要, 該要, 讓我受用無窮, 師父說過, 需要的不多, 想要的太多, 需要的可以要, 想要的不重要, 一語道盡身為凡夫的我的問題, 到了今天, 我仍然是想要的太多, 可是每當想到師父的話, 我總是可以在陷溺更深的邊緣脫身. 師父說慈悲沒有敵人, 智慧不起煩惱, 我卻常常自以為是正義的使者, 動不動就指摘別人, 樹敵無數, 致生無窮煩惱. 師父講如何面對, 接受與處理事情時, 我總是因為嗔心與癡念太重, 往往無法把事情處理得圓融, 而事後又因為自己的執著而煩惱, 但是當想到師父說要放下時, 我總是以慚愧與懺悔的心, 提醒自己要注意自己的心念. 師父說的四感: 感恩、感謝、感化與感動, 讓我在從事教職工作時, 不斷提醒自己不要好為人師, 要感謝我的學生們給我成長的機會, 要從他們身上學習他們的優點, 提醒他們要開發自身的潛能, 而不要試圖感化學生, 要取法先聖先賢的師道, 處處為學生著想, 要努力於自己的專業研究, 要提醒自己堂堂正正, 誠誠懇懇地教學, 希望能夠感動學生, 希望學生日後可以把良善的種子傳給他們身邊的每一個人.  凡此種種, 受之於師父的恩惠與教導太多, 但是實踐的又太少, 我又是感恩, 又是慚愧, 只能在日後更加努力, 以報眾生恩, 以報佛恩, 以報師恩.

每當我失去勇氣與信心之際, 我總是會把師父的歸程再拿出來讀, 想到師父幼年時的困苦, 以一個國小學歷的人,  拿到當時非常困難才可以取得的博士學位, 這是必須經過一番艱辛的苦讀以及擁有超人的毅力才做的到了, 而拿到學位後, 原本可以找個教職, 輕鬆過日子, 師父選擇遠渡重洋, 在剛開始的期間過著窮到撿剩菜來吃的地步. 然後才開創了今天的法鼓山, 師父的老師說過: 道心之中有衣食, 衣食之中無道心, 師父的道心真如須彌山啊! 這幾年即使法鼓山已經極具規模了, 師父還是不辭辛勞地, 弘法利生, 直到捨報時, 仍然說"虛空有盡, 我願無窮", 還要再回來人間繼續他未完的工作, 師父真是這個年代的眾生的觀世音菩薩與地藏王菩薩.

之後的周末, 我照往常一樣在早晨收看師父的節目. 我的女兒們在一旁玩耍, 我跟女兒們講, 師父在說話喔! 你們過來聽, 三歲半的大女兒是認得師父的樣子的, 每次我指著電視上的師父時,  她都會說, 那是師父, 要聽師父講話. 一歲多的小女兒回答說: 那是阿公在講話, 我說: 對! 阿公在講話, 這個阿公是爸爸的師父喔! 她開心的說: 是師父嗎? 要聽師父講話喔! 我抱著他們, 眼裡一樣含著淚水說: 對呀! 你們長大以後要聽師父的話喔!

有來有去, 無來無去. 如來如去. 師父真的沒離開過.

註:

這一路上, 我還要感謝果品法師給親近師父的機會, 並且適時指點我, 也要感謝果東法師, 在師父不在時, 用極為輕鬆和藹的方式關照著我們, 並且為我的同修師姐皈依. 總之, 要感謝的法師與師兄姐太多, 餘不一一.

2009年3月1日 星期日

在 blog 貼程式碼使用 Syntaxhighlighter + PreCode

前言

在上一篇教學後,我們已經可以使用 Syntaxhighlighter 來幫我們排版、美化程式碼了,不過很快地我們就發現單靠 <pre> 去排版還是會遇到問題,當初我覺得可以靠 WLW plugin 解決,沒想到馬上就找到了一個不錯的與 Syntaxhighlighter 整合的 plugin ,不過可惜的是,目前它支援的語法是 Syntaxhighlighter 1.5 的,不過好在有一些間接的 solution 。

這個 plugin 叫做 PreCode ,有趣的是官網稱 PreCode 是 Code Snippet With Syntaxhighlighter Support for Windows Live Writer,而 PreCode 這名字只出現在 binary 中,啊,題外話。

安裝 PreCode

PreCode 的官方網站, 在這裡可以找到安裝檔,安裝很方便,安裝完後可以看到 WLW 視窗右方的工具列多出了一個 PreCode 的選項:ScreenHunter_02 Mar. 01 00.54

使用 PreCode

PreCode 的使用相當直覺,點下 PreCode 後,就會跳出一個對話方塊:

ScreenHunter_06 Mar. 01 00.58 對話方塊已經有 Content 區塊可以貼上程式碼,Format 則建議選擇 pre,Syntax Highlighting 的地方就根據需求設定吧!

跟 Syntaxhighlighter 2.0 共存

第一種方式是手動修改 HTML code ,如果把 PreCode 的產生的 HTML code 打開來看,你會看到:

<pre class="cpp" name="code">#include &lt;iostream&gt;
using namespace std;

int main()
{
cout &lt;&lt; "Hello World\n";
return 0;
}</pre>


pre tag 的 class 的地方使用的是舊的 Syntaxhighlighter 語法,所以手動改成 “brush: cpp” 是一種方式。



第二種方式是開啟 Syntaxhighlighter 的向下相容性,這個方法得修改 blog 的 template 檔,跟上一個教學一樣,只是得多加一行來啟動向下相容!



<script type="text/javascript">
SyntaxHighlighter.config.clipboardSwf = 'http://alexgorbatchev.com/pub/sh/2.0.287/scripts/clipboard.swf';
SyntaxHighlighter.all();
dp.SyntaxHighlighter.HighlightAll('code'); // Add this!!!
</script>


參考



在 blog 貼程式碼使用 Syntaxhighlighter

在 blog 貼程式碼使用 Syntaxhighlighter

前言

謠言都說 Web App 的時代來了,可是在 blog 上貼個好看的程式碼片段還是不太容易,以我自己的理解,一來是排版問題、 二來是語言有些符號和 HTML tag 相衝突,例如:C/C++ 的 < > 同時也用在 HTML tag 上,所以當我們寫下:

#include <iostream>

往往會導致 editor 把 iostream 當作HTML tag ,而導致發佈文章後,只看到:

#include

這是因為對於不認識的 tag ,解讀時是可以略過的,所以有些 editor 會在發佈時就清掉這些 tag。此外,為了美觀、可讀性,若是還能讓程式碼貼出後自動支援 syntax highlight 那就更好了!所以這邊就來介紹一個不錯顯示程式碼的好工具—— SyntaxHighlighter。

簡介

Syntaxhighlighter 是好心人 Alex Gorbatchev 利用 JavaScript 搭配 CSS、Flash 開發出來,使用上並不需要 blog host 在 server 端提供支援。不過需要另外的網路空間來存放 *.js, *.swf, *.css, *.png 檔,以前大家流行放在 Google Page 這個免費空間上,不過這個服務去年八月就被 Google 收了,看似能取代 Google Page 的 Google Site 並不讓使用者上傳 js 檔。不過 Alex Gorbatchev 大概是好人作到底吧,他還提供了免費 host 的服務,至於頻寬問題怎樣,我就沒有細究了!

Syntaxhighlighter 支援的語言很多,有十六種:

  1. Bash/shell
  2. C#
  3. C/C++
  4. CSS
  5. Delphi
  6. Diff
  7. Groovy
  8. JavaScript
  9. Java
  10. PHP
  11. Plain Test
  12. Python
  13. Ruby
  14. SQL
  15. VB
  16. XML

而且支援六種顏色模式,可以點這裡看到預覽:

  1. Default:白色為主。
  2. Django
  3. Emacs
  4. FadeToGrey
  5. Midnight
  6. RDark

另外,值得注意的是,沈寂了兩年,Syntaxhighlighter 才在今年二月初出了 2.0 版,不過與它相關的 plugin 似乎都還沒跟上腳步,所以想安裝 1.5 的人同樣可以參考這篇文章,方法是一樣的。

正文

  1. Syntaxhighlighter 可以在它 Google Code Syntaxhighlighter Project 或是 Alex Gorbatchev 的網站上找到。不過 2.0 目前只能在 Alex Gorbatchev 的網站下載到。(目前 2.0.287 是最新版)
  2. 下載完,解壓縮可以看到幾個檔案和資料夾:
    ScreenHunter_01 Feb. 28 23.44
    1. scripts 資料夾下放著支援的程式語言相關的 JavaScript code。另外有個 clipboard.swf ,是 flash 元件,用來顯示程式碼、支援列印、複製等友善功能。
    2. styles:css 檔。
    3. src:不會用到。
    4. test.html :Syntaxhighlighter  範例。
  3. 請找個網頁空間,上傳 Scripts、Styles裡頭的檔案。Scripts 裡頭的語言種類不一定要全放,選擇想要用的就可以了。找不到網路空間,可以去用 Syntaxhighlighter  作者自己提供的。
  4. 修改 blog 的 template ,這步驟會根據你的 blogger host 而異。以 blogger 為例,請先登入再去範本 -> 修改 HTML,將下列程式片段貼到 </body> </html> 前。為免意外,請先備份原始 template 的程式唷。
    01.<SCRIPT src="http://alexgorbatchev.com/pub/sh/2.0.287/scripts/shCore.js" type=text/javascript></SCRIPT>
    02.<SCRIPT src="http://alexgorbatchev.com/pub/sh/2.0.287/scripts/shLegacy.js" type=text/javascript></SCRIPT>
    03.<SCRIPT src="http://alexgorbatchev.com/pub/sh/2.0.287/scripts/shBrushBash.js" type=text/javascript></SCRIPT>
    04.<SCRIPT src="http://alexgorbatchev.com/pub/sh/2.0.287/scripts/shBrushCpp.js" type=text/javascript></SCRIPT>
    05.<SCRIPT src="http://alexgorbatchev.com/pub/sh/2.0.287/shBrushCSharp.js" type=text/javascript></SCRIPT>
    06.<SCRIPT src="http://alexgorbatchev.com/pub/sh/2.0.287/scripts/shBrushCss.js" type=text/javascript></SCRIPT>
    07.<SCRIPT src="http://alexgorbatchev.com/pub/sh/2.0.287/scripts/shBrushDelphi.js" type=text/javascript></SCRIPT>
    08.<SCRIPT src="http://alexgorbatchev.com/pub/sh/2.0.287/scripts/shBrushDiff.js" type=text/javascript></SCRIPT>
    09.<SCRIPT src="http://alexgorbatchev.com/pub/sh/2.0.287/scripts/shBrushGroovy.js" type=text/javascript></SCRIPT>
    10.<SCRIPT src="http://alexgorbatchev.com/pub/sh/2.0.287/scripts/shBrushJava.js" type=text/javascript></SCRIPT>
    11.<SCRIPT src="http://alexgorbatchev.com/pub/sh/2.0.287/scripts/shBrushJScript.js" type=text/javascript></SCRIPT>
    12.<SCRIPT src="http://alexgorbatchev.com/pub/sh/2.0.287/scripts/shBrushPhp.js" type=text/javascript></SCRIPT>
    13.<SCRIPT src="http://alexgorbatchev.com/pub/sh/2.0.287/scripts/shBrushPlain.js" type=text/javascript></SCRIPT>
    14.<SCRIPT src="http://alexgorbatchev.com/pub/sh/2.0.287/scripts/shBrushPython.js" type=text/javascript></SCRIPT>
    15.<SCRIPT src="http://alexgorbatchev.com/pub/sh/2.0.287/scripts/shBrushRuby.js" type=text/javascript></SCRIPT>
    16.<SCRIPT src="http://alexgorbatchev.com/pub/sh/2.0.287/scripts/shBrushScala.js" type=text/javascript></SCRIPT>
    17.<SCRIPT src="http://alexgorbatchev.com/pub/sh/2.0.287/scripts/shBrushSql.js" type=text/javascript></SCRIPT>
    18.<SCRIPT src="http://alexgorbatchev.com/pub/sh/2.0.287/scripts/shBrushVb.js" type=text/javascript></SCRIPT>
    19.<SCRIPT src="http://alexgorbatchev.com/pub/sh/2.0.287/scripts/shBrushXml.js" type=text/javascript></SCRIPT>
    20.<LINK href="http://alexgorbatchev.com/pub/sh/2.0.287/styles/shCore.css" type=text/css rel=stylesheet>
    21.<LINK href="http://alexgorbatchev.com/pub/sh/2.0.287/styles/shThemeDefault.css" type=text/css rel=stylesheet>
    22.<SCRIPT type=text/javascript>
    23.    SyntaxHighlighter.config.clipboardSwf = 'http://alexgorbatchev.com/pub/sh/2.0.287/scripts/clipboard.swf';
    24.    SyntaxHighlighter.all();
    25.</SCRIPT>
  5. 之後當你要貼上程式碼時,只要切換到 HTML 模式,然後用<pre></pre>框起程式碼的方式就可以了!
    <pre class="brush: your_language">
    你的程式碼
    </pre>



  6. 最後是一個跟 WLW 有關的提醒,當我們切換到 WLW 的模式時,我們輸入的 <, >, & 等符號都不會自動轉換為對應的 &lt;, &gt;, &amp ,因此對於像是 C/C++ 這類語言來說,使用 SyntaxHighlighter 還是無法完全解決貼程式碼的問題,我想這點就必須倚賴 plug-in 來幫忙了! 可參考在 blog 貼程式碼使用 Syntaxhighlighter + PreCode 這篇文章!



參考文章



在 blog 貼程式碼使用 Syntaxhighlighter + PreCode

2009年2月28日 星期六

用 WLW 寫 blog

耶,這是篇拖了很久很久的教學文章,記得去年我要畢業前,好像答應要教 Alvin 老師,結果一暫且就…不過還好有 showmin 學長幫忙!不過文章還是不能欠啊,出來跑的,總有一天要還!

簡介

WLW 的全名是 Windows Live Writer ,所以很明顯的就是微軟出的,大家都喜歡訐詨微軟,不過不得不承認這家公司的編輯器都還不錯用,尤其和很多 blog host 提供的 editor 相比,更是好上很多,有時候真的會忍不住罵一下那些預設的 editor 是垃圾…ㄜ…我們好像是同業…

那到底 WLW 有什麼好處呢?下面就讓我用自身經驗,來個工商服務時間吧!

  1. 離線編輯、熟悉的編輯功能:沒錯,不要再相信沒有事實根據的謠言了!即使拔到獅子的鬃毛,號稱 Web 2.0 的 editor 也不會比 standalong 的桌面應用程式好用(好吧,我不否認,我討厭一股腦的把應用都丟在 web 的行銷和廣告)
    基本上 WLW 很像 word 也很像 wordpad ,所以使用者可以很快速地上手,不會常常手滑,tab 按下去就回到上一頁了…
    當然,快速鍵的支援、drag-and-drop 的功能更是沒有少,這可是身為桌面程式的驕傲唷 ^.<
  2. 不雞婆排版的編輯器:這可是最讓我激賞的一樣功能,WLW 是個不雞婆排版的編輯器,這點對於貼程式碼是個很重要的能力,因為像是 blogger editor ,它總是會重新 layout 一下你的文章,然後你辛辛苦苦排好的文章就亂了!
  3. 貼圖方便:使用 WLW 貼圖會很方便,就像是在 Word 裡頭插圖一樣,WLW 會自動上傳到 blog host 提供的空間,比起許多 on line editor 需要先上傳等自訂連結來的方便,當然也可以用 drag-and-drop 囉。
  4. 統一的編輯器:free blog host 很多,在這些廠商中跳來跳去的人也不少,雙棲、三棲、以至於 N 棲的人也很多,但是你只要學一套編輯器的使用,基本上就可以討生活了,因為 WLW 允許你註冊多個 blog 帳號來使用。
  5. 豐富外掛:很多人推薦這項功能,不過我自己很少用,而且至今我還是沒看過好用的貼程式碼外掛,這時候就很想抱怨了!blog 對程式設計師真的很不友善,可是,它們卻是程式設計師寫出來的…
    為什麼無名相簿美女牆都有人做了,就是沒有人要作一個 programmer-friendly 的編輯器,好吧,因為大家都跟我一樣只會抱怨 –,-
  6. 強大的預覽功能:雖然還在開發階段,而且我自己很好使用,但是每次改版都可以感受到 WLW 預覽功能的進步!令我訝異的是,它竟然已經可以支援 embedded object 的執行,以下圖為例,當我們嵌入 youtube object ,WLW 已經允許你執行它了。這在前幾版是會有問題的,不愧是有 browser 技術的公司啊~

image

為了怕被抹紅,說我是微軟同路人,這邊也要講一些 WLW 的缺點:

  1. 表格功能不強:WLW 的表格幾乎說只能提供設定外框、拉出 NxM 的樣式,或許對一般人夠用了,不過當遇到工程師這種愛畫表格比較功能時,就有點麻煩了,因為像是合併欄位、調整大小等細部的控制,WLW 做的不是很好,所以我的習慣是會用 nvu 這類網頁編輯器去製作好表格,然後再開啟 WLW 的 HTML 模式來加上複製。
  2. 無法用滑鼠準確的調整圖片大小,你會發現當你放開滑鼠左鍵時,圖片還是會持續擴大一點,需要花點時間習慣,或是放棄直接調整圖片屬性。

下載

WLW 的官方網頁在:http://windowslivewriter.spaces.live.com/ 或是安裝惡名昭彰的 wlsetup 時,也會有選項可以讓你安裝。

ScreenHunter_01 Feb. 27 23.54 設定

  1. 安裝好後,第一次執行會跳出像是下圖的精靈,引導使用者設定他的 blog 進 WLW。微軟當然是力推 Windows Live Space ,不過不用擔心,主流的 Blog host 它也都是支援的,點選其他的部落格服務就可以了。
    ScreenHunter_02 Feb. 27 23.57
  2. 接著會請你輸入你 blog 的網址、帳號、密碼等,就老實輸入吧!ScreenHunter_03 Feb. 27 23.57
  3. 當你輸入正確的資訊後,WLW會開始分析你使用的 blog 、blog 的樣式,然後嘗試發一篇測試文章到 blog ,這篇測試文章會自動被刪除!ScreenHunter_04 Feb. 27 23.58
  4. 一切都成功後,就為你的設定檔取個名字吧,通常就是以 blog 名稱為預設名稱。ScreenHunter_06 Feb. 28 00.03
  5. 成功後,便可以進入 WLW ,可以到工具,看一下你剛輸入的帳號資訊,之後你輸入的所有帳號也可以在這邊查詢、設定。
    ScreenHunter_08 Feb. 28 00.15 
  6. 大家如果有些不錯的 plug-in 也不要忘了分享啊!
  7. 這邊附帶提一點,WLW 有個功能叫做類別,它相當於 blogger 裡頭的標籤,可以方便大家做文章分類。

    image

---------------------------------------------------------------

講這麼多了,來偷看一下 blogger 的編輯器吧!

image 唉,加油,好嗎?

2009年2月25日 星期三

進度報告 Tilera64 - 品皓

這禮拜是報告關於multicore的架構,所以學長幫忙找了Tilera的網站。
由於我目前還沒有其spec書可以細讀,所以只能就我目前google到的做報告。

Tilera64,MIMD system,由8X8個tile組成
每個tile都是一個能獨立執行application的元件,
由一個32 bit RISC的core,加上cache和non-blocking switch組成。
interconnection是由iMesh的on-chip network處理。

星期二討論到的問題
Q: non-blocking switch是哪部份non-blocking? non-blocking遇到封包過多怎麼辦?
Q: 既然是MIMD,那需要一個master processor做管理,在哪裡?

投影片

2009年2月24日 星期二

進度報告 - GStreamer - ㄚ凡

投影片連結

這次報告的是GStreamer這個多媒體框架

可是很遺憾 我找不到任何的架構圖可貼

所以貼一張GStreamer Editor好了


這張圖裡多少可以看出一些GStreamer的概念
最外層是一個pipeline對應一個data flow
裡面出現的thread...目前我還沒看到任何相關的說明
暫時把他當成Bin來看吧
每一個element(包括pipeline, thread, bin)的左下角都有一組NRPP
表示這個element的狀態,分別是Null, Ready, Paused, Playing
Null : 沒占據資源
Ready : 拿了資源可是沒開始讀資料, 指標還在0的位置
Paused : 跟Playing一樣,只是clock沒在跑
Playing : 讀取/處理資料流

可是更遺憾的是 這個GUI已經快5年沒有更新了
現在的core是0.10版 可是GUI還停在0.08版
因為版本不對所以不給我裝

目前釋出的版本只有linux跟OpenBSD 4.1版
至於windows...Unfortunately, we are unable to provide up-to-date Windows binaries of GStreamer, due to limited developer resources.
官方說他們的API支援多種語言,可是目前的支援...
languagestatus
PythonReleased. See the gst-python module.
PerlReleased as part of the gtk2-perl project.
.NETThe bindings are still under development and not yet released.
C++The bindings are still under development and not yet released.
GuileReleased under the aegis of the guile-gnome project.
JavaThe bindings are still under development and not yet released.
RubyThe Ruby bindings are released as part of Ruby-GNOME2.

--
這次講的部分主要是application的介紹
基本上就和SLIM差不多的概念
甚至簡單的MP3撥放可以利用他們的工具gst-launch command-line tool
$ gst-launch-0.10 filesrc location="test.mp3" ! decodebin ! Alsasink
這樣指定source, decoder, sink就可以撥放MP3
這三個element之間的連接和資料流的處理 都會自動完成

由於這句話...

GStreamer can bridge to other multimedia frameworks in order to reuse existing components (e.g. codecs) and use platform input/output mechanisms:

  • Linux/Unix: OpenMAX-IL (via gst-openmax)
  • Windows: DirectShow
  • MaxOS X: QuickTime

接下來要看看plugins是如何實作
以及gst-openmax是如何利用plugins的機制來橋接OpenMAX-IL

--
這次的問題(我記得的部份啦 有忽略的請再問我一次)

※pad的方向定義
以element之間的資料流動來看,資料從前一個element的src pad流到下一個element的sink pad,所以以一個element的內部而言,左邊是sink pad代表資料流入,右邊是src pad表示資料流出

※每個pipeline只對應一個thread?
基於這句話 Multi-threaded pipelines are trivial and transparent to construct 還有Manual的前半部只有提到每個pipeline會以一個新的thread來執行,我認為是的

一個pad可連多個pad?
關於pad的描述雖然沒有明確定義,但Manual中的一個Tee element的例子說到它的輸出(src pad)會因為需要複製一個資料流輸出,而增加一個pad(on request),相同的輸出都需要兩個src pad,所以我想GStreamer裡pad的連接應該是1對1的

以ogg decoder而言,解出的視訊與音訊是否能同步
現在想想,Manual中提到application與pipelines之間的溝通是非同步的,但音訊跟視訊在同一個pipeline中(同一thread中),是否能同步,我還要查查看

負責暫存資料的buffer是只有source element有在maintain嗎
Buffer can be allocated at any time during the execution, when ever needed.

假使有多個pipelines存在, 每一個是一個單獨的thread嗎?
這方面我也越來越有疑問了@@,我還要再找找看文件才敢回答...

--

090310

投影片

這禮拜我要報的是GStreamer怎麼跟OpenMAX IL結合
根據官網所提供的資料
目前OpenMAX IL層 只有一個open source的實作叫做Bellagio project
最新版提供18個components可用
GStreamer也針對它 提供一個gst-openmax的plugin來做結合
原理上是gst-openmax對Bellagio project提供的每一個component
做出一個對應的element 在這些elements裡用的是OpenMAX IL的API
利用呼叫OpenMAX IL API的方式來與OpenMAX IL溝通

官網提供的文件中提到GST跟OMX的比較
以及如何利用OpenMAX IL API來傳輸資料
但都是講概念 實作方面得自己去trace code
不過在Bellagio project官網上關於GStreamer plugins有一段話
The development of Gstreamer plugins that use OpenMAX components is maintained at GstOpenMAX on freedesktop
A set of old plugins developed in the context of Bellagio project can be found here
This part of the project has been discontinued, and no support will be given for it.

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