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

下載本文檔

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

文檔簡介

1、2008年6月參考手冊nvidia cuda計算統(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名稱運(yùn)行時api參考說明有兩種級別的運(yùn)行時api。低級api(cuda_ru

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

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

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

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

24、程執(zhí)行設(shè)備碼的設(shè)備。返回值相關(guān)返回值cudasuccess注意,如果之前是異步啟動,該函數(shù)可能返回錯誤碼。參見cudagetdevicecount,cudasetdevice,cudagetdeviceproperties,cudachoosedevice51.1.4 cudagetdeviceproperties名稱cudagetdeviceproperties 返回關(guān)于計算設(shè)備的信息概要cudaerror_t cudagetdeviceproperties( struct cudadeviceprop* prop,int dev )說明以*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è)備的ascii字符串;totalglobalmem設(shè)備上可用的全局存儲器的總量,以字節(jié)為單位;sharedmemperblock線程塊可以使用的共享存儲器的最大值,以字節(jié)為單位;多處理器上的所有線程塊可以同時共享這些存儲器;regsperblock線程塊可以使用的32位寄存器的最大值;多處理器上的所有線程塊可以同時共享這些寄存器;warpsize按線程計算的warp塊大??;mempitch允許通過cudamallocpitch()為包含存儲器區(qū)域的存儲器復(fù)制函數(shù)分配的最大間距(pitch),以字節(jié)為單位;m

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

47、ptr,size_t count )說明向設(shè)備分配 count 字節(jié)的線性存儲器,并以*devptr的形式返回指向所分配存儲器的指針??舍槍θ魏晤愋偷淖兞亢侠碚{(diào)整所分配的存儲器。存儲器不會被清除。如果出現(xiàn)錯誤,cudamalloc()將返回cudaerrormemoryallocation。返回值相關(guān)返回值:cudasuccess cudaerrormemoryallocation注意,如果之前是異步啟動,該函數(shù)可能返回錯誤碼。參見cudamallocpitch,cudafree,cudamallocarray,cudafreearray,cudamallochost,cudafreehost

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

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

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

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

52、y( struct cudaarray* array,const struct cudachannelformatdesc* desc,size_t width,size_t height )說明根據(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注意,如果之前是異步啟動,該函數(shù)可能返回錯誤碼。參見cudamalloc,cudamallocpitch,cudafree,cudafreearray,cudamallochost,cudafreehost281.5.5 cudafreearray名稱cudafreearray 釋放gpu上的數(shù)組概要cudaerror_t cudafreearray( struct cudaarray* array )說明釋放cuda數(shù)組array。如果array為0,則不執(zhí)行任何操作。返回值相關(guān)返回值:cudasuccess cudaerrorinitializationerror注意,如果之前是異步啟動,該函數(shù)可能返回錯誤碼。參見cudamalloc,cudamallocpitch,cudafree,cudamallocarray,cudamallochost,cudafreehost291.5.6 cudam

溫馨提示

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

評論

0/150

提交評論