Re: [問題] 有關C語言與雲端運算

看板C_and_CPP (C/C++)作者 (Cary)時間14年前 (2012/01/31 15:00), 編輯推噓6(6025)
留言31則, 5人參與, 最新討論串2/2 (看更多)
: → bernachom:HADOOP可以用C嗎@@a? 01/31 00:41 我主要說的是實作部份 Hadoop可以用Stream串接其他語言 也能用Pipe當作C++的接口 : → james732:話說「雲端產業」這四個字實在包山包海,虛擬化技術也算 01/31 00:47 的確,現在的IaaS/PaaS主要也都是在講虛擬化的部份 像AWS就是利用Xen(沒記錯的話)的技術作為底層的VM 不過如何彈性的調動VM、資源排程、開關機器這就是機密了 還有一個重點是計價模式(Pay as you use) : → bernachom:不然我覺得...雲端==遠端.... 01/31 01:12 至於這個問題可以去Cloud版看翟本喬的說法 或是我在下面推的Berkeley白皮書 基本上雲端不是技術,感覺更像是種願景 跟ubiquitous computing比較像,而不是ajax 不論是Virtualization還是Hadoop式的Distributed System 都算是雲端的一種趨近方式 : → james732:至少產品真的會比較好賣XDDD 不過最近這個詞好像比較冷了 01/31 01:22 : → james732:先前一直喊的雲端OS似乎沒啥下文…最近都沒聽到了 01/31 01:22 SaaS的產品我不清楚 因為我也覺得分不出跟傳統網頁應用有啥差別XD 不過像NoSQL Database、Hadoop、OpenStack這些底層技術一直都在發展 讓我們更便利的存取及管理資源,更接近cloud的遠景 而AWS、私有雲的建設等商業模式也都慢慢步上軌道了 : 推 shemale:hadoop是個過渡期的產物 01/31 03:58 : → shemale:真正的雲端運算,是你不用懂得mapreduce而它已經幫你做完 01/31 03:59 : → shemale:hadoop用java寫時要extends (還是implement)map reduce 01/31 04:00 : → shemale:這只是一個分散運算的方法,還不能稱得上雲端 01/31 04:01 : → shemale:我心目中的雲端只有兩個字:無感 01/31 04:02 : → shemale:你不知道資料在哪裡,也不知道幾台電腦幫你運算 01/31 04:02 : → shemale:它就是幫你做完了,中間過程什麼的我們不用知道,才叫雲端 01/31 04:04 : → shemale:我舉個例子好了,比如說,我開一個1T的檔案strstr找東西 01/31 04:18 : → shemale:我以為只有這台機器在做,其實,這動作被分散到許多台機器 01/31 04:19 : → shemale:你沒有寫什麼MapReduce只是照C的入門書寫的單純用strstr() 01/31 04:20 : → shemale:你只是open一個你以為是local的檔案然後read然後strstr 01/31 04:21 : → shemale:但這檔案其實是分散在不同機器而strstr也在不同機器同時跑 01/31 04:22 : → shemale:這樣才叫雲端,一切都在雲裡,你不用知道它在哪裡怎麼做的 01/31 04:23 其實我同意你的說法。 不論是Virtualization還是Hadoop都還是在發展當中的技術。 但就像是Parallel computing,至少現在沒有能完美自動平行化的compiler, 我們還是需要去寫OpenMP或CUDA,分散系統下也需要MPI或MR。 不過感覺現在的趨勢是底層以Hadoop為基礎做出各種系統(Hive、HBase), 讓上層寫服務的人無感使用這些系統完成任務。 當然我們最終的希望是資源存取看似無限,使用方式也非常簡便。 不過目前來說,這種cloud還雲深不知處XD -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.249.152.178 ※ 編輯: hilorrk 來自: 111.249.152.178 (01/31 15:04)

01/31 15:07, , 1F
推,不過這個討論離C++越來越遠了,板主手下留情啊...XD
01/31 15:07, 1F

01/31 16:14, , 2F
XD 蠻有趣的 第一篇只是簡單四五行 就釣出一堆高手!
01/31 16:14, 2F

01/31 16:37, , 3F
(至少學術界)有那種完美compiler,只是你要改用其他語言...
01/31 16:37, 3F

01/31 16:39, , 4F
可惜的是我覺得學術界自從某年代後對於主流語言就沒有什麼
01/31 16:39, 4F

01/31 16:40, , 5F
推推!! 另想請教 F 大,學術界那種完美的compiler是哪種
01/31 16:40, 5F

01/31 16:40, , 6F
影響力了 xDDD(我是指研究程式語言理論的部份)
01/31 16:40, 6F

01/31 16:53, , 7F
tropical72:之前聽到的 www.cs.cmu.edu/~scandal/nesl.htm
01/31 16:53, 7F

01/31 16:53, , 8F
不過我不知道他的實作多有效率...
01/31 16:53, 8F
感謝Favonia提供的資訊 我沒有深入去研究NESL的機制 其實的確有很多研究和工具正在進行 像MS的PPL、Intel的TBB感覺也是在做類似的事 差別在於這兩個都算是C++的extension,而NESL是創新的語言 不過我指的Compiler並不是這種 其實這些Parallel Programming的工具和傳統OpenMP、MPI差不多 都是將演算法做在基於某些特定的model上 而非像shemale說的完全「無感」移殖原有程式 一方面不同的Parallelism model差很多(Data-independent、Task-based) 一方面硬體的不同也會造成平行化策略的不同(CUDA、OpenMP、 MPI) 很難用程式去分析一個普通的應用該用什麼方式吧 我也不是這方面的專家,不過大概就是這個感覺XD

01/31 16:58, , 9F
好酷,謝謝 Favonia.
01/31 16:58, 9F
※ 編輯: hilorrk 來自: 111.249.152.178 (01/31 20:07)

01/31 21:20, , 10F
(1) 「原有程式」如果用C/C++寫本來就不容易,因為C/C++有
01/31 21:20, 10F

01/31 21:22, , 11F
很多地方相當複雜;如果你用學術上稍微乾淨漂亮一點的語言
01/31 21:22, 11F

01/31 21:30, , 12F
來寫「原有程式」,就可以接近你希望的「幾乎不用改」。
01/31 21:30, 12F

01/31 21:31, , 13F
(我覺得目前比較像是暗示編譯器哪裡平行話比較有效率..)
01/31 21:31, 13F

01/31 21:32, , 14F
^^化
01/31 21:32, 14F

01/31 21:35, , 15F
(2) 平行(parallel)指的是邏輯上獨立,並行(concurrent
01/31 21:35, 15F

01/31 21:35, , 16F
雖然我是用C來舉例,但我覺得數學方面像matlab比較適合
01/31 21:35, 16F

01/31 21:36, , 17F
)指的是同時間一起跑,其實有點差別。像 MPI 是並行,但
01/31 21:36, 17F

01/31 21:37, , 18F
C還是用在比較低階的地方比較好
01/31 21:37, 18F

01/31 21:38, , 19F
NESL 是平行。你可以用並行的工具讓平行的程式更快跑完。
01/31 21:38, 19F

01/31 21:39, , 20F
(3) 那些比較學術的語言(如 NESL)可以讓程式設計師永遠
01/31 21:39, 20F

01/31 21:40, , 21F
寫不出錯誤的平行程式(實際上邏輯不獨立卻被當成獨立),
01/31 21:40, 21F

01/31 21:41, , 22F
這是很多主流語言再怎麼加上新函式庫也保證不了的事情...
01/31 21:41, 22F

01/31 21:43, , 23F
勘誤:上面「哪裡平行化比較有效率」應為「並行」才對...
01/31 21:43, 23F

01/31 21:43, , 24F
F大,great!!
01/31 21:43, 24F

01/31 21:45, , 25F
(4) 反正目前偏理論的學術對於主流語言沒啥影響力,所以我
01/31 21:45, 25F

01/31 21:46, , 26F
這邊講的都是看得到用不了的東西 xD 除非你待在奇怪的公司
01/31 21:46, 26F

01/31 21:48, , 27F
堅持用奇怪的語言來寫軟體...
01/31 21:48, 27F
感謝Favonia的指教,讓我清楚了許多! 第一點這個我也瞭解 intel的compiler對intel cpu有類似基礎的功能 之前有聽講者說CUDA也有在研究相關的議題 不過關於第三點有些好奇 像NESL也是有自己的parallelism model 而一般的「並行」程式工具也都有自己的parallelism model 演算法需要映至這種model才能達成平行化的目標 在對映的過程中NESL應該也無法避免在原有演算法中 邏輯不獨立卻被當成獨立這種使用者的錯誤吧? 重新設計語言是能使parallelism model和程式核心結合 語意及程式邏輯會比較清楚且更容易除錯 其實我還是不太瞭解您的意思,可否舉個例子? ※ 編輯: hilorrk 來自: 111.249.152.178 (01/31 22:51)

01/31 23:00, , 28F
我不太清楚你的意思@@我自己只有證明過NESL的一小部份只要
01/31 23:00, 28F

01/31 23:01, , 29F
順利通過編譯器檢查,執行時不可能出現出現race condition
01/31 23:01, 29F

01/31 23:02, , 30F
之類的東西;完整的NESL我相信也有同樣的性質...
01/31 23:02, 30F

01/31 23:04, , 31F
簡單來說就是編譯器可以保證程式會安全的執行完。
01/31 23:04, 31F
拍謝,是我自己想的太複雜了,連基礎的事都忘記XD 一講到race condition就瞭解你說的沒錯, 這的確需要從語言核心、系統架構和compiler來完成 不過像MapReduce這種Model也能避免同樣的問題 只是限制太大了就是... ※ 編輯: hilorrk 來自: 111.249.152.178 (01/31 23:17)
文章代碼(AID): #1F9v6VHQ (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1F9v6VHQ (C_and_CPP)