Re: [問題] 非常物件的C++程式碼要用CUDA加速....!?

看板C_and_CPP作者 (眠月)時間14年前 (2011/04/24 02:58), 編輯推噓3(3019)
留言22則, 3人參與, 最新討論串2/6 (看更多)
※ 引述《tedd15550325 (天行者)》之銘言: : 3. 我想知道C++用CUDA到底可不可行?能不能加速? : 希望能有非常權威的評論或著有論文研究指出 : 不然只拿個ptt鄉民的答案似乎很難說服教授......┌┬囧" 你如果已經會 CUDA 的話, 應該會知道你要的程式能不能用 CUDA 加速吧? 通常,一隻程式沒辦法直接套用到 CUDA 上面就突然變快, 因為平行的演算法跟傳統的循序的演算法不太一樣, 即使是解同一個問題,平行的演算法通常是另外設計的。 就算解決問題的觀念相同,實作也會差很多。 老實說你不該想要拿現成的的程式碼來改, 一來是你手上那份程式碼,你能看懂的部分不到一半, 二來是演算法思維邏輯不一樣,你看懂也不一定很改成你要的。 你應該要從你的問題出發,想一個平行的解法, 設計你的演算法,然後自己實作。 能不能加速,跟 C++ 不 C++ 沒關係, 一個問題能不能平行加速通常跟問題的本質有關。 有的問題本質上是一定要經過循序運算才能得出結果的, 這種問題就無論如何無法平行運算。 你的問題應該可以平行加速, 如果你需要一些 paper 佐證, 我剛剛查了一下,沒人直接作過用 CUDA 算這個, 你可以到這邊搜索一下 "shortest" 可以找到人家作過的類似題目, http://www.nvidia.com/object/cuda_apps_flash_new.html# 速度可以比傳統演算法的快上兩個數量級。 裡面不乏 Lecture Notes in Computer Science 的論文, 比起 PTT 阿宅我的文字權威度高出九千多倍左右。 你去裡面隨便找兩篇來念, 念完之後跟老師簡報跟討論, 看看老師有沒有機會讓你做這個題目囉~ CUDA 不用太深的學術底子,效果又明顯,應該蠻有機會的啦~ -- To iterate is human, to recurse, divine. 遞迴只應天上有, 凡人該當用迴圈.   L. Peter Deutsch -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.160.109.243 ※ 編輯: yoco315 來自: 118.160.109.243 (04/24 02:58)

04/24 04:21, , 1F
嗯,能不能加速我懂,我想我可能用詞不好,應該要說
04/24 04:21, 1F

04/24 04:21, , 2F
是容不容易加速?因為CUDA並沒有支援C++所有的部分,
04/24 04:21, 2F

04/24 04:22, , 3F
我在想會不會有可能因此只要牽涉到沒有支援到的部分
04/24 04:22, 3F

04/24 04:22, , 4F
的程式,是否就幾乎沒有加速或著根本無法撰寫CUDA?
04/24 04:22, 4F

04/24 04:34, , 5F
另外,程式碼要是我自己能寫得出來也不會拿google了.
04/24 04:34, 5F

04/24 09:57, , 6F
你是不是以為改程式碼比寫程式碼簡單?
04/24 09:57, 6F

04/24 12:05, , 7F
你要重寫,而且要重寫的原因與C++無關
04/24 12:05, 7F

04/24 12:07, , 8F
有時候覺得CUDA這種based on C/C++的架構害慘了人
04/24 12:07, 8F

04/24 12:07, , 9F
讓人以為自己的C/C++只要小幅修改就能獲得十倍的效率
04/24 12:07, 9F

04/24 14:31, , 10F
我剛接觸cuda不久,可能問題有點蠢,不過真的是被逼
04/24 14:31, 10F

04/24 14:31, , 11F
急了,因為專題投稿日期只剩半個月了,我只是想知道
04/24 14:31, 11F

04/24 14:31, , 12F
自己有沒有走錯路,我當然也知道改程式碼非常困難,
04/24 14:31, 12F

04/24 14:31, , 13F
更何況我手上的code有三千多行...總之,謝謝大家的
04/24 14:31, 13F

04/24 14:31, , 14F
指教,我會繼續努力!!
04/24 14:31, 14F

04/24 14:32, , 15F
話說都沒有一個人回答我第一個問題ㄒ_ㄒ?
04/24 14:32, 15F

04/24 16:41, , 16F
因為第一個問題太簡單,你會問代表你連基礎C++都不會 @@
04/24 16:41, 16F

04/24 16:42, , 17F
良心建議你放棄這個題目,挑一些不需要coding的題目.
04/24 16:42, 17F

04/24 16:42, , 18F
因為CUDA是coding吃重的東西,但是你的coding能力明顯不足
04/24 16:42, 18F

04/24 16:55, , 19F
在java裡面是用get method和set method來讓private
04/24 16:55, 19F

04/24 16:56, , 20F
member與外界溝通,我想C++大概也類似吧?不過這個辦
04/24 16:56, 20F

04/24 16:56, , 21F
法似乎不太切實際,因為變數實在太多了,這是我目前
04/24 16:56, 21F

04/24 16:56, , 22F
唯一想到的辦法,不知yoco大大能否替我指點迷津?感謝
04/24 16:56, 22F
文章代碼(AID): #1Dio4wN9 (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1Dio4wN9 (C_and_CPP)