NVIDIA CUDA計(jì)算統(tǒng)一設(shè)備架構(gòu)參考手冊(cè)2.0_第1頁(yè)
NVIDIA CUDA計(jì)算統(tǒng)一設(shè)備架構(gòu)參考手冊(cè)2.0_第2頁(yè)
NVIDIA CUDA計(jì)算統(tǒng)一設(shè)備架構(gòu)參考手冊(cè)2.0_第3頁(yè)
NVIDIA CUDA計(jì)算統(tǒng)一設(shè)備架構(gòu)參考手冊(cè)2.0_第4頁(yè)
NVIDIA CUDA計(jì)算統(tǒng)一設(shè)備架構(gòu)參考手冊(cè)2.0_第5頁(yè)
已閱讀5頁(yè),還剩246頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、2008年6月參考手冊(cè)nvidia cuda計(jì)算統(tǒng)一設(shè)備架構(gòu)unified目錄ii1 runtimeapireference11.1 devicemanagement rt 21.1.1 cudagetdevicecount 31.1.2 cudasetdevice 41.1.3 cudagetdevice 51.1.4 cudagetdeviceproperties 61.1.5 cudachoosedevice 81.2 threadmanagement rt 91.2.1 cudathreadsynchronize 101.2.2 cudathreadexit 111.3 streamm

2、anagement rt 121.3.1 cudastreamcreate 131.3.2 cudastreamquery 141.3.3 cudastreamsynchronize 151.3.4 cudastreamdestroy 161.4 eventmanagement rt 171.4.1 cudaeventcreate 181.4.2 cudaeventrecord 191.4.3 cudaeventquery 201.4.4 cudaeventsynchronize 211.4.5 cudaeventdestroy 221.4.6 cudaeventelapsedtime 231

3、.5 memorymanagement rt 241.5.1 cudamalloc 251.5.2 cudamallocpitch 261.5.3 cudafree 271.5.4 cudamallocarray 281.5.5 cudafreearray 291.5.6 cudamallochost 301.5.7 cudafreehost 311.5.8 cudamemset 321.5.9 cudamemset2d 33ii1.5.10 cudamemcpy 341.5.11 cudamemcpy2d 351.5.12 cudamemcpytoarray 361.5.13 cudamem

4、cpy2dtoarray 371.5.14 cudamemcpyfromarray 381.5.15 cudamemcpy2dfromarray 391.5.16 cudamemcpyarraytoarray 401.5.17 cudamemcpy2darraytoarray 411.5.18 cudamemcpytosymbol 421.5.19 cudamemcpyfromsymbol 431.5.20 cudagetsymboladdress 441.5.21 cudagetsymbolsize 451.5.22 cudamalloc3d 461.5.23 cudamalloc3darr

5、ay 481.5.24 cudamemset3d 501.5.25 cudamemcpy3d 521.6 texturereferencemanagement rt 541.6.1 lowlevelapi 551.6.2 highlevelapi 631.7 executioncontrol rt 681.7.1 cudaconfigurecall 691.7.2 cudalaunch 701.7.3 cudasetupargument 711.8 openglinteroperability rt 721.8.1 cudaglsetgldevice 731.8.2 cudaglregiste

6、rbufferobject 741.8.3 cudaglmapbufferobject 751.8.4 cudaglunmapbufferobject 761.8.5 cudaglunregisterbufferobject 771.9 direct3dinteroperability rt 781.9.1 cudad3d9setdirect3ddevice 791.9.2 cudad3d9getdirect3ddevice 801.9.3 cudad3d9registerresource 811.9.4 cudad3d9unregisterresource 83ii1.9.5 cudad3d

7、9mapresources 841.9.6 cudad3d9unmapresources 851.9.7 cudad3d9resourcesetmapflags 861.9.8 cudad3d9resourcegetsurfacedimensions 881.9.9 cudad3d9resourcegetmappedpointer 891.9.10 cudad3d9resourcegetmappedsize 901.9.11 cudad3d9resourcegetmappedpitch 911.9.12 cudad3d9begin 921.9.13 cudad3d9end 931.9.14 c

8、udad3d9registervertexbuffer 941.9.15 cudad3d9mapvertexbuffer 951.9.16 cudad3d9unmapvertexbuffer 961.9.17 cudad3d9unregistervertexbuffer 971.9.18 cudad3d9getdevice 981.10 errorhandling rt 991.10.1 cudagetlasterror 1001.10.2 cudageterrorstring 1022 driverapireference1032.1 initialization 1042.1.1 cuin

9、it 1052.2 devicemanagement 1062.2.1 cudevicecomputecapability 1072.2.2 cudeviceget 1082.2.3 cudevicegetattribute 1092.2.4 cudevicegetcount 1112.2.5 cudevicegetname 1122.2.6 cudevicegetproperties 1132.2.7 cudevicetotalmem 1152.3 contextmanagement 1162.3.1 cuctxattach 1172.3.2 cuctxcreate 1182.3.3 cuc

10、txdetach 1202.3.4 cuctxgetdevice 121v2.3.5 cuctxpopcurrent 1222.3.6 cuctxpushcurrent 1232.3.7 cuctxsynchronize 1242.4 modulemanagement 1252.4.1 cumodulegetfunction 1262.4.2 cumodulegetglobal 1272.4.3 cumodulegettexref 1282.4.4 cumoduleload 1292.4.5 cumoduleloaddata 1302.4.6 cumoduleloadfatbinary 131

11、2.4.7 cumoduleunload 1322.5 streammanagement 1332.5.1 custreamcreate 1342.5.2 custreamdestroy 1352.5.3 custreamquery 1362.5.4 custreamdestroy 1372.6 eventmanagement 1382.6.1 cueventcreate 1392.6.2 cueventdestroy 1402.6.3 cueventelapsedtime 1412.6.4 cueventquery 1422.6.5 cueventrecord 1432.6.6 cueven

12、tsynchronize 1442.7 executioncontrol 1452.7.1 culaunch 1462.7.2 culaunchgrid 1472.7.3 cuparamsetsize 1482.7.4 cuparamsettexref 1492.7.5 cuparamsetf 1502.7.6 cuparamseti 1512.7.7 cuparamsetv 1522.7.8 cufuncsetblockshape 1532.7.9 cufuncsetsharedsize 1542.8 memorymanagement 155v2.8.1 cuarraycreate 1562

13、.8.2 cuarraydestroy 1582.8.3 cuarraygetdescriptor 1592.8.4 cumemalloc 1602.8.5 cumemallochost 1612.8.6 cumemallocpitch 1622.8.7 cumemfree 1642.8.8 cumemfreehost 1652.8.9 cumemgetaddressrange 1662.8.10 cumemgetinfo 1672.8.11 cumemcpy2d 1682.8.12 cumemcpy3d 1712.8.13 cumemcpyatoa 1742.8.14 cumemcpyato

14、d 1752.8.15 cumemcpyatoh 1762.8.16 cumemcpydtoa 1772.8.17 cumemcpydtod 1782.8.18 cumemcpydtoh 1792.8.19 cumemcpyhtoa 1802.8.20 cumemcpyhtod 1812.8.21 cumemset 1822.8.22 cumemset2d 1832.9 texturereferencemanagement 1842.9.1 cutexrefcreate 1852.9.2 cutexrefdestroy 1862.9.3 cutexrefgetaddress 1872.9.4

15、cutexrefgetaddressmode 1882.9.5 cutexrefgetarray 1892.9.6 cutexrefgetfiltermode 1902.9.7 cutexrefgetflags 1912.9.8 cutexrefgetformat 1922.9.9 cutexrefsetaddress 1932.9.10 cutexrefsetaddressmode 1942.9.11 cutexrefsetarray 195v2.9.12 cutexrefsetfiltermode 1962.9.13 cutexrefsetflags 1972.9.14 cutexrefs

16、etformat 1982.10 openglinteroperability 1992.10.1 cuglctxcreate 2002.10.2 cuglinit 2012.10.3 cuglmapbufferobject 2022.10.4 cuglregisterbufferobject 2032.10.5 cuglunmapbufferobject 2042.10.6 cuglunregisterbufferobject 2052.11 direct3dinteroperability 2062.11.1 cud3d9ctxcreate 2072.11.2 cud3d9getdirec

17、t3ddevice 2082.11.3 cud3d9registerresource 2092.11.4 cud3d9unregisterresource 2112.11.5 cud3d9mapresources 2122.11.6 cud3d9unmapresources 2132.11.7 cud3d9resourcesetmapflags 2142.11.8 cud3d9resourcegetsurfacedimensions 2152.11.9 cud3d9resourcegetmappedpointer 2162.11.10 cud3d9resourcegetmappedsize 2

18、172.11.11 cud3d9resourcegetmappedpitch 2182.11.12cud3d9begin 2192.11.13cud3d9end 2202.11.14cud3d9getdevice 2212.11.15cud3d9mapvertexbuffer 2222.11.16 cud3d9registervertexbuffer 2232.11.17 cud3d9unmapvertexbuffer 2242.11.18 cud3d9unregistervertexbuffer 2253 atomicfunctions2263.1 arithmeticfunctions 2

19、273.1.1 atomicadd 2283.1.2 atomicsub 229vii3.1.3 atomicexch 2303.1.4 atomicmin 2313.1.5 atomicmax 2323.1.6 atomicinc 2333.1.7 atomicdec 2343.1.8 atomiccas 2353.2 bitwisefunctions 2363.2.1 atomicand 2373.2.2 atomicor 2383.2.3 atomicxor 239vii1 runtimeapireference名稱(chēng)運(yùn)行時(shí)api參考說(shuō)明有兩種級(jí)別的運(yùn)行時(shí)api。低級(jí)api(cuda_ru

20、ntime_api.h)是一種c風(fēng)格的接口,不需要使用nvcc進(jìn)行編譯。高級(jí)api(cuda_runtime.h)是一種c+風(fēng)格的接口,構(gòu)建于低級(jí)api之上。它包裝了部分低級(jí)api例程,使用過(guò)載、參考和默認(rèn)參數(shù)。這些包裝器可以通過(guò)c+代碼使用,也可使用任何c+編譯器進(jìn)行編譯。高級(jí)api還具有一些特定于cuda的包裝器,包裝處理符號(hào)、紋理和設(shè)備功能的低級(jí)例程。這些包裝器需要使用nvcc,因?yàn)樗鼈円蕾?lài)于編譯器生成的代碼。例如,只有使用nvcc編譯的源代碼才可以執(zhí)行配置語(yǔ)法來(lái)調(diào)用內(nèi)核。參見(jiàn)設(shè)備管理,線程管理,流管理,事件管理,執(zhí)行管理,存儲(chǔ)器管理,紋理引用管理,opengl互操作性,direct3d

21、互操作性,錯(cuò)誤處理1.1 devicemanagement rt 名稱(chēng)設(shè)備管理說(shuō)明本節(jié)描述cuda運(yùn)行時(shí)應(yīng)用程序編程接口。cudagetdevicecountcudasetdevicecudagetdevicecudagetdevicepropertiescudachoosedevice參見(jiàn)設(shè)備管理,線程管理,流管理,事件管理,執(zhí)行管理,存儲(chǔ)器管理,紋理引用管理,opengl互操作性,direct3d互操作性,錯(cuò)誤處理1.1.1 cudagetdevicecount名稱(chēng)cudagetdevicecount 返回具有計(jì)算能力的設(shè)備的數(shù)量概要cudaerror_t cudagetdevicecou

22、nt( int* count )說(shuō)明以*count形式返回可用于執(zhí)行的計(jì)算能力大于等于1.0的設(shè)備數(shù)量。如果不存在此類(lèi)設(shè)備,cudagetdevicecount ()將返回1,且設(shè)備0僅支持設(shè)備模擬模式。由于此設(shè)備能夠模擬所有硬件特性,因此該設(shè)備將報(bào)告9999種主要和次要計(jì)算能力。返回值相關(guān)返回值:cudasuccess注意,如果之前是異步啟動(dòng),該函數(shù)可能返回錯(cuò)誤碼。參見(jiàn)cudagetdevice,cudasetdevice,cudagetdeviceproperties,cudachoosedevice1.1.2 cudasetdevice名稱(chēng)cudasetdevice 設(shè)置設(shè)備以供gpu執(zhí)

23、行使用概要cudaerror_t cudasetdevice(int dev)說(shuō)明將dev記錄為活動(dòng)主線程將執(zhí)行設(shè)備碼的設(shè)備。返回值相關(guān)返回值:cudasuccesscudaerrorinvaliddevice注意,如果之前是異步啟動(dòng),該函數(shù)可能返回錯(cuò)誤碼。參見(jiàn)cudagetdevicecount,cudagetdevice,cudagetdeviceproperties,cudachoosedevice1.1.3 cudagetdevice名稱(chēng)cudagetdevice 返回當(dāng)前使用的設(shè)備概要cudaerror_t cudagetdevice(int *dev)說(shuō)明以*dev形式返回活動(dòng)主線

24、程執(zhí)行設(shè)備碼的設(shè)備。返回值相關(guān)返回值cudasuccess注意,如果之前是異步啟動(dòng),該函數(shù)可能返回錯(cuò)誤碼。參見(jiàn)cudagetdevicecount,cudasetdevice,cudagetdeviceproperties,cudachoosedevice51.1.4 cudagetdeviceproperties名稱(chēng)cudagetdeviceproperties 返回關(guān)于計(jì)算設(shè)備的信息概要cudaerror_t cudagetdeviceproperties( struct cudadeviceprop* prop,int dev )說(shuō)明以*prop形式返回設(shè)備dev的屬性。cudadevi

25、ceprop結(jié)構(gòu)定義如下:struct cudadeviceprop char name 256;size_t totalglobalmem; size_t sharedmemperblock; int regsperblock;int warpsize;size_t mempitch;int maxthreadsperblock; int maxthreadsdim 3; int maxgridsize 3; size_t totalconstmem; int major;int minor;int clockrate;size_t texturealignment; int deviceo

26、verlap; int multiprocessorcount;其中:name用于標(biāo)識(shí)設(shè)備的ascii字符串;totalglobalmem設(shè)備上可用的全局存儲(chǔ)器的總量,以字節(jié)為單位;sharedmemperblock線程塊可以使用的共享存儲(chǔ)器的最大值,以字節(jié)為單位;多處理器上的所有線程塊可以同時(shí)共享這些存儲(chǔ)器;regsperblock線程塊可以使用的32位寄存器的最大值;多處理器上的所有線程塊可以同時(shí)共享這些寄存器;warpsize按線程計(jì)算的warp塊大小;mempitch允許通過(guò)cudamallocpitch()為包含存儲(chǔ)器區(qū)域的存儲(chǔ)器復(fù)制函數(shù)分配的最大間距(pitch),以字節(jié)為單位;m

27、axthreadsperblock每個(gè)塊中的最大線程數(shù):maxthreadsdim3塊各個(gè)維度的最大值:maxgridsize3網(wǎng)格各個(gè)維度的最大值;totalconstmem設(shè)備上可用的不變存儲(chǔ)器總量,以字節(jié)為單位; major,minor定義設(shè)備計(jì)算能力的主要修訂號(hào)和次要修訂號(hào);clockrate以千赫為單位的時(shí)鐘頻率;texturealignment對(duì)齊要求;與texturealignment字節(jié)對(duì)齊的紋理基址無(wú)需對(duì)紋理取樣應(yīng)用偏移;deviceoverlap如果設(shè)備可在主機(jī)和設(shè)備之間并發(fā)復(fù)制存儲(chǔ)器,同時(shí)又能執(zhí)行內(nèi)核,則此值為 1;否則此值為 0;multiprocessorcount設(shè)

28、備上多處理器的數(shù)量。返回值相關(guān)返回值:cudasuccesscudaerrorinvaliddevice注意,如果之前是異步啟動(dòng),該函數(shù)可能返回錯(cuò)誤碼。參見(jiàn)cudagetdevice count,cuda getdevice,cudasetdevice,cuda choosedevice71.1.5 cudachoosedevice名稱(chēng)cudachoosedevice 選擇最匹配標(biāo)準(zhǔn)的計(jì)算設(shè)備概要cudaerror_t cudachoosedevice( int* dev,const struct cudadeviceprop* prop )說(shuō)明以*dev的形式返回屬性與*prop的匹配程度最

29、高的設(shè)備。返回值相關(guān)返回值:cudasuccess cudaerrorinvalid value注意,如果之前是異步啟動(dòng),該函數(shù)可能返回錯(cuò)誤碼。參見(jiàn)cudagetdevice count,cuda getdevice,cudasetdevice,cuda getdeviceproperties81.2 threadmanagement rt 名稱(chēng)線程管理說(shuō)明本節(jié)描述cuda運(yùn)行時(shí)應(yīng)用程序編程接口。cuda threadsynchronizecuda threadexit參見(jiàn)設(shè)備管理,線程管理,流管理,事件管理,執(zhí)行管理,存儲(chǔ)器管理,紋理引用管理,opengl互操作性,direct3d互操作性,

30、錯(cuò)誤處理91.2.1 cudathreadsynchronize名稱(chēng)cudathreadsynchronize 等待計(jì)算設(shè)備完成概要cudaerror_t cudathreadsynchronize (void)說(shuō)明在設(shè)備完成所有之前請(qǐng)求的任務(wù)之前,一直阻塞操作。如果之前的任務(wù)失敗,cudathreadsynchronize()將返回一個(gè)錯(cuò)誤。返回值相關(guān)返回值:cudasuccess注意,如果之前是異步啟動(dòng),該函數(shù)可能返回錯(cuò)誤碼。參見(jiàn)cudathreadexit101.2.2 cudathreadexit名稱(chēng)cudathreadexit 從cuda啟動(dòng)中退出并清除概要cudaerror_t c

31、udathreadexit (void)說(shuō)明顯式清除與調(diào)用主線程有關(guān)的運(yùn)行時(shí)相關(guān)資源。后續(xù)的任何api調(diào)用都將重新初始化運(yùn)行時(shí)。在主線程退出時(shí),將隱式調(diào)用cudathreadexit ()。返回值相關(guān)返回值:cudasuccess注意,如果之前是異步啟動(dòng),該函數(shù)可能返回錯(cuò)誤碼。參見(jiàn)cudathreadsynchronize111.3 streammanagement rt 名稱(chēng)流管理說(shuō)明本節(jié)描述cuda運(yùn)行時(shí)應(yīng)用程序編程接口。cudastreamcreatecudastreamquerycudastreamsynchronize cudastreamdestroy參見(jiàn)設(shè)備管理,線程管理,流管理

32、,事件管理,執(zhí)行管理,存儲(chǔ)器管理,紋理引用管理,opengl互操作性,direct3d互操作性,錯(cuò)誤處理121.3.1 cudastreamcreate名稱(chēng)cudastreamcreate 創(chuàng)建異步流概要cudaerror_t cudastreamcreate( cudastream_t* stream )說(shuō)明創(chuàng)建流。返回值相關(guān)返回值:cudasuccess cudaerrorinvalid value注意,如果之前是異步啟動(dòng),該函數(shù)可能返回錯(cuò)誤碼。參見(jiàn)cudast ream query,cudastreamsynchronize,cudastreamdestroy131.3.2 cudast

33、reamquery名稱(chēng)cudastreamquery 查詢(xún)流的完成狀態(tài)概要cudaerror_t cudastreamquery (cudastream_t stream)說(shuō)明如果流中的所有操作均已完成,則返回cudasuccess,否則返回cudaerrornotready。返回值相關(guān)返回值:cudasuccesscudaerrornotreadycudaerrorinvalidresourcehandle注意,如果之前是異步啟動(dòng),該函數(shù)可能返回錯(cuò)誤碼。參見(jiàn)cudast ream create,cudastreamdestroy,cudastreamsynchronize141.3.3 cu

34、dastreamsynchronize名稱(chēng)cudastreamsynchronize 等待流任務(wù)完成概要cudaerror_t cudastreamsynchronize ( cudastream_t stream )說(shuō)明在設(shè)備完成流中的所有操作之前,一直阻塞操作。返回值相關(guān)返回值:cudasuccess cudaerrorinvalidresourcehandle注意,如果之前是異步啟動(dòng),該函數(shù)可能返回錯(cuò)誤碼。參見(jiàn)cudast ream create,cudastreamdestroy,cudastream query151.3.4 cudastreamdestroy名稱(chēng)cudastream

35、destroy 銷(xiāo)毀并清除流對(duì)象。概要cudaerror_t cudastreamdestroy ( cudastream_t stream )說(shuō)明銷(xiāo)毀流對(duì)象。返回值相關(guān)返回值:cudasuccess cudaerrorinvalidresourcehandle注意,如果之前是異步啟動(dòng),該函數(shù)可能返回錯(cuò)誤碼。參見(jiàn)cudast ream create,cudastreamsychronize,cudastreamdestroy161.4 eventmanagement rt 名稱(chēng)事件管理說(shuō)明本節(jié)描述cuda運(yùn)行時(shí)應(yīng)用程序編程接口。cudaeventcreate cudaeventrecord c

36、udaeventquerycudaeventsynchronizecudaeventdestroy cudaeventelapsedtime參見(jiàn)設(shè)備管理,線程管理,流管理,事件管理,執(zhí)行管理,存儲(chǔ)器管理,紋理引用管理,opengl互操作性,direct3d互操作性,錯(cuò)誤處理171.4.1 cudaeventcreate名稱(chēng)cudaeventcreate 創(chuàng)建事件對(duì)象概要cudaerror_t cudaeventcreate( cudaevent_t* event )說(shuō)明創(chuàng)建事件對(duì)象返回值相關(guān)返回值:cudasuccesscudaerrorinitializationerror cudaerro

37、rpriorlaunchfailure cudaerrorinvalid valuecudaerrormemoryallocation注意,如果之前是異步啟動(dòng),該函數(shù)可能返回錯(cuò)誤碼。參見(jiàn)cudaeventrecord,cudaevent query,cudaeventsynchronzie,cudaeventdestroy,cudaeventelapsed time181.4.2 cudaeventrecord名稱(chēng)cudaeventrecord 記錄事件概要cudaerror_t cudaeventrecord( cudaevent_t event,custream stream )說(shuō)明記錄事

38、件。如果流非零,則在完成流中所有先前的操作之后記錄事件;否則,將在完成cuda上下文中所有先前的操作之后記錄事件。由于此操作是異步的,因而必須使用cudaeventquery()和/或cudaeventsynchronize()確定事件的實(shí)際記錄時(shí)間。如果之前已調(diào)用過(guò)cudaeventrecord(),而尚未記錄事件,則此函數(shù)將返回cudaerrorinvalidvalue。返回值相關(guān)返回值:cudasuccesscudaerrorinvalidvaluecudaerrorinitializationerror cudaerrorpriorlaunchfailure cudaerrorinva

39、lidresourcehandle注意,如果之前是異步啟動(dòng),該函數(shù)可能返回錯(cuò)誤碼。參見(jiàn)cudaevent create,cudaevent query,cudaeventsynchronize,cudaeventdestroy,cudaeventelapsed time191.4.3 cudaeventquery名稱(chēng)cudaeventquery 查詢(xún)是否已經(jīng)記錄了事件概要cudaerror_t cudaeventquery( cudaevent_t event )說(shuō)明如果確實(shí)已經(jīng)記錄了事件,則返回cudasuccess;如果尚未記錄,則返回cudaerrornotready。如果尚未對(duì)此事件調(diào)

40、用cudaeventrecord(),該函數(shù)將返回cudaerrorinvalidvalue。返回值相關(guān)返回值:cudasuccesscudaerrornotreadycudaerrorinitializationerror cudaerrorpriorlaunchfailure cudaerrorinvalidvaluecudaerrorinvalidresourcehandle注意,如果之前是異步啟動(dòng),該函數(shù)可能返回錯(cuò)誤碼。參見(jiàn)cudaevent create,cudaeventrecord,cudaeventsynchronize,cudaeventdestroy,cudaeventel

41、apsed time201.4.4 cudaeventsynchronize名稱(chēng)cudaeventsynchronize 等待事件被記錄概要cudaerror_t cudaeventsynchronize( cudaevent_t event )說(shuō)明在實(shí)際記錄事件之前,一直阻塞操作。如果尚未為此事件調(diào)用cudaeventrecord(),該函數(shù)將返回cudaerrorinvalidvalue。返回值相關(guān)返回值:cudasuccesscudaerrorinitializationerror cudaerrorpriorlaunchfailure cudaerrorinvalid valuecud

42、aerrorinvalidresourcehandle注意,如果之前是異步啟動(dòng),該函數(shù)可能返回錯(cuò)誤碼。參見(jiàn)cudaeventcreate,cudaeventrecord,cudaevent query,cudaeventdestroy,cudaeventelapsedtime211.4.5 cudaeventdestroy名稱(chēng)cudaeventdestroy 銷(xiāo)毀事件對(duì)象概要cudaerror_t cudaeventdestroy( cudaevent_t event )說(shuō)明銷(xiāo)毀事件對(duì)象。返回值相關(guān)返回值:cudasuccesscudaerrorinitializationerror cuda

43、errorpriorlaunchfailure cudaerrorinvalidvalue注意,如果之前是異步啟動(dòng),該函數(shù)可能返回錯(cuò)誤碼。參見(jiàn)cudaeventcreate,cudaeventquery,cudaeventsynchronize,cudaeventrecord,cudaeventelapsedtime221.4.6 cudaeventelapsedtime名稱(chēng)cudaeventelapsedtime 計(jì)算兩次事件之間相差的時(shí)間概要cudaerror_t cudaeventelapsedtime( float* time,cudaevent_t start,cudaevent_t

44、 end );說(shuō)明計(jì)算兩次事件之間相差的時(shí)間(以毫秒為單位,精度為0.5微秒)。如果尚未記錄其中任何一個(gè)事件,此函數(shù)將返回cudaerrorinvalidvalue。如果記錄其中任何一個(gè)事件使用了非零流,則結(jié)果不確定。返回值相關(guān)返回值:cudasuccesscudaerrorinvalidvalue cudaerrorinitializationerrorcudaerrorpriorlaunchfailurecudaerrorinvalidvalue cudaerrorinvalidresourcehandle注意,如果之前是異步啟動(dòng),該函數(shù)可能返回錯(cuò)誤碼。參見(jiàn)cudaevent create

45、,cudaevent query,cudaeventsynchronize,cudaeventdestroy,cudaeventrecord231.5 memorymanagement rt 名稱(chēng)存儲(chǔ)器管理說(shuō)明本節(jié)描述cuda運(yùn)行時(shí)應(yīng)用程序編程接口。cudamalloccudamallocpitchcudafreecudamallocarraycudafreearraycudamallochostcudafreehostcudamemsetcudamemset2dcudamemcpycudamemcpy2dcudamemcpytoarraycudamemcpy2dtoarraycudamemc

46、pyfromarraycudamemcpy2dfromarray cudamemcpyarraytoarray cudamemcpy2darraytoarray cudamemcpytosymbolcudamemcpyfromsymbol cudagetsymboladdresscudagetsymbolsize參見(jiàn)設(shè)備管理,線程管理,流管理,事件管理,執(zhí)行管理,存儲(chǔ)器管理,紋理引用管理,opengl互操作性,direct3d互操作性,錯(cuò)誤處理241.5.1 cudamalloc名稱(chēng)cudamalloc 在gpu上分配存儲(chǔ)器概要cudaerror_t cudamalloc( void* dev

47、ptr,size_t count )說(shuō)明向設(shè)備分配 count 字節(jié)的線性存儲(chǔ)器,并以*devptr的形式返回指向所分配存儲(chǔ)器的指針??舍槍?duì)任何類(lèi)型的變量合理調(diào)整所分配的存儲(chǔ)器。存儲(chǔ)器不會(huì)被清除。如果出現(xiàn)錯(cuò)誤,cudamalloc()將返回cudaerrormemoryallocation。返回值相關(guān)返回值:cudasuccess cudaerrormemoryallocation注意,如果之前是異步啟動(dòng),該函數(shù)可能返回錯(cuò)誤碼。參見(jiàn)cudamallocpitch,cudafree,cudamallocarray,cudafreearray,cudamallochost,cudafreehost

48、251.5.2 cudamallocpitch名稱(chēng)cudamallocpitch 向gpu分配存儲(chǔ)器概要cudaerror_t cudamallocpitch( void* devptr,size_t* pitch,size_t widthinbytes,size_t height )說(shuō)明向設(shè)備分配至少widthinbytes*height字節(jié)的線性存儲(chǔ)器,并以*devptr的形式返回指向所分配存儲(chǔ)器的指針。該函數(shù)可以填充所分配的存儲(chǔ)器,以確保在地址從一行更新到另一行時(shí),給定行的對(duì)應(yīng)指針依然滿足對(duì)齊要求。cudamallocpitch()以*pitch的形式返回間距,即所分配存儲(chǔ)器的寬度,以字

49、節(jié)為單位。間距用作存儲(chǔ)器分配的一個(gè)獨(dú)立參數(shù),用于在2d數(shù)組內(nèi)計(jì)算地址。如果給定一個(gè)t類(lèi)型數(shù)組元素的行和列,可按如下方法計(jì)算地址:t* pelement = (t*)(char*)baseaddress + row * pitch) + column;對(duì)于2d數(shù)組的分配,建議程序員考慮使用cudamallocpitch()來(lái)執(zhí)行間距分配。由于硬件中存在間距對(duì)齊限制,如果應(yīng)用程序?qū)⒃谠O(shè)備存儲(chǔ)器的不同區(qū)域之間執(zhí)行2d存儲(chǔ)器復(fù)制(無(wú)論是線性存儲(chǔ)器還是cuda數(shù)組),這種方法將非常有用。返回值相關(guān)返回值:cudasuccess cudaerrormemoryallocation注意,如果之前是異步啟動(dòng),

50、該函數(shù)可能返回錯(cuò)誤碼。參見(jiàn)cudamalloc,cudafree,cudamallocarray,cudafreearray,cudamallochost,cudafreehost261.5.3 cudafree名稱(chēng)cudafree 釋放gpu上的存儲(chǔ)器概要cudaerror_t cudafree (void* devptr)說(shuō)明釋放devptr(必須在之前調(diào)用cudamalloc()或cudamallocpitch()時(shí)返回)指向的存儲(chǔ)器空間。如果未返回或者之前已經(jīng)調(diào)用過(guò)cudafree(devptr),則返回一個(gè)錯(cuò)誤。如果devptr為0,則不執(zhí)行任何操作。如果出現(xiàn)錯(cuò)誤,cudafree(

51、)將返回cudaerrorinvalid-devicepointer。返回值相關(guān)返回值:cudasuccesscudaerrorinvaliddevicepointer cudaerrorinitializationerror注意,如果之前是異步啟動(dòng),該函數(shù)可能返回錯(cuò)誤碼。參見(jiàn)cudamalloc,cudamallocpitch,cudamallocarray,cudafreearray,cudamallochost,cudafreehost271.5.4 cudamallocarray名稱(chēng)cudamallocarray 向gpu分配數(shù)組概要cudaerror_t cudamallocarra

52、y( struct cudaarray* array,const struct cudachannelformatdesc* desc,size_t width,size_t height )說(shuō)明根據(jù)cudachannelformatdesc結(jié)構(gòu)desc分配cuda數(shù)組,以*array的形式返回新cuda數(shù)組的句柄。cudachannelformatdesc定義如下:struct cudachannelformatdesc int x,y,z,w;enum cudachannelformatkind f; ;其中cudachannelformatkind是cudachannelformatki

53、ndsigned、cudachannelformatkindunsigned或cudachannelformatkindfloat之一。返回值相關(guān)返回值:cudasuccess cudaerrormemoryallocation注意,如果之前是異步啟動(dòng),該函數(shù)可能返回錯(cuò)誤碼。參見(jiàn)cudamalloc,cudamallocpitch,cudafree,cudafreearray,cudamallochost,cudafreehost281.5.5 cudafreearray名稱(chēng)cudafreearray 釋放gpu上的數(shù)組概要cudaerror_t cudafreearray( struct cudaarray* array )說(shuō)明釋放cuda數(shù)組array。如果array為0,則不執(zhí)行任何操作。返回值相關(guān)返回值:cudasuccess cudaerrorinitializationerror注意,如果之前是異步啟動(dòng),該函數(shù)可能返回錯(cuò)誤碼。參見(jiàn)cudamalloc,cudamallocpitch,cudafree,cudamallocarray,cudamallochost,cudafreehost291.5.6 cudam

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論