日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OpenCL2.0特性之SVM

發(fā)布時間:2025/7/25 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenCL2.0特性之SVM 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

from: http://blog.csdn.net/hdanbang/article/details/50198415

在OpenCL2.0中,增加了SVM(shared virtual memory)的特性。在開始講解SVM之前,我們先用圖片來看下OpenCL1.2中主機與設(shè)備端的地址空間:


? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?圖1 OpenCL1.2中主機與設(shè)備端地址空間

? ? ? ? 從圖1可以看到,主機與設(shè)備具有不同的地址空間,各自需要對各自的內(nèi)存進(jìn)行管理。彼此之間不能直接訪問對方的地址空間。所以,兩者之間數(shù)據(jù)需要通信的話,只能把數(shù)據(jù)在主機與設(shè)備間來回拷貝,或者把設(shè)備端地址空間map /unmap到主機端。對于這樣一種模式下,如果我們要想在設(shè)備端處理主機端的鏈表、樹之類的數(shù)據(jù)。我們只能鞭長莫及!對于異構(gòu)平臺,我們就真的沒辦法愉快地處理鏈表之類的數(shù)據(jù)么?技術(shù)是發(fā)展的,有需求就必有技術(shù)來解決!

? ? ?從CUDA6以后,GPU與CPU之間支持統(tǒng)一尋址(Unified Memory) ?,GPU與CPU間可以直接訪問彼此的地址空間,不需要我們?nèi)藶榈臄?shù)據(jù)拷貝。這給異構(gòu)計算又帶入了一個新的高度,我們可以處理鏈表數(shù)據(jù)啦!既然CUDA都開始支持了,OpenCL也不能落后呀。在OpenCL2.0中,增加了共享虛擬內(nèi)存(shared virtual memory),我們還是以一張圖片來形象的描述:


? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖2?OpenCL2.0中主機與設(shè)備端地址空間

? ? ? 從圖2可以看到,圖1中原來兩個彼此不相交的地址空間現(xiàn)在有個公共交集,這個公共交集就是SVM.。對于SVM的地址空間,主機和設(shè)備都可以直接訪問,媽媽再也不用擔(dān)心異構(gòu)平臺的數(shù)據(jù)訪問方式了!

說完了SVM的意義,我們來聊聊SVM的具體細(xì)節(jié)。

? ? ? ? 對于SVM的創(chuàng)建,OpenCL2.0中有兩種方式,一種緩沖分配(buffer allocation),另一種是系統(tǒng)分配(System allocation):

? ? ? ? 1、所謂緩沖分配,就是我們使用OpenCL API函數(shù)clSVMAlloc來分配,然后使用clSetKernelArgSVMPointer把分配的SVM作為內(nèi)核參數(shù)傳入

? ? ? ? ?2、所謂系統(tǒng)分配,就是在主機端,我們可以使用malloc,new之類的系統(tǒng)分配內(nèi)存函數(shù)來分配空間,然后使用clSetKernelArgSVMPointer把分配的SVM作為內(nèi)核參數(shù)傳入。

? ? ? ? 對于SVM的類型,OpenCL2.0也是有兩種類型:一種是粗粒度;另一種是細(xì)粒度:

? ? ? ? 1、粗粒度SVM:共享發(fā)生在OpenCL緩沖內(nèi)存對象區(qū)域粒度。在同步點強制內(nèi)存一致性,使用map/unmap命令來更新主機與設(shè)備間的數(shù)據(jù)。粗粒度的SVM與OpenCL1.2中使用緩沖對象類似,不過唯一不同的是:我們不需要來回拷貝數(shù)據(jù),設(shè)備與主機可以直接訪問對方的數(shù)據(jù),這才是重點!

? ? ? ?2、所謂細(xì)粒度SVM:共享發(fā)生在OpenCL緩沖對象單個的加載/存儲粒度。內(nèi)存一致性在同步點得到保證。

? ? ? ? 好,結(jié)合SVM分配方式和SVM類型,可以把OpenCL2.0中的SVM分為:粗粒度緩沖SVM,細(xì)粒度緩沖SVM,細(xì)粒度系統(tǒng)SVM。(木有粗粒度系統(tǒng)SVM)。對于你的OpenCL設(shè)備(請確保你的設(shè)備支持OpenCL2.0),到底支持上述三種的哪三種呢?我們可以通過如下代碼查詢:

? ? ? ? ?

[cpp] view plaincopy
  • ????????cl_device_svm_capabilities?svm;??
  • clGetDeviceInfo(*device,CL_DEVICE_SVM_CAPABILITIES,sizeof(svm),&svm,NULL);??
  • if(svm&CL_DEVICE_SVM_FINE_GRAIN_SYSTEM)??
  • ????printf("CL_DEVICE_SVM_FINE_GRAIN_SYSTEM\n");??
  • if(svm&CL_DEVICE_SVM_FINE_GRAIN_BUFFER)??
  • ????printf("CL_DEVICE_SVM_FINE_GRAIN_BUFFER\n");??
  • if(svm&CL_DEVICE_SVM_COARSE_GRAIN_BUFFER)??
  • ????printf("CL_DEVICE_SVM_COARSE_GRAIN_BUFFER\n");??
  • ? ? ? ?在我的AMD A10-7400 Radeon R6平臺上,當(dāng)設(shè)備為CL_DEVICE_TYPE_GPU時,輸出為:

    [html] view plaincopy
  • CL_DEVICE_SVM_FINE_GRAIN_BUFFER??
  • CL_DEVICE_SVM_COARSE_GRAIN_BUFFER??
  • ? ? ? 對于細(xì)粒度系統(tǒng)SVM,AMD當(dāng)前是不支持的。

    ? ? ? 粗粒度緩沖SVM和細(xì)粒度緩沖SVM大致用法,如下表格所示

    Coarse-grained SVM
    (Map/Unmap is requred)fine-grained SVM buffer
    [cpp] view plaincopy
  • float*?p?=?(float*)clSVMAlloc(…);??
  • ??
  • clEnqueueSVMMap(…,??
  • ????CL_TRUE,??//?block?until?map?is?done??
  • ????p,?…);??
  • ??
  • ??
  • //?Initialize?SVM?buffer??
  • p[i]?=?…;??
  • ??
  • clEnqueueSVMUnmap(…,?p,?…);??
  • ??
  • clEnqueueNDRange(…);??
  • ??
  • clEnqueueSVMMap(…,??
  • ????CL_TRUE,??//?block?until?map?is?done??
  • ????p,?…);??
  • ??
  • //?Read?the?data?produced?by?the?kernel??
  • …?=?p[i];??
  • ??
  • clEnqueueSVMUnmap(…,?p,?…);??
  • [cpp] view plaincopy
  • float*?p?=?(float*)clSVMAlloc(…);??
  • ??
  • ??
  • ??
  • ??
  • ??
  • ??
  • ??
  • //?Initialize?SVM?buffer??
  • p[i]?=?…;??
  • ??
  • ??
  • ??
  • clEnqueueNDRange(…);??
  • ??
  • clFinish(…);??
  • ??
  • ??
  • ??
  • ??
  • //?Read?the?data?produced?by?the?kernel??
  • …?=?p[i];???

  • 具體的SVM例子,請移步這里

    OpenCL2.0 SVM的講解,就到這吧!

    ?ps:最后嘮叨一句:對于SVM,方便了我們碼農(nóng)編程,從硬件上來說,OpenCL設(shè)備與主機不一定是共享物理內(nèi)存的。

    總結(jié)

    以上是生活随笔為你收集整理的OpenCL2.0特性之SVM的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 久久美利坚| 影音先锋黄色资源 | 嫩草av久久伊人妇女超级a | 中国色老太hd | 欧美综合网站 | 深夜福利视频在线观看 | 91搞| 三级性生活片 | 久久久久久福利 | 88av在线视频| 久久久99精品免费观看 | 国产一区二区三区中文字幕 | 中文字幕av不卡 | 男插女视频网站 | 屁股夹体温计调教play | 激情成人av| av中文字幕一区二区 | 综合久久五月天 | 亚洲天堂成人在线 | 亚洲视频精品在线观看 | 国产精品久久久久久一区二区 | 国产精选毛片 | www欧美在线 | 18女人毛片 | 欧美激情区 | 插入综合网 | 69堂精品| 91视频合集 | 欧美性一区二区三区 | 久久久久精彩视频 | 成人激情视频在线 | 国模福利视频 | 91精品黄色 | 97久久国产精品 | 亚洲三级免费 | 亚洲爆乳无码精品aaa片蜜桃 | 中文字幕一区久久 | 四虎黄色网 | 亚洲精品国产福利 | 日韩一级理论片 | 国产视频综合在线 | 日操夜操天天操 | 插久久| 调教女m荡骚贱淫故事 | 亚欧美在线 | 天天操女人 | av无码久久久久久不卡网站 | 福利小视频在线 | 色婷婷av国产精品 | 国产精品一区二区三区四区在线观看 | 无码日韩精品一区二区 | 大香伊人久久 | 国产欧美三级 | 免费看的黄色录像 | 91夜色视频 | 欧美天堂在线观看 | 亚洲天堂一级 | 国产精品综合久久 | 综合视频一区 | 欧洲精品在线观看 | 老司机深夜福利网站 | 新红楼梦2005锦江版高清在线观看 | 欧美理伦片在线播放 | 日韩特黄毛片 | 亚洲一级av毛片 | 爱爱高潮视频 | 亚洲国产精品av | 国产东北真实交换多p免视频 | 日本视频一区二区 | 97久久精品人人澡人人爽 | 黄页网站免费在线观看 | 亚洲欧美高清 | 女性喷水视频 | 日韩一级中文字幕 | 青青草视频在线免费观看 | 丰满护士巨好爽好大乳 | 日本高清三区 | 人妻精油按摩bd高清中文字幕 | 久热中文字幕在线 | 猛男大粗猛爽h男人味 | 国产视频久久 | 女性私密整形视频 | 体感预报日剧 | 黄色一级视频免费看 | 亚洲精品资源在线 | 精品123区 | 国产人妻精品一区二区三区 | 羞羞网站在线看 | 韩日黄色 | 国产高清视频在线 | 麻豆精品a∨在线观看 | 亚洲在线观看一区 | 久色91| 久草91| 青草草在线观看 | 日韩干 | 欧美三级网 | 吊侵犯の奶水授乳羞羞漫画 | 五月天青青草 |