許久沒有寫技術方面的日誌了。這段時間本想出去好好的散心,過年在老家轉了一圈,去了一趟大足。本想去大足石刻看看,到佛灣走走,結果行程都在車上浪費了,到大足的時候,已經是下午4點多。本想回家的,第二天朋友還得去成都找他朋友,結果沒車了,只能就地找了一家酒店。一家郵政酒店,說是酒店,或許就是以前的辦公大樓改造的,一台電視,兩張床,其他的沒了……晚上在大足轉了一圈,或許是我們太不熟悉,沒找到什麼好玩的,也就回到酒店,聊聊天,睡了。晚上很冷,半夜凍醒了,起床加了一床毛毯。旁邊床的兄弟第二天早上起來的時候,直大噴嚏……一大早,回到家……走親戚,串門……沒有能見到幾個同學,見到的,有的已經帶著孩子打醬油了。家裡面聚餐的時候,都追問個人問題,哎!本想回家可以清淨一些,還是逃不過吧。或許這就是生活……瑣碎而繁雜。
幾個月沒什麼心情寫**,沒心情看技術方面的文章,看了不少其他的書,道家,儒家的書,看了一些,不過感覺自己還沒入門,只是先看看吧,心煩意亂的時候,可以讓自己安靜下來。或許在寫**的時候,怎麼規劃記憶體,怎麼布局,這些邏輯思維也可以從看的非技術書裡面來吧。修心比修腦更重要吧。心通了,心靜了,腦子或許才能清醒吧。熬了幾個星期的通宵,5點多總算把**趕完了。一篇大數處理的文章,gpu單執行緒比cpu快樂幾十倍,當然,這個需要大量資料的時候,要是資料小了,gpu一點不佔優勢。
有的時候寫**或許就跟生活差不多,開始設計演算法,解決問題的時候,總是覺得千絲萬縷,瑣碎而繁雜,不知道從**入手,不知道從哪個地方找到適合自己生活的方式。知道gpu上面優化的東西就這麼多,知道遇到的問題有一些什麼特點,但是就是不知道從那一部分直接入手最容易,最能直接到核心問題。找到乙個邏輯,很難。生活中找到真正適合自己的,也很難。想不明白的時候,或許選擇逃避,或許選擇嘗試,不停地嘗試吧。乙個kernel函式從最開始的驗證版本,到最後的相對自己認為的最優的版本,可能中間過程經歷了10次的修改。過一段時間還會發現有新的想法,新的思路可以嘗試。當我找不到規律的時候,就一條一條路的走一下,或許我知道沒有別人聰明,也不是像別人那麼運氣好,也沒有偷懶的資本。那就先用廣度優先,找出所有的解決辦法吧,或許有一天找到一些規律的時候,再來簡化自己的步驟,再來嘗試退火演算法的方式找最優解,或許採用a*演算法的思路來找最優解。或許吧,人生的經歷或許也差不多吧,不清楚地時候,不明白的時候,現在按照已有的方式走下來吧。要是能有高人指點一下,那就最好了,要是麼有,那還是都嘗試一下吧。當然,要是想糊糊塗塗的過一輩子,那也就糊糊塗塗的解決就行了。記得理工大學南門有乙個酒吧,叫做七又二分之一,當時不知道為什麼叫這個名字,就問朋友。他說,在佛語裡面有偷得浮生半日閒。或許7天紛繁複雜的生活之後,給自己半天的時間,思考和總結吧。或許演算法優化的過程也不過如此吧。嘗試了很多種途徑之後,就是總結和歸納,找到一些相似的地方,找到一些不會發現的情況,找到一些通往最終目標的捷徑。生活需要積累,學習,也需要積累吧。
閒下來,道家,儒家的書也看不進去的時候,就打打星際2.星際我最愛玩蟲族,不為別的,就為可以瘋狂的造小狗,一窩蜂的小狗過去,一輪一輪的24只小狗過去,我看現在還沒那個ai能扛得住的。或許這個也像現在的gpu跟cpu吧。每乙個小狗就是gpu裡面的乙個計算核心,每乙個人族或者神族的尖銳部隊,就像cpu裡面的核心,確實人族的坦克很厲害,小狗可以掛一片,但是一群幾十隻小狗圍著的時候,坦克掛得相當的快。gpu就佔著人多吧。但是要是小狗序列的過去靠近坦克,小狗只有來乙個掛乙個了。所以,要並行的效果,才能搞定坦克,,o(╯□╰)o,囧……一窩蜂的圍攻才行,所以在考慮gpu演算法的時候,或者並行演算法的時候,一定要考慮,你的演算法是並行的,最大並行化的,什麼叫最大並行化。大家都做差不多的事情,做事情的時候,干擾很小,或者各自之間都沒干擾,然後大家都可以同時圍繞著坦克,同時攻擊坦克四周,就好比gpu裡面取記憶體的時候,16執行緒,half-warp一起訪問記憶體,就可以合併訪問一樣,一群小狗都同時能靠近坦克,同時攻擊的時候,打起來超帥。。。一會就磕掉乙個。。
但是要是人族的坦克也成對了,提公升了坦克的裝甲,提公升了坦克的攻擊能力,每個坦克+上都是3防,3攻,只要門口附近擺上4門坦克,那一群隨即的小狗跑過去,還不行的,也只會掛在門口。這就好比要是在cpu裡面優化的時候,用sse優化,提高攻擊力+3。再開啟多執行緒,就好比在門口加上幾門坦克。這些功能都是需要慢慢除錯出來的。就像我們寫cpu優化的**的時候,sse的**接近彙編,除錯起來很麻煩,相對而言,gpu造小狗就來得快,只要大家排好隊,路線設定好了,幾個人分撥的圍繞著指定的坦克,打下來,那就是數量問題了。但是cpu要是加防,加攻,只是打下來就比較麻煩一點。
現在的很多gpu程式一上來就說提公升了幾百倍的,這個得看看是否開啟了cpu的sse或者多執行緒了沒。當然開啟cpu的sse和多執行緒,也需要花很多功夫的,這些功夫,比除錯優化gpu的**更難。時間可能更長一些。但是開啟了,可能gpu只能提公升到10倍到幾十倍的能力。
gpu現在比cpu有的幾個優勢是,
當然要是cpu能改變其中的某一兩項,或許gpu也就難了。
例如intel的tbb多執行緒庫,比openmp靈活好用,這一類的執行緒庫出來了再加上intel將來出來的多核心,勢必給gpu造成很大的壓力。還有他們很接近tbb的ct的開發語言,從這個層面上,開發語言,或者環境,gpu可能趕不上的。軟體強也沒有,現在硬體沒出來。
當然還有amd的晶元,apu一類的晶元出來,也會造成一些混亂的局面。
不過都說到這裡,我們可以看看這三家比較好玩的現象:
1.intel的軟體我們有目共睹的,tbb,ipp,mkl這樣的庫都是頂呱呱的,當然還有intel的cpu,還有他的編譯器,優化工具都是很牛掰的,但是他的gpu出不來,也就是有軟體沒硬體,麻煩;
2.amd,(ati)他的硬體其實也挺牛的,fire系列的顯示卡出來老早了,但是他的軟體一直跟不上,一直超級麻煩,困難戶;也麻煩;
3.反過來看nvidia,他的fermi現在都還沒出來,靠著gt200的架構還在撐著,但是他的驅動也做得挺到位,phiyx這樣的軟體也挺到位;在市場上彷彿看到nvidia在gpu方面的聲音比上面的兩家都好。但是可以看看,gpu硬體,fermi才能跟ati的58xx系列比的,也就是gf100才能跟ati700,或者ati800系列比的。但是現在市面上看不到。還是gt200的身影。軟體方面,nv肯定沒法跟intel比。
從這幾個方面我們發現乙個現象,不管是做硬體還是做軟體,單獨某一項強都不行的,只有total solution才是王道。
做硬體的廠商都需要做軟體的,做軟體的廠商都想緊跟最新的硬體,當然也是在最新的硬體真正有實力的時候。這些,或許就是跟技術本身無關了,或許這也是生活吧。
七天的紛繁忙碌的生活,給自己半天的喘息。都說自己累,到底問問自己為什麼累啦?付出就一定要有回報嗎?或許是在用愛的名義在索取吧。經歷一次感情,或許會清醒很多,明白很多,不管是經歷什麼,都要給自己去思考,去想想,內心的強大,才是真正的強大,內心的成長才是真正的成長吧。甚至有時候想想,是否找連續的一段時間,去寺廟精修一段時間。反過來又問問自己,人生何處不是思考和靜思啦?需要的只是乙個過程,而不是立刻的響應。或許是因為自己性格更偏向於溫和吧。不習慣與激烈的針鋒相對,或許那麼鮮明。中庸和諧之道,哈哈……觀點沒那麼鮮明,只是為了思考,為了一段感情過後的沉澱,第一次花了三年時間,這次,不知道需要多久。不過能坦然了……或許就真正釋懷了。淡然了嗎?我已經在思考這個問題了。從每天星際打累了以後,看書以後,讀文章以後,趕**以後,發現,只有睡覺是最好的時候,其他的任何事情,任何情感,其實都無關痛癢。讓自己累一點,讓自己忙一點。有空的時候想想更多美好的事情,或許找個時間再出去走走吧。。。。。復活節,或許可以出去走走。。。。
CPU 和 GPU頻率設定
在嵌入式裝置中為了降低功耗防止晶元發熱,廠商一般預設都將cpu和gpu頻率為最小,為了提高效能,減少演算法耗時需要手動將cpu或者gpu頻率設到效能模式。echo performance sys devices system cpu cpu0 cpufreq scaling governor,一般c...
CPU和GPU的區別
cpu 即 處理器,解釋計算機指令以及處理計算機軟體中的資料 gpu即圖形處理器,專門處理和繪製圖形相關的硬體。gpu時專為執行複雜的數學和 集合計算而設計的,有了它,cpu就從圖形處理的任務中解放出來,可以執行其他更多的 系統任務。硬體加速 在計算機中把計算量非常大的工作非陪給專門的硬體處理,減輕...
CPU和GPU的區別
個人認為cpu和gpu各有自己的適應領域。cpu central processing unit 計算核心較少,通常是雙核 四核 八核,但是擁有大量的共享快取 亂序執行等優化,可以做邏輯非常複雜的計算任務。這一點就當前的gpu來說,仍然難以做到。會犧牲大量的效能 造成大量的能耗開銷,而且增加了程式設...