锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
]]>
]]>
]]>
鍏崄騫翠唬鍙婁互鍓嶄漢
鍋忔縺鐨勫艦瀹硅瘝錛氳牏璐?/strong>
鍘熷洜錛氬ぇ閮ㄥ垎鐢熶笉閫㈡椂錛岃兘澶熸帴鍙楀埌鏁欒偛鐨勯兘鏄粖澶╃殑涓笂灞傞樁綰с傛暀鑲蹭笅涓浠g殑鏃跺欏厖婊′簡瀵歸偅涓椂浠g殑鍙堢埍鍙堟仺錛岃濡傗滄瘺涓誨腑鍦ㄧ殑鏃跺欌濓紝鈥滄兂褰撳勾鎴戜滑鎻掗槦鍟娾濄?br />
涓冨崄騫翠唬鏅氭湡鍑虹敓鐨勪漢
鍋忔縺鐨勫艦瀹硅瘝錛氬悵鍟
鍘熷洜錛氬樊涓嶅閮芥槸絎竴浠g嫭鐢熷瓙濂籌紝鐢熶簬璁″垝緇忔祹鏃朵唬錛岀湡姝e艦鎴愭濇兂鐨勫嵈鏄湪甯傚満緇忔祹鍒氬嚭鐜扮殑鏃跺欍傞偅涓椂浠f墍渚濋潬鐨勬槸鎺犲ず鍜屽己鍗狅紝鍏崇郴鍜屾潈鍔匡紝鍒板浠婂鍒漢錛岀敋鑷沖瀹跺涵鍚濆暚涔熶笉瓚充負濂囥?br />
鍏崄騫翠唬涓湡宸﹀彸鐨勪漢
鍋忔縺鐨勫艦瀹硅瘝錛氬簾鐗?/strong>
鍘熷洜錛氭垜浠縐頒負鍨帀鐨勪竴浠o紝宸笉澶氭槸浜轟滑鍗拌薄涓瘮杈冨樊鐨勪竴浠d簡銆傛垜浠腑鐨勫ぇ閮ㄥ垎姝e湪閫愭笎鍦版帴瑙︿笂涓浠d漢錛屼篃鏄嫢鏈夋渶澶氫翰鎴氱殑鏈鍚庝竴浠d漢浜嗐傛垚闀夸簬鑷敱鎬濇兂鍒氬垰钀岃娊鐨勯樁孌碉紝鍙儨澶ч儴鍒嗗凡緇忚璇錛屾案榪滄棤娉曟憜鑴便傜ぞ浼氭牸灞姝f槸鏈鐤媯宸ㄥ彉鐨勬椂鍊欍?br />
涔濆崄騫翠唬鐨勪漢
鍋忔縺鐨勫艦瀹硅瘝錛氭伓欖?/strong>
鍘熷洜錛氭棤鍙晳鑽紝娌℃湁甯屾湜銆傚悰涓嶈灝忓鍐呮帍鎵嬫満 mp3鐨勫浜嗗幓錛屾洿鏄攢姣旇濺鎴匡紝姣旀垚騫翠漢榪樿鑰侀亾寰楀銆傚彟涓涓潰錛屽闀垮瀛╁瓙楂樼瓑鏁欒偛鐨勬ⅵ榪樿繙娌℃湁璁よ瘑娓呮 鈥斺?璋佸彨浠栦滑鏄竷鍗佸勾浠g殑浜哄憿錛熺綉鍚ч噷錛岃開鍘呴噷錛岄厭鍚ч噷錛岃韓褰辯粷瀵逛笉灝戙傚彲鏄?鈥︹?榪欓噷鏄腑鍥斤紝涓嶆槸鍖楁銆?br />
聽聽聽 As we have seen, techniques about distributed communication such as CORBA, DCOM, even JAVA have been used widely at some corners on the earth. All of these could implement purposes such as RPC, distributed computing, and some others applications for business and science.
聽聽聽聽 Let鈥檚 have a look at development of hardware on platform of PC. CPU is becoming much faster, and much cheaper than any time before. At the same time, GPU, or more generally, is the card we call Display Adapter. Since 1999, NVIDIA released the new generation graphic card series named Geforce, challenge the performance until now, next year we can buy DX10 cards on the markets. Graphic card could do vertex transform and lighting instead of CPU. It鈥檚 a great progress on both CPU and GPU. How to use these rich SIMD resources? We can easily understand why we will focus to GPU.
聽聽聽聽 Calm down, what鈥檚 our desire platform?
聽聽聽 聽The specialties I showed here, except the last one, most of them had been solved by some current technique. So, how to ?聽I found 2 treasures. ICE, Internet Communication Engine, is much similar as classic CORBA, but much easily used than CORBA. Brook, from Stanford University, developed for years, designed for GPU stream computing. Both of them have the same usage, a front-compiler, which could translate string-codes to C++ language. Then we can add the .h, .cpp files to our projects, code the interface.
聽聽聽 The process how does client pass its call to server as showed below.
聽聽聽 But, the problem is, it鈥檚 too kinds of IDL language, one is for internet application, another is for local GPU stream computing. And more, ICE have no stream data property. It sounds like C++ metaprogramming, but it鈥檚 quite different from each other. So, does it meaning that we must redefine a new IDL language? Let鈥檚 check current tools we have had now.
聽聽聽聽聽 In fact, the most important is the base model. ICE supports a property called 鈥淪equence鈥? mapped into STL container of C++. It could be considerate as the base data type in the language we thought should to invert one. When a client sent a request, server accepted, and then the client sent data wrapped in this container which will rebuild in memory of 鈥淪erver鈥?as texture structure. After server had prepared all the textures contained the data ready to compute, it called API, used the Shaders to computed data. All the progress I have illustrated as follows.
For example, we wrote these IDL sentences.
聽
聽We declared the 2 interface, attention, the 鈥淕PU鈥?and 鈥滳PU鈥?is the key word here, they鈥檃re used to mark where the interface is used for, here, one will run on traditional CPU, another will run on GPU.
聽聽
聽聽聽聽 If you鈥檙e familiar with GL programming, you will point out, 鈥淲hy not add glFlush, glSwapBuffer above ? 鈥? in fact that鈥檚 the key of my whole article. If we only need 1 + 1, even we do not need GPU. The men are greedy all the time. If we want GPU to compute the 蟺 for us, what鈥檚 should we do ? Assume, we want to compute 蟺 , 16 million digitals, but texture unit of GPU can only hold 4096x4096 floating texture size. When GPU will swap buffer, we must move all the data from framebuffer to disk, save them, then make GPU continue compute data. But How to ? I checked the OpenGL and D3D Manual, found nothing useful. So I thought several way to implement this key problem.
All I said was above, about a special aspect of distributed computing, about how to use GPU to do compute as CPU. If this can be implemented one day, I think the modern science will be benefited much from this.
Reference:
ICE, Internet Communications Engine, Zeroc,Inc http://www.zeroc.com/
Brook, Stardford University, http://sf.net/projects/brook
NVIDIA Develper Zone, http://developer.nvidia.com/
OpenGL official Site, http://www.opengl.org/
聽