亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: CUDA很不錯啊 [打印本頁]

作者: prolj    時間: 2008-12-29 15:27
標(biāo)題: CUDA很不錯啊
http://www.nvidia.cn/object/cuda_home_cn.html
http://cuda.csdn.net/
擴(kuò)展現(xiàn)有PC變成HPC,據(jù)稱成本是傳統(tǒng)CPU HPC的1/1000。Apple最近又搞出來OpenCL支持,那巨大的并行啊...
還聽說UC Berkeley曾經(jīng)有個項目是在GPU上JIT,比CPU快20倍。(忘記哪里看到的)
NV這個HPC大小和PC一樣,功耗幾百瓦。不知道和UC Berkeley那個項目有沒有關(guān)系。

[ 本帖最后由 prolj 于 2008-12-29 15:30 編輯 ]
作者: old-cow    時間: 2008-12-30 18:02
你現(xiàn)在的技術(shù)是通殺了,從嵌入式到HPC,無處不在。
作者: prolj    時間: 2008-12-30 19:16
標(biāo)題: 回復(fù) #2 old-cow 的帖子
只是了解了解。
NV說雖然OpenCL比CUDA更“低級”,但是效率上的差距會因為編譯器的優(yōu)化相差不大,但是CUDA相比OpenCL更容易使用。
俺關(guān)心的數(shù)據(jù)流相關(guān)性分析,數(shù)據(jù)流分析的核心問題。
作者: system888net    時間: 2008-12-30 21:35
這個方面的話題很合適在這個論壇討論.
LZ把東西簡要的整理一下直接貼上來就可以討論了,連接看起來不太方便,而且無法要定位討論的重點.
作者: prolj    時間: 2008-12-31 10:03
先從Cell說起,Cell是異構(gòu)多核的,性能好,主頻高啊。
Intel又仿制了一個Larrabee顯卡,只是工藝還是90納米的,但是Arch上和Cell差不多。
再說Intel的Atom,如果說幾十上百個Atom核的多核U,現(xiàn)在來說還為時過早,況且工藝,封裝...芯片組?都是問題,關(guān)鍵是Arch上不是更有利于實現(xiàn)的。
CUDA倒是進(jìn)一步的發(fā)展(個人覺得),NV有個計算板,可以插在PC上的。CUDA的GPGPU的核心有N多...主頻很高,速度本來就不錯,再加上N多核心,并行的話,計算問題可以很快解決。GPU不光可以浮點計算,定點是浮點的一個子集。CUDA沒有Cache好像是,大規(guī)模并行計算用Cache不太考譜,為了增加這方面的性能取而代之的是DDR3顯存,NV的說法是對于大規(guī)模計算來講Cache不是那么重要。并行機(jī)來講,Cache的設(shè)計意義不大,因為計算需要的大量數(shù)據(jù)Cache不一定裝的下,而且并行計算需要的數(shù)據(jù)不一定是連續(xù)的,比如Cary機(jī)就不用Cache。Intel的U怎么樣?芯片上大量的面積用來做Cache了,這樣作為不要Cache的GPU來講就可以容納更多的核來進(jìn)行計算。
從Cell開始,我就覺得異構(gòu)多核好啊。CUDA還是用現(xiàn)有的PC結(jié)構(gòu),現(xiàn)有的軟件(OS)仍然能跑,CPU主要跑OS的,要是有啥計算,無論是浮點還是定點,如果安排合適,GPGPU可以很快計算出結(jié)果。
關(guān)鍵的優(yōu)勢就在于CUDA更容易實現(xiàn),價格低的離譜(和傳統(tǒng)HPC相比),可以用更小的面積集成更多的核(GPGPU這個概念一開始是AMD的流處理器提出的,只不過AMD的流處理(ATI顯卡)要用匯編,不方便),功耗目前是幾百瓦,也已經(jīng)低的離譜了~~~

[ 本帖最后由 prolj 于 2008-12-31 10:41 編輯 ]
作者: system888net    時間: 2008-12-31 12:24
原帖由 prolj 于 2008-12-31 10:03 發(fā)表
先從Cell說起,Cell是異構(gòu)多核的,性能好,主頻高啊。
Intel又仿制了一個Larrabee顯卡,只是工藝還是90納米的,但是Arch上和Cell差不多。
再說Intel的Atom,如果說幾十上百個Atom核的多核U,現(xiàn)在來說還為時過 ...

功耗目前是幾百瓦,也已經(jīng)低的離譜了

算低的離譜了? 是跟哪個做比較的?能否說說?
作者: prolj    時間: 2008-12-31 14:10
標(biāo)題: 回復(fù) #6 system888net 的帖子
跟傳統(tǒng)HPC比啊,獨立顯卡玩兒游戲PC的整機(jī)功耗也幾百瓦了 我覺得比起來機(jī)房里面需要空調(diào)甚至水冷的機(jī)器已經(jīng)很離譜了。
而且NV自己也一直強調(diào) 性能/功耗 比。
作者: cjaizss    時間: 2008-12-31 23:04
怎么現(xiàn)在都在用gpu來搭計算架構(gòu)了,對gpu沒什么了解,只知道其一般是浮點運算,還無法真正理解它的優(yōu)勢所在。
作者: system888net    時間: 2008-12-31 23:47
這是現(xiàn)存在的一些說法和觀點(本人認(rèn)為僅是某個角度的說法,并不排斥大家各自的觀點):

使用顯示芯片來進(jìn)行運算工作,和使用 CPU 相比,主要有幾個好處:
   1. 顯示芯片通常具有更大的內(nèi)存帶寬。例如,NVIDIA 的 GeForce 8800GTX 具有超過 50GB/s 的內(nèi)存帶寬,而目前高階 CPU 的內(nèi)存帶寬則在 10GB/s 左右。
   2. 顯示芯片具有更大量的執(zhí)行單元。例如 GeForce 8800GTX 具有 128 個 "stream processors",頻率為 1.35GHz。CPU 頻率通常較高,但是執(zhí)行單元的數(shù)目則要少得多。
   3. 和高階 CPU 相比,顯卡的價格較為低廉。例如目前一張 GeForce 8800GT 包括 512MB 內(nèi)存的價格,和一顆 2.4GHz 四核心 CPU 的價格相若。

當(dāng)然,使用顯示芯片也有它的一些缺點:

   1. 顯示芯片的運算單元數(shù)量很多,因此對于不能高度并行化的工作,所能帶來的幫助就不大。
   2. 顯示芯片目前通常只支持 32 bits 浮點數(shù),且多半不能完全支持 IEEE 754 規(guī)格, 有些運算的精確度可能較低。目前許多顯示芯片并沒有分開的整數(shù)運算單元,因此整數(shù)運算的效率較差。
   3. 顯示芯片通常不具有分支預(yù)測等復(fù)雜的流程控制單元,因此對于具有高度分支的程序,效率會比較差。
   4. 目前 GPGPU 的程序模型仍不成熟,也還沒有公認(rèn)的標(biāo)準(zhǔn)。例如 NVIDIA 和 AMD/ATI 就有各自不同的程序模型。
作者: cjaizss    時間: 2008-12-31 23:57
原帖由 system888net 于 2008-12-31 23:47 發(fā)表
這是現(xiàn)存在的一些說法和觀點(本人認(rèn)為僅是某個角度的說法,并不排斥大家各自的觀點):

使用顯示芯片來進(jìn)行運算工作,和使用 CPU 相比,主要有幾個好處:
   1. 顯示芯片通常具有更大的內(nèi)存帶寬。例如,NVIDIA ...

......
作者: system888net    時間: 2008-12-31 23:58
int main()
{
    if(!InitCUDA())
    {
        printf("\n\r無法執(zhí)行CUDA功能");
        return(0);
    }
    else
    {
        printf("\n\r init CUDA功能成功....");
    }
    //開始利用功能進(jìn)一步的處理.....
    //要利用 CUDA 進(jìn)行計算之前,要先把數(shù)據(jù)復(fù)制到顯卡內(nèi)存中,才能讓顯示芯片使用
    //do somthing...
    return(1);
}

[ 本帖最后由 system888net 于 2009-1-1 00:00 編輯 ]
作者: prolj    時間: 2009-01-01 00:04
回復(fù) #8 cjaizss 的帖子
我晚了一步,LS已經(jīng)說了,而且比我想的全面。

回復(fù) #9 system888net 的帖子
   1. 顯示芯片的運算單元數(shù)量很多,因此對于不能高度并行化的工作,所能帶來的幫助就不大。
只是用于計算,那些東西對向量化和并行化需求很大,而OS這些傳統(tǒng)軟件就...如果說多任務(wù),那是OS的事情,不是compiler的問題。雖然我還不了解科學(xué)計算那些東西,但是總比為游戲做貢獻(xiàn)要好的多吧(我一直堅持認(rèn)為開發(fā)游戲是對不起良心的事情)。OS和傳統(tǒng)軟件還是在CPU上跑的,我覺得現(xiàn)在的Intel雙核U跑OS對于P4的單核U沒什么優(yōu)勢。
   2. 顯示芯片目前通常只支持 32 bits 浮點數(shù),且多半不能完全支持 IEEE 754 規(guī)格, 有些運算的精確度可能較低。目前許多顯示芯片并沒有分開的整數(shù)運算單元,因此整數(shù)運算的效率較差。
不了解
   3. 顯示芯片通常不具有分支預(yù)測等復(fù)雜的流程控制單元,因此對于具有高度分支的程序,效率會比較差。
compiler可以配合么?
   4. 目前 GPGPU 的程序模型仍不成熟,也還沒有公認(rèn)的標(biāo)準(zhǔn)。例如 NVIDIA 和 AMD/ATI 就有各自不同的程序模型。
這個...
而且一切都在發(fā)展中嘛...我只是關(guān)心編譯,雖然其中用到的編譯技術(shù)早就存在了,但是我還沒掌握...當(dāng)然我對Arch感冒...
作者: system888net    時間: 2009-01-01 00:07
//要利用 CUDA 進(jìn)行計算之前,要先把數(shù)據(jù)復(fù)制到顯卡內(nèi)存中,才能讓顯示芯片使用


  1.    int  cpu_data[100]
  2.    int* ptr_gpu_data;

  3.     cudaMalloc((void**) &ptr_gpu_data, sizeof(cpu_data));  //申請GPU內(nèi)存.
  4.     cudaMemcpy(ptr_gpu_data, cpu_data, sizeof(cpu_data),cudaMemcpyHostToDevice);  //傳送數(shù)據(jù)到GPU內(nèi)存.
  5.    //開始處理....
  6.    //...大家元旦快樂!
復(fù)制代碼

[ 本帖最后由 system888net 于 2009-1-1 00:14 編輯 ]
作者: system888net    時間: 2009-01-01 00:14
//開始處理....
聲明函數(shù)時加上 __global__,則在顯示芯片上執(zhí)行:


  1. __global__ static void test(int *var, int* sum_output)
  2. {
  3.     int i;
  4.     int sum= 0;

  5.     for(i=0;i<100;i++)
  6.    {
  7.         sum+=(var[i]*var[i]*10);
  8.     }
  9.     *sum_output=sum;
  10.     return;
  11. }
復(fù)制代碼

作者: prolj    時間: 2009-01-01 00:16
標(biāo)題: 回復(fù) #8 cjaizss 的帖子
還有就是和ARM+DSP的思路是一樣的啊
作者: cjaizss    時間: 2009-01-01 00:18
原帖由 prolj 于 2009-1-1 00:16 發(fā)表
還有就是和ARM+DSP的思路是一樣的啊

......呵呵,這個思路偶倒是比較熟悉
作者: system888net    時間: 2009-01-01 00:19
回傳及釋放工作:

  1.     int cpu_var_value;

  2.    //把結(jié)果傳送回CPU
  3.     cudaMemcpy(&cpu_var_value, gpu_result, sizeof(int), udaMemcpyDeviceToHost);
  4.    //進(jìn)行GPU釋放工作
  5.     cudaFree(ptr_gpu_data);
  6.     cudaFree(gpu_result);
復(fù)制代碼

[ 本帖最后由 system888net 于 2009-1-1 00:20 編輯 ]
作者: system888net    時間: 2009-01-01 00:23
其實這里有個CPU和GPU的工作協(xié)同調(diào)度及負(fù)載動態(tài)平衡的關(guān)系.
兩者應(yīng)該是互補而不是替代.
作者: prolj    時間: 2009-01-01 00:26
標(biāo)題: 回復(fù) #16 cjaizss 的帖子
其實就是這個啊,就是DSP多了倆,強大了點,一樣的。和你的設(shè)計思路也是一樣的啊,只是你用fpga代替了dsp。 要不是你的思路在前,我也不會那么肯定Cell這種異構(gòu)多核。
作者: system888net    時間: 2009-01-01 00:26
一種可能是將來各個板卡的芯片的能力越來越強,都會是一個獨立的計算單元(如GPU),因此異構(gòu)的計算概念有了變化,從不同的機(jī)器異構(gòu)擴(kuò)展到了同一個機(jī)器里不同處理單元的異構(gòu)協(xié)同.
作者: prolj    時間: 2009-01-01 00:27
標(biāo)題: 回復(fù) #18 system888net 的帖子
對啊,沒有說誰代替誰,就是互補的。
當(dāng)然NVIDIA和Intel都想把對方搞死,那是他們之間的事情。
作者: system888net    時間: 2009-01-01 00:30
prolj 和cjaizss 說的有理,很多思想是相通的,就如:ARM+DSP
作者: system888net    時間: 2009-01-01 00:31
原帖由 prolj 于 2009-1-1 00:27 發(fā)表
對啊,沒有說誰代替誰,就是互補的。
當(dāng)然NVIDIA和Intel都想把對方搞死,那是他們之間的事情。

有道理. 幽默!
作者: prolj    時間: 2009-01-01 00:32
原帖由 system888net 于 2009-1-1 00:26 發(fā)表
一種可能是將來各個板卡的芯片的能力越來越強,都會是一個獨立的計算單元(如GPU),因此異構(gòu)的計算概念有了變化,從不同的機(jī)器異構(gòu)擴(kuò)展到了同一個機(jī)器里不同處理單元的異構(gòu)協(xié)同.

這個想法不錯,NV這次的HPC檔次最低的就是那么一個計算卡。
作者: system888net    時間: 2009-01-01 00:35
原帖由 prolj 于 2009-1-1 00:32 發(fā)表

這個想法不錯,NV這次的HPC檔次最低的就是那么一個計算卡。

個人感覺這個論壇里就應(yīng)該討論一些深入的問題,就如另外的一個帖中cjaizss所建議的那樣.
作者: system888net    時間: 2009-01-01 00:42
也就是從廣義上來說,對于一個任務(wù)各個具有運算能力的單元都可以協(xié)同來分工完成,這當(dāng)然需要做許多工作.
作者: system888net    時間: 2009-01-01 00:53
在CUDA中,GPU不能直接訪問主內(nèi)存,不知道將來體系是否會有變化?
如果能直接訪問就更好!
作者: cjaizss    時間: 2009-01-01 01:00
原帖由 prolj 于 2009-1-1 00:26 發(fā)表
其實就是這個啊,就是DSP多了倆,強大了點,一樣的。和你的設(shè)計思路也是一樣的啊,只是你用fpga代替了dsp。 要不是你的思路在前,我也不會那么肯定Cell這種異構(gòu)多核。

呵呵,完了半天,我還以為是啥新花樣呢,呵呵
不過,在具體設(shè)計的時候,是選擇dsp還是fpga還是要講究的,fpga雖然看上去仿佛是上上選,但它屬于硬件級控制。dsp屬于軟件控制,可以很大程度的發(fā)揮軟件的這種強大的擴(kuò)展性,這是硬件所不能比的,再者,還要注意一個硬件的成本問題。當(dāng)然,硬件設(shè)計只取性價比高的,而不是求效率絕對最大化的,效率太高在有的需求里也是浪費,因為可能對于具體需求來說,硬件絕大多數(shù)都在那里閑置,不務(wù)正業(yè)。
作者: prolj    時間: 2009-01-01 01:06
原帖由 cjaizss 于 2009-1-1 01:00 發(fā)表

呵呵,完了半天,我還以為是啥新花樣呢,呵呵
不過,在具體設(shè)計的時候,是選擇dsp還是fpga還是要講究的,fpga雖然看上去仿佛是上上選,但它屬于硬件級控制。dsp屬于軟件控制,可以很大程度的發(fā)揮軟件的這種 ...

fpga和dsp使用上差不多,都是連接好以后,寫代碼。不同的是一個代碼是Verilog,一個是C。當(dāng)然,這是我從軟件角度來看的。
如果性能上滿足,我見過的DSP倒是不貴。現(xiàn)在很多DSP處理視頻,音頻,圖像效果很好,不知道夠用不夠用。
作者: cjaizss    時間: 2009-01-01 01:33
對于fpga的設(shè)計,不應(yīng)該站在軟件角度上去思考,而應(yīng)該站在硬件的角度上思考問題,設(shè)計fpga的時候,要想的是電路的樣子,電路每時每刻是一個什么狀態(tài),而不是軟件上執(zhí)行到哪一句了。verilog的設(shè)計和C的設(shè)計差別還是很明顯的,雖然都是寫代碼,但其工作的機(jī)制完全不同。ASIC可以讓效率發(fā)揮到極至,但,有的時候我們沒有必要讓硬件這么“強”,很多時候的處理其實dsp已經(jīng)非常好。
作者: prolj    時間: 2009-01-01 01:42
原帖由 cjaizss 于 2009-1-1 01:33 發(fā)表
對于fpga的設(shè)計,不應(yīng)該站在軟件角度上去思考,而應(yīng)該站在硬件的角度上思考問題,設(shè)計fpga的時候,要想的是電路的樣子,電路每時每刻是一個什么狀態(tài),而不是軟件上執(zhí)行到哪一句了。verilog的設(shè)計和C的設(shè)計差別還 ...

我的意思是都是連線之后寫代碼,沒說你說的那么深入。表面上工作流程都差不多。
Verilog和C根本就不一回事。C可以關(guān)注算法,誰知道匯編出來啥樣啊,我就知道沒優(yōu)化的IR啥樣,優(yōu)化之后都不一定清楚。但是這個不清從不礙事啊,程序結(jié)果不會錯的/Verilog不一樣啊,綜合之后啥樣,記不住的查書,可是優(yōu)化之后呢?問題是我這樣硬件不熟悉的就壓根不知道啥地方會被優(yōu)化。這要是萬一錯一點,整個fpga就算是錯了。
ASIC fpga成熟之后的定型。
作者: prolj    時間: 2009-01-01 01:54
原帖由 system888net 于 2009-1-1 00:53 發(fā)表
在CUDA中,GPU不能直接訪問主內(nèi)存,不知道將來體系是否會有變化?
如果能直接訪問就更好!

這個好,如果我設(shè)計硬件,會考慮這個因素。
作者: cjaizss    時間: 2009-01-01 02:08
其實C編譯的優(yōu)化說來說去就那么幾種類型。verilog的優(yōu)化其實也就那么幾種類型。兩種語言都和各自所服務(wù)對象的最終形式比較接近。
verilog的調(diào)試和C語言調(diào)試一樣,也可以從模塊開始調(diào)試起。所以害怕如果錯一點,整個FPGA就錯了,是沒有必要的。沒有人可以保證一遍數(shù)字設(shè)計的結(jié)果就是最終想要的結(jié)果。其實換作C語言也一樣,一個函數(shù)錯了,整個C語言代碼都錯了
主要是你對數(shù)字設(shè)計可能相對陌生一點,其實熟悉了也就那么回事,呵呵。
總之,數(shù)字設(shè)計的思路和軟件的思路不一樣,它是硬件。
一個一個的verilog模塊可以類比成一個一個板子上的芯片。
硬件是死的,軟件是活的。這句話在設(shè)計硬件、軟件的時候要永遠(yuǎn)深化下去,一步一步加深對這句話的理解。
當(dāng)然,fpga還是有很真正硬件有不一樣的地方,特別是它是配置出來這一點,這也可以讓嵌入式系統(tǒng)設(shè)計相對靈活,仿佛這不是一個死的東西。然而,根據(jù)不同的情況靈活的配置不同的電路,這一般可以用cpu協(xié)助完成,這自然也屬于活的東西,也是軟件的控制。
另外,dsp的編譯器一般沒那么智能,要想發(fā)揮dsp的優(yōu)勢,匯編還是需要的,可以采取C+asm的設(shè)計方式,每種dsp是不一樣的,所以可移植性可能是一個問題,但沒辦法。
作者: cjaizss    時間: 2009-01-01 02:12
原帖由 prolj 于 2009-1-1 01:54 發(fā)表

這個好,如果我設(shè)計硬件,會考慮這個因素。

共存儲是雙刃劍
作者: prolj    時間: 2009-01-01 02:18
原帖由 cjaizss 于 2009-1-1 02:08 發(fā)表
其實C編譯的優(yōu)化說來說去就那么幾種類型。verilog的優(yōu)化其實也就那么幾種類型。兩種語言都和各自所服務(wù)對象的最終形式比較接近。
verilog的調(diào)試和C語言調(diào)試一樣,也可以從模塊開始調(diào)試起。所以害怕如果錯一點, ...

這些...我再慢慢體會...
DSP是要用匯編才好,而且還得自己考慮指令之間的軟流水之類的,也就是指令調(diào)度要人工完成,這個很麻煩。
作者: prolj    時間: 2009-01-01 02:20
標(biāo)題: 回復(fù) #34 cjaizss 的帖子
只是考慮這個因素。
分開呢就像load/stroe,這種優(yōu)化不陌生。共存儲和x86挺像?不知道,差不多吧,在尋址方式上比喻。
作者: system888net    時間: 2009-01-01 10:59
原帖由 cjaizss 于 2009-1-1 02:12 發(fā)表

共存儲是雙刃劍


沒錯,沒有十全十美的事情.
當(dāng)不能直接訪問主存的時候就要向GPU里傳送數(shù)據(jù),這就要評估傳輸時間和計算時間的代價是否值得這樣做。
作者: bshawk    時間: 2009-01-01 19:07
原帖由 system888net 于 2009-1-1 10:59 發(fā)表


沒錯,沒有十全十美的事情.
當(dāng)不能直接訪問主存的時候就要向GPU里傳送數(shù)據(jù),這就要評估傳輸時間和計算時間的代價是否值得這樣做。


TI的DaVinci SOC, OMAP都是這種ARM+DSP的雙Core結(jié)構(gòu),DSP core也是可以訪問Memory的,可以提高不錯的效率。個人覺得,還是好處多于壞處,當(dāng)然得小心使用!
作者: system888net    時間: 2009-01-01 22:06
原帖由 bshawk 于 2009-1-1 19:07 發(fā)表


TI的DaVinci SOC, OMAP都是這種ARM+DSP的雙Core結(jié)構(gòu),DSP core也是可以訪問Memory的,可以提高不錯的效率。個人覺得,還是好處多于壞處,當(dāng)然得小心使用!


有道理.
作者: kns1024wh    時間: 2009-01-01 23:43
標(biāo)題: 回復(fù) #1 prolj 的帖子
芯片運算
作者: prolj    時間: 2009-01-02 00:38
標(biāo)題: 回復(fù) #40 kns1024wh 的帖子
OpenGL和OpenCL還有DirectX是不是也有相似之處呢?尤其是OpenGL和OpenCL。
作者: system888net    時間: 2009-01-02 20:13
OpenGL和OpenCL是親家.
作者: cjaizss    時間: 2009-01-02 20:44
呵呵,對圖形界面完全不懂........
作者: elmnd123@cu    時間: 2009-01-02 21:53
頂。】耥敯。“持恢烙辛薈UDA以后并行計算好而已。。。
作者: fineamy    時間: 2009-01-02 23:09
標(biāo)題: 恩,還真不錯
CUDA(Compute Unified Device Architecture),顯卡廠商NVidia推出的運算平臺。
隨著顯卡的發(fā)展,GPU越來越強大,而且GPU為顯示圖像做了優(yōu)化。在計算上已經(jīng)超越了通用的CPU。如此強大的芯片如果只是作為顯卡就太浪費了,因此N卡廠商推出CUDA,讓顯卡可以用于圖像計算以外的目的。
目前只有G80平臺的N卡才能使用CUDA,工具集的核心是一個C語言編譯器。G80中擁有128個單獨的ALU,因此非常適合并行計算,而且數(shù)值計算的速度遠(yuǎn)遠(yuǎn)優(yōu)于CPU。
CUDA的SDK中的編譯器和開發(fā)平臺支持Windows、Linux系統(tǒng),可以與Visual Studio2003集成在一起。
目前這項技術(shù)處在起步階段,僅支持32位系統(tǒng),編譯器不支持雙精度數(shù)據(jù)等問題要在晚些時候解決。當(dāng)然還有就是Geforce8系列顯卡高昂的價格問題了。

http://zhidao.baidu.com/question/53059187.html?fr=qrl

猜想下執(zhí)行流程:
專用編譯器編譯 -> 程序分兩部分,一部分是CPU,另一部分是GPU跑的代碼 -> CPU跑所謂GPU宿主機(jī)代碼,將GPU代碼下載到GPU內(nèi)存中 -> CPU跑其它代碼,GPU跑下載的GPU代碼 -> GPU跑完結(jié)果通過合適的方式通知CPU。如PCI-e中斷 -> CPU從GPU取結(jié)果。

采用這種方式比傳統(tǒng)只是提供API接口更加靈活。把GPU更大的開放給用戶,而不僅僅是靠提供有限的幾個API讓用戶來用。比如可以選擇只是在CPU上跑宿主機(jī)代碼,而讓GPU去跑主代碼。

這種方案比較類似真正分布式多核處理器。而目前說的所謂雙核,四核只是一種共享內(nèi)存式的多核處理器如多線程多核處理器,還不是真正的多核處理器。

從這點上來講,NVidia在PC架構(gòu)上還真是對多核處理器做了一個比較大的改進(jìn)。他們期望與CPU一起,把PC變成類似真正的分布式多核處理PC.
作者: fineamy    時間: 2009-01-02 23:19
標(biāo)題: 回復(fù) #45 fineamy 的帖子
吸引力很大,
兼容性靠編譯器解決,可以做到向下兼容。
嘿嘿,NVidia這盤題下的很大。。。
作者: fineamy    時間: 2009-01-03 00:21
標(biāo)題: 我倒希望
CUDA如果能發(fā)展到不訪問主內(nèi)存就好了!不過對PC來講這可能是奢望了
在CUDA中,GPU不能直接訪問主內(nèi)存,不知道將來體系是否會有變化?
如果能直接訪問就更好

作者: emmoblin    時間: 2009-01-03 00:40
如果都是并行計算當(dāng)然gpu強悍了。
到那是大多數(shù)程序都不是并行的
作者: cjaizss    時間: 2009-01-03 00:52
原帖由 fineamy 于 2009-1-2 23:09 發(fā)表

http://zhidao.baidu.com/question/53059187.html?fr=qrl

猜想下執(zhí)行流程:
專用編譯器編譯 -> 程序分兩部分,一部分是CPU,另一部分是GPU跑的代碼 -> CPU跑所謂GPU宿主機(jī)代碼,將GPU代碼下載到GPU內(nèi)存中 ...

多核么,恩,架構(gòu)還是有區(qū)別的。你認(rèn)為這種分布式的結(jié)構(gòu)一定好嗎?我看也不見得,各有特點吧。
再者,分布式也不年輕了,研究了那么多年,以前一般是計算機(jī)之間,現(xiàn)在可以在嵌入式內(nèi)部玩。
分布式的概念花樣炒的太多,最近這個什么云計算,我蒙一下,估計最后也破產(chǎn)。
作者: fineamy    時間: 2009-01-03 01:31
標(biāo)題: 回復(fù) #49 cjaizss 的帖子
這個就不了解了。但是單核已經(jīng)到極限了。高清等多媒體的發(fā)展,確實要在多核上尋求突破。
這幾年估計是個過渡,不知后面會發(fā)展成什么格局。
作者: system888net    時間: 2009-01-04 17:08
原帖由 fineamy 于 2009-1-3 00:21 發(fā)表
CUDA如果能發(fā)展到不訪問主內(nèi)存就好了!不過對PC來講這可能是奢望了



多了個"不"字吧?
作者: system888net    時間: 2009-01-04 17:10
原帖由 cjaizss 于 2009-1-3 00:52 發(fā)表

多核么,恩,架構(gòu)還是有區(qū)別的。你認(rèn)為這種分布式的結(jié)構(gòu)一定好嗎?我看也不見得,各有特點吧。
再者,分布式也不年輕了,研究了那么多年,以前一般是計算機(jī)之間,現(xiàn)在可以在嵌入式內(nèi)部玩。
分布式的概念花樣炒 ...

......我蒙一下,估計最后也破產(chǎn)。


作者: wheel    時間: 2009-01-05 16:04
openCL 現(xiàn)在是主推嵌入的。。
作者: prolj    時間: 2009-01-08 15:19
OpenCL在iPhone上?不知道干嘛,不過iPhone的確不錯。Mac的東西都不錯,看得見摸得著,價錢也可以接受,用起來也比較舒服。
作者: prolj    時間: 2009-01-08 15:54
如果是傳統(tǒng)同構(gòu)多核的HPC上的應(yīng)用豐富或者好寫的話,NV這種異構(gòu)多核HPC上應(yīng)該是一樣的,因為GPU和CPU的地址空間分開,而GPU那塊仍然是同構(gòu)多核的。而且在編譯上沒什么新東西,仍然是粗細(xì)粒度并行,在循環(huán)上上使勁,對于故意寫的不能優(yōu)化的循環(huán)仍然跳過,至于向量,不知道有沒有那個向量計算的部件,更多的在IPO那里做一些。cache分塊或者什么就免了,直接算法DDR3的顯存去了。寄存器不清楚,向量還是什么?圖染色應(yīng)該不行了。
有人不是把浮點改成整數(shù)提高性能么?CUDA上最不濟(jì)也可以把整數(shù)改成浮點進(jìn)行并行計算啊。
在Win上科研人員可以用Matlab跑CUDA,讓他們?nèi)?人家愿意么?這就是CUDA的優(yōu)勢。
而且更大的優(yōu)勢在于,臺灣的工藝生產(chǎn)顯卡沒問題,簡單的工藝就可以帶來巨大的并行。為什么不用呢?非得IBM的最好的工藝才能并行出來的U才是好的?
優(yōu)勢還在于可以不改變現(xiàn)有的軟硬件基礎(chǔ),直接在Win上跑,傳統(tǒng)HPC自己改的那非主流的Linux可以?(不是說Linux非主流,是說HPC自己把Linux改的非主流了)CUDA僅作用于需要被并行的計算,并行OS中的for循環(huán)去?很有創(chuàng)意!不知道傳統(tǒng)HPC有這么做的沒。
NV這個HPC這么便宜為什么不買非要買貴的?不是敗家子就是有XXX
NV那個GPU的Core真多,不知道別的傳統(tǒng)HPC多核之間都用什么主流或者非主流的XX Bus,也不知道是很好的性能還是啥鳥性能。
NV那個HPC的帶寬很不錯,不知道別的傳統(tǒng)HPC呢...牛還是鳥?
買一個NV的HPC放在機(jī)房里,不用專門的水冷,SGI那個1000核的水冷Atom用不上了,空調(diào)是必須的,就算沒有機(jī)器你夏天不開空調(diào)?
綜合下來,這東西不錯。期待大牛來講講其他有競爭的機(jī)器的Arch,從技術(shù)方面比較,畢竟這里是技術(shù)論壇。

GPU和CPU的地址空間分開,就像RISC的U那樣LOAD/STORE那樣,MS的DX應(yīng)該在隱藏LOAD/STROE上做了文章,這點純屬猜測,知道的多來講講吧。

如果說出海的時候在大海里感到自己渺小的話,在優(yōu)雅的算法面前就會感到自己的白癡,代碼的海洋不是迷失就是征服。NV的老大是華人啊,華人科學(xué)家和工程師不知道有多少在引領(lǐng)潮流。計算機(jī)科學(xué)日新月異,創(chuàng)新永遠(yuǎn)都是自主思考的人做的,我這樣的白癡只能在人家后面學(xué)習(xí),當(dāng)然不自主思考的可以做他主子的喉舌,所以我真的不應(yīng)該總這么瞎胡扯了,弄得自己跟NV的五毛似的。
各位多多討論先進(jìn)技術(shù)吧。大家一起來交流一下自己對Arch的看法和自己的思路,都自主思考思考。
作者: joint    時間: 2009-01-09 12:50
原帖由 prolj 于 2009-1-8 15:54 發(fā)表
如果是傳統(tǒng)同構(gòu)多核的HPC上的應(yīng)用豐富或者好寫的話,NV這種異構(gòu)多核HPC上應(yīng)該是一樣的,因為GPU和CPU的地址空間分開,而GPU那塊仍然是同構(gòu)多核的。而且在編譯上沒什么新東西,仍然是粗細(xì)粒度并行,在循環(huán)上上使 ...



AGREE!
廉價,節(jié)能,高性能!
才能普及
作者: cjaizss    時間: 2009-01-10 00:46
就算是再好的東西,被接受都是需要時間的。
非對稱多核其實很早就被提出來了,但是因為以前它的應(yīng)用軟件一般需要復(fù)雜的設(shè)計,而一直沒有很明顯的突破。gpu也聽說人們一直在打它的主意。但愿非對稱能夠有很好的發(fā)展吧。我一直覺得非對稱未來會是多處理的主流。
作者: beepbug    時間: 2009-01-10 08:52
CUDA就是Compute Unified Device Architecture吧?
是某家顯卡廠推出的一個架構(gòu),原先是為了利用顯卡多余的計算能力。
作者: prolj    時間: 2009-01-10 12:09
x86這種U,一個乘法操作要N多cycle,流水線停頓了又要N多cycle...還是x86跑OS,GPU并行計算這樣的配合不錯。
NV給Open64做了不少工作,Open64編譯出來代碼的效率也的確不錯。GCC在優(yōu)化和并行方面的確比較落后。
作者: cjaizss    時間: 2009-01-10 12:37
原帖由 prolj 于 2009-1-10 12:09 發(fā)表
x86這種U,一個乘法操作要N多cycle,流水線停頓了又要N多cycle...還是x86跑OS,GPU并行計算這樣的配合不錯。
NV給Open64做了不少工作,Open64編譯出來代碼的效率也的確不錯。GCC在優(yōu)化和并行方面的確比較落后。

GCC的優(yōu)化倒不是比較落后,而是初衷就不同。
GCC從一開始就要把它變成一個通用編譯器,通用編譯器的原則就是不偏袒哪個處理器。如果要在哪個處理器上實現(xiàn)特殊的處理,那幾乎是哪個CPU公司要用,那么公司自己可以把通用編譯器里面加上自己處理器的特性。比如intel就根據(jù)CPU的特性來改造gcc。
作者: cjaizss    時間: 2009-01-10 12:39
換句話說,通用編譯器的最主要通用之處在于前端和后端嚴(yán)格分開,它最大的作用就是不依賴于任何平臺以生成優(yōu)化后的IR.
作者: beepbug    時間: 2009-01-11 07:55
早期的CPU,沒有浮點處理能力,浮點計算由軟件來做。后來出現(xiàn)了浮點處理器,以硬件來做,速度就快多了。
8086加上浮點處理器8087就是這樣。這種方式叫協(xié)處理(8087的確切叫法就是浮點協(xié)處理器)。當(dāng)8086執(zhí)行到一條ESC指令(不屬于8086指令集)時,就將后隨的操作碼(做哪種浮點計算)和參數(shù)傳遞給8087,然后自己就取下一條指令,繼續(xù)往下執(zhí)行。
這不算并行處理,這是協(xié)處理。并行處理要比協(xié)處理復(fù)雜得多。
后來出的CPU,就把浮點協(xié)處理器包含其中了。我們從來不把這種含協(xié)處理器的CPU叫做多核的。這也說明了,它與并行處理是兩碼事。
顯卡本身含整數(shù)計算能力(顯示展開與圖像處理的需要)。當(dāng)顯卡展開完所需要的頁面后,它就閑著。CUDA就是為了利用著閑置的計算能力。
作者: rawa9999    時間: 2009-01-11 16:27
有一個C語言編譯器了,其他就好辦了,期待程序員們向這個計算平臺移植程序,顯卡的計算能力確實超越CPU了,這是一個好現(xiàn)象,打破intel的壟斷芯片地位。
作者: cjaizss    時間: 2009-01-11 17:13
原帖由 beepbug 于 2009-1-11 07:55 發(fā)表
早期的CPU,沒有浮點處理能力,浮點計算由軟件來做。后來出現(xiàn)了浮點處理器,以硬件來做,速度就快多了。
8086加上浮點處理器8087就是這樣。這種方式叫協(xié)處理(8087的確切叫法就是浮點協(xié)處理器)。當(dāng)8086執(zhí)行到 ...

AMP和協(xié)處理還是有明顯區(qū)別的。
作者: cjaizss    時間: 2009-01-11 17:17
不過cuda這種結(jié)構(gòu)看上去更像協(xié)處理器,不能算是真正意義上的AMP。不過我一直認(rèn)為AMP結(jié)構(gòu)或許會成為未來的主流。

[ 本帖最后由 cjaizss 于 2009-1-11 17:24 編輯 ]
作者: cjaizss    時間: 2009-01-11 17:27
原帖由 rawa9999 于 2009-1-11 16:27 發(fā)表
有一個C語言編譯器了,其他就好辦了,期待程序員們向這個計算平臺移植程序,顯卡的計算能力確實超越CPU了,這是一個好現(xiàn)象,打破intel的壟斷芯片地位。

CPU和專用處理器之間是有區(qū)別的
作者: rawa9999    時間: 2009-01-11 18:04
X86\PPC\s390\RISC都是通用CPU構(gòu)架,C交叉編譯器使得各種程序在各平臺之間跑都沒有什么問題,有了C編譯器問題解決了一大部分。
作者: rawa9999    時間: 2009-01-11 18:17
并行處理是多個處理核心同時具備統(tǒng)一的指令集,協(xié)處理和主處理器擁有各自的指令集,這是最大的區(qū)別!指令調(diào)度則類似!
作者: beepbug    時間: 2009-01-11 18:39
CUDA當(dāng)然與浮點協(xié)處理有區(qū)別。但是,只是協(xié)處理方式不一樣,借用的功能不一樣,還有其它不一樣。
同樣,CUDA與并行處理也是有區(qū)別的。問題是,CUDA靠近并行,還是更靠近FPU?
作者: cjaizss    時間: 2009-01-11 20:08
原帖由 rawa9999 于 2009-1-11 18:17 發(fā)表
并行處理是多個處理核心同時具備統(tǒng)一的指令集,協(xié)處理和主處理器擁有各自的指令集,這是最大的區(qū)別!指令調(diào)度則類似!

界限還是不那么容易區(qū)分。對稱多處理一定是具備統(tǒng)一的指令集的,但非對稱多處理就難說了。
作者: rawa9999    時間: 2009-01-11 20:54
這個東西一出來,intel就要頭大了,呵呵!
作者: fineamy    時間: 2009-01-11 20:58
標(biāo)題: 簡單分析下
在CUDA中,GPU應(yīng)該通過AGP高速接口與CPU架起橋梁。
CPU擁有所有外設(shè)資源即可以直接訪問任何外部資源。最關(guān)鍵的是主存
GPU不擁有所有外設(shè)的訪問權(quán)。比如硬盤等。也沒有直接訪問主存的權(quán)利,需要通過CPU間接訪問。

現(xiàn)代PC最大的速度瓶頸是主存,硬盤而不是CPU本身。CPU已經(jīng)相當(dāng)?shù)目煲灾劣诖蠖鄷r間上是在等待主存,硬盤等這些。

由于GPU與CPU這種共享資源的方式,所以CUDA無法改善上面提到的PC系統(tǒng)瓶頸問題。
GPU的改善是在計算能力,還是以前的例子,比如計算A*B+C*D+E*F+G*H。這也就是為什么CUDA主要還是面向并行計算的。

對比多核CPU,就是現(xiàn)在的雙核,四核,不是64位核。其計算能力不如GPU(更多核)改善的猛烈。但是這種卻可望改善上面提到的PC系統(tǒng)瓶頸問題。每個核都擁有對外設(shè)的直接訪問權(quán),所以按多線程式的就可以改善對主存,外設(shè)等的流水處理。

真正的并行,可以這樣看:
讀數(shù)據(jù) --> 運算 --> 存數(shù)據(jù)
對讀數(shù)據(jù)就是涉及主存操作,比如上面的式子,最大并行就是同時讀到A,B,C,D,E,F(xiàn),G,H。這個要求置8組內(nèi)存控制器,8組內(nèi)存等。
對運算部分,最好就是一次計算得到A*B+C*D+E*F+G*H,但通常實現(xiàn)時不行的,于是最大并行就得最少四個運算核。比如4個乘法,兩個加法核這樣的塔狀計算網(wǎng)。

最存儲部分要求一般都是跟讀取一致。
這樣的配置,對PC而言這樣就有點太夸張了。
由此,看到GPU在運算部分就很接近這樣的部分了。但是它不能解決主存操作部分。

[ 本帖最后由 fineamy 于 2009-1-11 21:16 編輯 ]
作者: rawa9999    時間: 2009-01-11 21:03
基于Gpu寫一個OS,或許是一個新的機(jī)會!各位大牛牽頭搞一個linux移植上去試試!
可能還需要bios和控制芯片支持,這些東西對于GPU制造商不是什么難事,期待這項技術(shù)的發(fā)展,哪天只插個顯卡就OK了,這也是對intel增加顯示核心的最好回應(yīng)!

[ 本帖最后由 rawa9999 于 2009-1-11 21:22 編輯 ]
作者: cjaizss    時間: 2009-01-11 23:43
原帖由 rawa9999 于 2009-1-11 21:03 發(fā)表
基于Gpu寫一個OS,或許是一個新的機(jī)會!各位大牛牽頭搞一個linux移植上去試試!
可能還需要bios和控制芯片支持,這些東西對于GPU制造商不是什么難事,期待這項技術(shù)的發(fā)展,哪天只插個顯卡就OK了,這也是對inte ...

你這就是在搞笑了
作者: cjaizss    時間: 2009-01-11 23:55
原帖由 fineamy 于 2009-1-11 20:58 發(fā)表
在CUDA中,GPU應(yīng)該通過AGP高速接口與CPU架起橋梁。
CPU擁有所有外設(shè)資源即可以直接訪問任何外部資源。最關(guān)鍵的是主存
GPU不擁有所有外設(shè)的訪問權(quán)。比如硬盤等。也沒有直接訪問主存的權(quán)利,需要通過CPU間接訪問 ...

I/O速度差別很多時候不是1倍2倍的差別,而是數(shù)量級的差別。所以,cache(硬cache以及軟cache)是多么的重要啊,呵呵。
中斷方式最早出來的原因記得好象也是因為I/O太慢
作者: fineamy    時間: 2009-01-12 01:23
標(biāo)題: cache
I/O速度差別很多時候不是1倍2倍的差別,而是數(shù)量級的差別。所以,cache(硬cache以及軟cache)是多么的重要啊,呵呵。
中斷方式最早出來的原因記得好象也是因為I/O太慢


cache是性價比導(dǎo)致的,解決主存與CPU的交互問題。
中斷解決CPU與外設(shè)I/O的交互問題。

CPU有眾多的外設(shè),CPU通過橋或BUS將網(wǎng)卡,硬盤,U盤,鼠標(biāo),顯卡,聲卡,各種擴(kuò)展卡等等連在一起,
于是構(gòu)成了一個網(wǎng)狀系統(tǒng),比較簡單的如星狀網(wǎng),總線式。這里我們統(tǒng)一理解為網(wǎng)狀系統(tǒng)。
這些外設(shè)有的比較傻瓜(好像還很難找到一個傻瓜設(shè)備,比如并口設(shè)備吧),有些卻是相當(dāng)智能的,比如硬盤控制器,顯卡控制器,USB控制器等。無論是傻瓜外設(shè),還是智能外設(shè),他們構(gòu)成了這個網(wǎng)狀系統(tǒng)的節(jié)點。其中CPU本身也是這個網(wǎng)絡(luò)系統(tǒng)中的一個節(jié)點,只是它是一個關(guān)鍵節(jié)點。

現(xiàn)在就有個概念,比如internet網(wǎng)絡(luò)常常有人做類似的事情:一個大型的復(fù)雜任務(wù),一個人單獨計算任務(wù)太大,于是就有算法提出來,拿到internet上,靠這個巨型網(wǎng)上有能力的節(jié)點分散來計算。
從這個角度來看,CPU及智能外設(shè)組成的網(wǎng)絡(luò)就像這里internet上這個網(wǎng)絡(luò)類似,當(dāng)然規(guī)模不同。
由于現(xiàn)在大多數(shù)PC外設(shè)都具有智能性,這里智能性指其內(nèi)部有CPU。如果能將這些CPU適當(dāng)?shù)拈_放出來,而不是封閉的,只限于外設(shè)自己使用。那么這個網(wǎng)絡(luò)的計算能力將大大加強。如果說原來的CPU與外設(shè)是主仆關(guān)系,那么現(xiàn)在就變成了朋友關(guān)系,伙伴關(guān)系。

NV的CUDA實際就是基于這種類似的思想,把顯卡這個智能外設(shè)的GPU開放出來,可以配合CPU做一些工作。
隨著硬件價格的不斷下降,更多的外設(shè)也可以參與進(jìn)來。
不過正向NV所說,AGP給它提供了足夠的帶寬,再加上GPU的優(yōu)勢,所以GPU先行了一步。

話說回來,這種GPU與CPU配合的思想,實際上也不是什么新鮮玩意,如LS有人說的FPU的協(xié)處理。
但是無可否認(rèn)NV第一個提出CUDA?

[ 本帖最后由 fineamy 于 2009-1-12 01:27 編輯 ]
作者: rawa9999    時間: 2009-01-12 09:59
運算一個64M字節(jié)的Des編碼GPU比CPU快11.4倍,我覺得至少可以修改linux內(nèi)核,使一些任務(wù)偏向GPU運算,比如加密、壓縮等等
作者: prolj    時間: 2009-01-12 11:30
原帖由 cjaizss 于 2009-1-10 12:37 發(fā)表

GCC的優(yōu)化倒不是比較落后,而是初衷就不同。
GCC從一開始就要把它變成一個通用編譯器,通用編譯器的原則就是不偏袒哪個處理器。如果要在哪個處理器上實現(xiàn)特殊的處理,那幾乎是哪個CPU公司要用,那么公司自己 ...

Pro64和LLVM都是通用的啊,Open64現(xiàn)在支持的Arch只有x86,x64,IA64,MIPS和CUDA,LLVM主流的Arch都支持,包括Cell。LLVM通用到還支持JIT和bytecode虛擬機(jī)了,并且CG算法、寄存器分配算法...都是很容易替換的。
三個編譯器都在發(fā)展,設(shè)計和實現(xiàn)上各有特點,有些細(xì)節(jié)上都有對方的影子。
作者: beepbug    時間: 2009-01-13 18:30
原帖由 rawa9999 于 2009-1-11 18:17 發(fā)表
并行處理是多個處理核心同時具備統(tǒng)一的指令集,協(xié)處理和主處理器擁有各自的指令集,這是最大的區(qū)別!指令調(diào)度則類似!

1)“并行處理是多個處理核心同時具備統(tǒng)一的指令集”,這是同構(gòu)多處理。各個處理器可以有不同的指令集,就叫異構(gòu)多處理。
2)對于傳統(tǒng)浮點協(xié)處理來說,CPU與FPU確實是完全不同的指令集。但是,這并不意味著協(xié)處理器與主處理器就必須是不同的指令集。像CUDA那樣的東西,我猜想,相同的矢量計算指令才能獲得較高的效率。
3)是并行處理,還是協(xié)處理,關(guān)鍵在于指令調(diào)度。
作者: rawa9999    時間: 2009-01-13 19:48
理論上的東西不想多說,現(xiàn)在說道多處理就是具備相同指令集的多處理器,不知道那些不同指令集的多處理有什么應(yīng)用?比如哪一款處理器是采用不同指令集的并行多處理?

[ 本帖最后由 rawa9999 于 2009-1-13 20:11 編輯 ]
作者: rawa9999    時間: 2009-01-13 20:02
CUDA如果跟CPU擁有完全一樣的指令集(注意是完全相同,你不能說都有mov指令就說處理器指令相同)也可以作為協(xié)處理器器出現(xiàn),但是那樣有必要嗎,相當(dāng)于增加了一個核心?處理器指令不同才會以協(xié)處理的方式出現(xiàn)!
理論是理論實際是實際,現(xiàn)在沒有相同指令集的協(xié)處理也沒有不同指令集的并行處理,所以才那樣說!

[ 本帖最后由 rawa9999 于 2009-1-13 20:50 編輯 ]
作者: cjaizss    時間: 2009-01-13 22:52
原帖由 rawa9999 于 2009-1-13 19:48 發(fā)表
理論上的東西不想多說,現(xiàn)在說道多處理就是具備相同指令集的多處理器,不知道那些不同指令集的多處理有什么應(yīng)用?比如哪一款處理器是采用不同指令集的并行多處理?

SMP和AMP。AMP的發(fā)展確實不像SMP發(fā)展的這么好倒是真。
SMP是對稱多處理,這是你所熟悉的方式。AMP是指非對稱多處理,非對稱多處理是指各核的結(jié)構(gòu)并非對稱,用處自然有區(qū)別,一般來說,指令集可能不一樣,但不排除也可以指令集一樣。
AMP如果采取指令集異構(gòu)的方式,可以最大程度發(fā)揮各核的優(yōu)勢所在,然而如果想真的最大程度發(fā)揮各核心的優(yōu)勢的話,難點卻很多,所以一直以來發(fā)展的不像SMP這么好。

[ 本帖最后由 cjaizss 于 2009-1-13 23:20 編輯 ]
作者: cjaizss    時間: 2009-01-13 23:04
協(xié)處理和并行不是同一回事,協(xié)處理的雙方是處于絕對的主從關(guān)系,協(xié)處理對于CPU來說就是一個計算工具,一個手下,雖然計算能力很強但是卻只有有限的作用。但AMP并行則不同,任何一個核,雖然不對稱,但是都是CPU的一分子,他們是一種完全的對等協(xié)作關(guān)系。AMP可以同構(gòu)也可以異構(gòu)。
作者: cjaizss    時間: 2009-01-13 23:09
SMP里每一個核被平等對待。但AMP不是。打個比方吧,一個AMP里有3個不同的核,一個核專門管中斷處理,一個核專門管平常任務(wù)的處理,另外一個核專門管調(diào)度等操作系統(tǒng)層面相關(guān)處理。
作者: rawa9999    時間: 2009-01-14 07:04
呵呵,頗多理論家,你說的非對稱多處理現(xiàn)在等同于CPU內(nèi)部的不同的計算單元,早期的CPU比較落后可能采用非對稱的方式,現(xiàn)在這種非對稱方式等同于CPU內(nèi)部的計算單元,現(xiàn)在說道并行多處理就是對稱并行多處理,對稱處理器利于程序的大規(guī)模部署,也有利于錯誤處理,所謂的AMP已經(jīng)被淘汰,或者說已經(jīng)集成進(jìn)一個CPU核心中了。協(xié)處理概念上是一個入口指令,相當(dāng)于一個子程序,但是否把它當(dāng)作主要運算工具完全取決于程序編寫者,一個子程序跟主程序指令集完全相同(功能相同)就沒有必要要這個子程序,故協(xié)處理器肯定與主處理器指令集不同。
作者: beepbug    時間: 2009-01-14 07:22
顯卡里的處理器,所計算的一大塊任務(wù)是標(biāo)量計算。CPU如果要做標(biāo)量,而GPU正好有空,就可以把這些計算轉(zhuǎn)移到GPU去。如果CPU的標(biāo)量計算指令和GPU的標(biāo)量計算指令正好一模一樣,那額外的開銷就只是“轉(zhuǎn)移”,不需要“轉(zhuǎn)換”。
我不懂理論,只是傻想想,應(yīng)該效率會高一點。
作者: rawa9999    時間: 2009-01-14 07:26
已經(jīng)說過了,兩個處理器都有mov指令就叫指令集相同嗎?都有矢量計算即使矢量計算指令一樣,也不能說兩個CPU的指令集相同!
作者: rawa9999    時間: 2009-01-14 07:37
__global__ static void sumOfSquares(int *num, int* result)
{
    int sum = 0;
    int i;
    for(i = 0; i < DATA_SIZE; i++) {
        sum += num * num;
    }
    *result = sum;
}


為什么說是否當(dāng)作主要計算單元完全取決于程序的編寫,如果你喜歡你完全可以在所有的函數(shù)前加上__global__讓顯卡一直運算,當(dāng)然這就如同嵌入式語言宿主雖然是調(diào)用嵌入程序的,但不能就說宿主語言就是主要語言,哪個是主要語言還要看代碼量。

說個題外話,顯卡計算機(jī)也不是不可能:
TESLA處理器以GPU為核心,外觀來看跟顯卡非常相似,只是沒有顯示輸出接口,我們可以理解為沒有視頻輸出接口的顯卡。而這種“顯卡”的主要作用就是,多塊并聯(lián),通過CUDA來進(jìn)行行業(yè)科學(xué)運算。和傳統(tǒng)服務(wù)器/工作站相比,塔式TESLA主機(jī)也有CPU等常規(guī)硬件,只是內(nèi)部有多塊“顯卡”組多路SLI,如圖所示。
    了解了基本的硬件構(gòu)成,對于熟悉CUDA的玩家來說,TESLA產(chǎn)品就非常好理解了,簡單來說就是“顯卡服務(wù)器”。通過多路顯卡的強大并行處理能力去使一些以往主要依靠CPU計算的領(lǐng)域大大提速,甚至使部分傳統(tǒng)依靠CPU無法完成的計算成為可能。
之前我們都曾經(jīng)了解過,由于顯卡的多個流處理器(例如GT200核心的240個SP)并行計算的機(jī)構(gòu),通過CUDA進(jìn)行某些領(lǐng)域應(yīng)用加速運算的時候可以比單純依靠CPU提升很多倍。例如PC玩家比較感興趣的視頻編碼加速、Photoshop運算提速等。不過TESLA針對的是行業(yè)計算領(lǐng)域,應(yīng)用重點領(lǐng)域自然會有所區(qū)隔。
    生命科學(xué): 用于癌癥研究的Autodock軟件提速,據(jù)美國國家癌癥研究所報告,模擬速度提升高達(dá)12倍,將等待結(jié)果的時間從2個小時縮短至10分鐘。AutoDock的作者、美國斯克利普斯研究所Garrett Morris博士表示:“從長遠(yuǎn)角度來講,我們只希望能夠通過Silicon InformATIcs公司的產(chǎn)品來加速找到各種疾病的治療新藥。其中包括從癌癥到阿耳茨海默氏癥、從艾滋病到瘧疾等各種疾病。”
    科學(xué): 美國國家大氣研究中心氣象研究和預(yù)報(WRF) 模型計算,WRF的1%已通過CUDA實現(xiàn),整體速度提升了20%,節(jié)省了一個星期的分析時間。

[ 本帖最后由 rawa9999 于 2009-1-14 08:50 編輯 ]
作者: cjaizss    時間: 2009-01-14 09:05
原帖由 rawa9999 于 2009-1-14 07:04 發(fā)表
呵呵,頗多理論家,你說的非對稱多處理現(xiàn)在等同于CPU內(nèi)部的不同的計算單元,早期的CPU比較落后可能采用非對稱的方式,現(xiàn)在這種非對稱方式等同于CPU內(nèi)部的計算單元,現(xiàn)在說道并行多處理就是對稱并行多處理,對稱 ...

先別說被淘汰還是沒有被淘汰.其實是沒有被淘汰的,現(xiàn)在研究AMP的依然很多,我也認(rèn)為未來會是AMP的市場.AMP雖然提出很早,但是因為其一些難度,一直沒有得到很好的發(fā)展,但不是說就不去發(fā)展它了,這是一個重要的架構(gòu).雖然是商業(yè)決定一切,但是在大家?guī)缀醵荚赟MP上大量努力的時候,解決了AMP的很多問題自然也會帶來很大的商業(yè)利益.呵呵,說AMP比較落后,那么我只能說你還沒明白什么叫AMP,可能還沒怎么聽說過吧,呵呵.在此之前,先多學(xué)學(xué),多想想
作者: cjaizss    時間: 2009-01-14 09:11
原帖由 rawa9999 于 2009-1-14 07:26 發(fā)表
已經(jīng)說過了,兩個處理器都有mov指令就叫指令集相同嗎?都有矢量計算即使矢量計算指令一樣,也不能說兩個CPU的指令集相同!

誰也沒這么說過.只是你認(rèn)為我們是這么想的.另外,指令集架構(gòu)(ISA)相同是什么意思?誰跟你說兩個處理器都有mov指令就叫ISA相同的?
作者: rawa9999    時間: 2009-01-14 09:15
我所指的被淘汰是在CPU內(nèi)的非對稱多處理,并沒有說非對稱多處理機(jī),即使是多處理機(jī)也不是主流,一個發(fā)展10年的技術(shù)跟一個發(fā)展幾十年的技術(shù)很難說先進(jìn)。不用什么人身攻擊,你說出一款上市的非對稱多處理器我就認(rèn)輸,否則就是空談!的確要多看看現(xiàn)在的東西,而不是看舊書!

指令集架構(gòu)一樣也不代表指令集相同,既然說相同的指令集當(dāng)然 包括一系列 opcodes(機(jī)器語言)的規(guī)格相同。

[ 本帖最后由 rawa9999 于 2009-1-14 09:25 編輯 ]
作者: cjaizss    時間: 2009-01-14 09:27
我承認(rèn)現(xiàn)在CPU上近來很少采用這種架構(gòu)了,但是并不是說它就被淘汰了.AMP的核上軟件如果要真正發(fā)揮其優(yōu)勢,很難寫,而不像SMP基于一個對等的對待,平等的調(diào)度,注意互鎖就可以了.但是不是因為這樣,我們就不去研究它了,因為人們其實從來都沒有真正放棄過這種結(jié)構(gòu),這種結(jié)構(gòu)甚至也根本不需要把每個核設(shè)計的功能完備,這樣也便于縮減單核的IC尺寸.
作者: cjaizss    時間: 2009-01-14 09:31
一個完整的指令集架構(gòu)是把機(jī)器級操作碼包含進(jìn)去的
作者: rawa9999    時間: 2009-01-14 09:37
非對稱處理可能應(yīng)用于實時系統(tǒng)中,飛機(jī)控制、車床控制,但現(xiàn)在這些地方不需要大規(guī)模的并行計算,一個處理器就解決了,并行計算至少在現(xiàn)在肯定是對稱的處理器,確實很多科研單位可能研究非對稱處理機(jī),但是非對稱的并行處理器現(xiàn)在沒必要了,都是作為處理器的不同工作單元處理不一樣的指令。
我所說的都是一個處理器范圍內(nèi),不包括那種多個CPU的并行多處理機(jī)。

[ 本帖最后由 rawa9999 于 2009-1-14 09:38 編輯 ]
作者: cjaizss    時間: 2009-01-14 09:44
原帖由 rawa9999 于 2009-1-14 09:37 發(fā)表
非對稱處理可能應(yīng)用于實時系統(tǒng)中,飛機(jī)控制、車床控制,但現(xiàn)在這些地方不需要大規(guī)模的并行計算,一個處理器就解決了,并行計算至少在現(xiàn)在肯定是對稱的處理器,確實很多科研單位可能研究非對稱處理機(jī),但是非對稱 ...

你是覺得如果要搭非對稱處理機(jī),用對稱架構(gòu)來做多核心處理器,然后各處理器做個非對稱的內(nèi)部分布式操作是比較好的方式了?
作者: rawa9999    時間: 2009-01-14 09:49
這個確實不知道!反正現(xiàn)在為了便于部署大規(guī)模的程序,不采用非對稱并行處理方式,這個模式包括非對稱并行處理機(jī)!
一個多核的對稱多處理器也肯定有一個單一的控制各個核心調(diào)度單元。

[ 本帖最后由 rawa9999 于 2009-1-14 09:54 編輯 ]
作者: cjaizss    時間: 2009-01-14 10:06
這也是因為SMP的調(diào)度、協(xié)作方式比較成熟了。AMP帶來的問題顯然是有的,比如如果給每個核分配死了任務(wù),那么很容易導(dǎo)致一個核經(jīng)常閑置,于是效率又上不去了,所以還是要引入每個核不僅要干自己的任務(wù),還要有些處理別的任務(wù)的能力,而它本身又不是一個如同SMP設(shè)計上的對等。于是,一個理想的AMP的多核處理器,硬軟在設(shè)計的時候應(yīng)該是一體的,硬件設(shè)計的問題和軟件設(shè)計的問題要解決都很郁悶。但是AMP從提出開始到現(xiàn)在,都被認(rèn)為這種結(jié)構(gòu)可以構(gòu)造出比較高的效率,因為理想下的AMP的每個核可以縮減其功能,于是也縮減其IC面積,于是可以構(gòu)造更多的核,但是真正要達(dá)到理想?yún)s很難,沒有人現(xiàn)在真正知道怎么設(shè)計,它的歷史比SMP提出更早,但除了一些小型的應(yīng)用和早期的一些小型機(jī)的處理器設(shè)計外,還是主要躺在實驗室里。
作者: beepbug    時間: 2009-01-14 17:28
原帖由 rawa9999 于 2009-1-14 07:26 發(fā)表
已經(jīng)說過了,兩個處理器都有mov指令就叫指令集相同嗎?都有矢量計算即使矢量計算指令一樣,也不能說兩個CPU的指令集相同!

對不起,你沒仔細(xì)看我的帖。我只是指出,并非在理論上協(xié)處理方式里主與協(xié)的指令必須不同。過去的浮點協(xié)處理器,指令集倒是完全不同的。但是,這并不意味著這是協(xié)處理的特點。
作者: bluesea666    時間: 2010-08-07 00:46
這么多大牛,學(xué)習(xí)了.
作者: rawa9999    時間: 2010-08-07 01:46
天河就是異構(gòu)多處理機(jī),IBM最近封存的cell芯片就是異構(gòu)多處理芯片。




歡迎光臨 Chinaunix (http://www.72891.cn/) Powered by Discuz! X3.2