]> gitweb.factorcode.org Git - factor.git/blob - extra/cuda/ffi/ffi.factor
use radix literals
[factor.git] / extra / cuda / ffi / ffi.factor
1 ! (c)2010 Joe Groff bsd license
2 USING: accessors alien alien.c-types alien.libraries alien.syntax
3 classes.struct combinators kernel system ;
4 IN: cuda.ffi
5
6 <<
7 "cuda" {
8     { [ os windows? ] [ "nvcuda.dll" stdcall ] }
9     { [ os macosx? ] [ "/usr/local/cuda/lib/libcuda.dylib" cdecl ] }
10     { [ os unix? ] [ "libcuda.so" cdecl ] }
11 } cond add-library
12 >>
13
14 LIBRARY: cuda
15
16 TYPEDEF: uint CUdeviceptr
17 TYPEDEF: int CUdevice
18 TYPEDEF: void* CUcontext
19 TYPEDEF: void* CUmodule
20 TYPEDEF: void* CUfunction
21 TYPEDEF: void* CUarray
22 TYPEDEF: void* CUtexref
23 TYPEDEF: void* CUevent
24 TYPEDEF: void* CUstream
25 TYPEDEF: void* CUgraphicsResource
26
27 ! versions of double and longlong that always 8-byte align
28
29 SYMBOLS: CUdouble CUlonglong CUulonglong ;
30
31 <<
32 : always-8-byte-align ( c-type -- c-type )
33     8 >>align 8 >>align-first ;
34
35 longlong  lookup-c-type clone always-8-byte-align \ CUlonglong  typedef
36 ulonglong lookup-c-type clone always-8-byte-align \ CUulonglong typedef
37 double    lookup-c-type clone always-8-byte-align \ CUdouble    typedef
38 >>
39
40 STRUCT: CUuuid
41     { bytes char[16] } ;
42
43 ENUM: CUctx_flags
44     { CU_CTX_SCHED_AUTO  0 }
45     { CU_CTX_SCHED_SPIN  1 }
46     { CU_CTX_SCHED_YIELD 2 }
47     { CU_CTX_SCHED_MASK  3 }
48     { CU_CTX_BLOCKING_SYNC 4 }
49     { CU_CTX_MAP_HOST      8 }
50     { CU_CTX_LMEM_RESIZE_TO_MAX 16 }
51     { CU_CTX_FLAGS_MASK  0x1f } ;
52
53 ENUM: CUevent_flags
54     { CU_EVENT_DEFAULT       0 }
55     { CU_EVENT_BLOCKING_SYNC 1 } ;
56
57 ENUM: CUarray_format
58     { CU_AD_FORMAT_UNSIGNED_INT8  0x01 }
59     { CU_AD_FORMAT_UNSIGNED_INT16 0x02 }
60     { CU_AD_FORMAT_UNSIGNED_INT32 0x03 }
61     { CU_AD_FORMAT_SIGNED_INT8    0x08 }
62     { CU_AD_FORMAT_SIGNED_INT16   0x09 }
63     { CU_AD_FORMAT_SIGNED_INT32   0x0a }
64     { CU_AD_FORMAT_HALF           0x10 }
65     { CU_AD_FORMAT_FLOAT          0x20 } ;
66
67 ENUM: CUaddress_mode
68     { CU_TR_ADDRESS_MODE_WRAP   0 }
69     { CU_TR_ADDRESS_MODE_CLAMP  1 }
70     { CU_TR_ADDRESS_MODE_MIRROR 2 } ;
71
72 ENUM: CUfilter_mode
73     { CU_TR_FILTER_MODE_POINT  0 }
74     { CU_TR_FILTER_MODE_LINEAR 1 } ;
75
76 ENUM: CUdevice_attribute
77     { CU_DEVICE_ATTRIBUTE_MAX_THREADS_PER_BLOCK 1 }
78     { CU_DEVICE_ATTRIBUTE_MAX_BLOCK_DIM_X 2 }
79     { CU_DEVICE_ATTRIBUTE_MAX_BLOCK_DIM_Y 3 }
80     { CU_DEVICE_ATTRIBUTE_MAX_BLOCK_DIM_Z 4 }
81     { CU_DEVICE_ATTRIBUTE_MAX_GRID_DIM_X 5 }
82     { CU_DEVICE_ATTRIBUTE_MAX_GRID_DIM_Y 6 }
83     { CU_DEVICE_ATTRIBUTE_MAX_GRID_DIM_Z 7 }
84     { CU_DEVICE_ATTRIBUTE_MAX_SHARED_MEMORY_PER_BLOCK 8 }
85     { CU_DEVICE_ATTRIBUTE_SHARED_MEMORY_PER_BLOCK 8 }
86     { CU_DEVICE_ATTRIBUTE_TOTAL_CONSTANT_MEMORY 9 }
87     { CU_DEVICE_ATTRIBUTE_WARP_SIZE 10 }
88     { CU_DEVICE_ATTRIBUTE_MAX_PITCH 11 }
89     { CU_DEVICE_ATTRIBUTE_MAX_REGISTERS_PER_BLOCK 12 }
90     { CU_DEVICE_ATTRIBUTE_REGISTERS_PER_BLOCK 12 }
91     { CU_DEVICE_ATTRIBUTE_CLOCK_RATE 13 }
92     { CU_DEVICE_ATTRIBUTE_TEXTURE_ALIGNMENT 14 }
93
94     { CU_DEVICE_ATTRIBUTE_GPU_OVERLAP 15 }
95     { CU_DEVICE_ATTRIBUTE_MULTIPROCESSOR_COUNT 16 }
96     { CU_DEVICE_ATTRIBUTE_KERNEL_EXEC_TIMEOUT 17 }
97     { CU_DEVICE_ATTRIBUTE_INTEGRATED 18 }
98     { CU_DEVICE_ATTRIBUTE_CAN_MAP_HOST_MEMORY 19 }
99     { CU_DEVICE_ATTRIBUTE_COMPUTE_MODE 20 }
100     { CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE1D_WIDTH 21 }
101     { CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_WIDTH 22 }
102     { CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_HEIGHT 23 }
103     { CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_WIDTH 24 }
104     { CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_HEIGHT 25 }
105     { CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_DEPTH 26 }
106     { CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_ARRAY_WIDTH 27 }
107     { CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_ARRAY_HEIGHT 28 }
108     { CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_ARRAY_NUMSLICES 29 }
109     { CU_DEVICE_ATTRIBUTE_SURFACE_ALIGNMENT 30 }
110     { CU_DEVICE_ATTRIBUTE_CONCURRENT_KERNELS 31 }
111     { CU_DEVICE_ATTRIBUTE_ECC_ENABLED 32 } ;
112
113 STRUCT: CUdevprop
114     { maxThreadsPerBlock int }
115     { maxThreadsDim int[3] }
116     { maxGridSize int[3] }
117     { sharedMemPerBlock int }
118     { totalConstantMemory int }
119     { SIMDWidth int }
120     { memPitch int }
121     { regsPerBlock int }
122     { clockRate int }
123     { textureAlign int } ;
124
125 ENUM: CUfunction_attribute
126     { CU_FUNC_ATTRIBUTE_MAX_THREADS_PER_BLOCK 0 }
127     { CU_FUNC_ATTRIBUTE_SHARED_SIZE_BYTES 1     }
128     { CU_FUNC_ATTRIBUTE_CONST_SIZE_BYTES 2      }
129     { CU_FUNC_ATTRIBUTE_LOCAL_SIZE_BYTES 3      }
130     { CU_FUNC_ATTRIBUTE_NUM_REGS 4              }
131     { CU_FUNC_ATTRIBUTE_PTX_VERSION 5           }
132     { CU_FUNC_ATTRIBUTE_BINARY_VERSION 6        }
133     CU_FUNC_ATTRIBUTE_MAX ;
134
135 ENUM: CUfunc_cache
136     { CU_FUNC_CACHE_PREFER_NONE   0x00 }
137     { CU_FUNC_CACHE_PREFER_SHARED 0x01 }
138     { CU_FUNC_CACHE_PREFER_L1     0x02 } ;
139
140 ENUM: CUmemorytype
141     { CU_MEMORYTYPE_HOST   0x01 }
142     { CU_MEMORYTYPE_DEVICE 0x02 }
143     { CU_MEMORYTYPE_ARRAY  0x03 } ;
144
145 ENUM: CUcomputemode
146     { CU_COMPUTEMODE_DEFAULT    0 }
147     { CU_COMPUTEMODE_EXCLUSIVE  1 }
148     { CU_COMPUTEMODE_PROHIBITED 2 } ;
149
150 ENUM: CUjit_option
151     { CU_JIT_MAX_REGISTERS 0 }
152     CU_JIT_THREADS_PER_BLOCK
153     CU_JIT_WALL_TIME
154     CU_JIT_INFO_LOG_BUFFER
155     CU_JIT_INFO_LOG_BUFFER_SIZE_BYTES
156     CU_JIT_ERROR_LOG_BUFFER
157     CU_JIT_ERROR_LOG_BUFFER_SIZE_BYTES
158     CU_JIT_OPTIMIZATION_LEVEL
159     CU_JIT_TARGET_FROM_CUCONTEXT
160     CU_JIT_TARGET
161     CU_JIT_FALLBACK_STRATEGY ;
162
163 ENUM: CUjit_target
164     { CU_TARGET_COMPUTE_10 0 }
165     CU_TARGET_COMPUTE_11
166     CU_TARGET_COMPUTE_12
167     CU_TARGET_COMPUTE_13
168     CU_TARGET_COMPUTE_20 ;
169
170 ENUM: CUjit_fallback
171     { CU_PREFER_PTX 0 }
172     CU_PREFER_BINARY ;
173
174 ENUM: CUgraphicsRegisterFlags
175     { CU_GRAPHICS_REGISTER_FLAGS_NONE 0 } ;
176
177 ENUM: CUgraphicsMapResourceFlags
178     { CU_GRAPHICS_MAP_RESOURCE_FLAGS_NONE          0x00 }
179     { CU_GRAPHICS_MAP_RESOURCE_FLAGS_READ_ONLY     0x01 }
180     { CU_GRAPHICS_MAP_RESOURCE_FLAGS_WRITE_DISCARD 0x02 } ;
181
182 ENUM: CUarray_cubemap_face
183     { CU_CUBEMAP_FACE_POSITIVE_X  0x00 }
184     { CU_CUBEMAP_FACE_NEGATIVE_X  0x01 }
185     { CU_CUBEMAP_FACE_POSITIVE_Y  0x02 }
186     { CU_CUBEMAP_FACE_NEGATIVE_Y  0x03 }
187     { CU_CUBEMAP_FACE_POSITIVE_Z  0x04 }
188     { CU_CUBEMAP_FACE_NEGATIVE_Z  0x05 } ;
189
190 ENUM: CUresult
191     { CUDA_SUCCESS                    0 }
192     { CUDA_ERROR_INVALID_VALUE        1 }
193     { CUDA_ERROR_OUT_OF_MEMORY        2 }
194     { CUDA_ERROR_NOT_INITIALIZED      3 }
195     { CUDA_ERROR_DEINITIALIZED        4 }
196
197     { CUDA_ERROR_NO_DEVICE            100 }
198     { CUDA_ERROR_INVALID_DEVICE       101 }
199
200     { CUDA_ERROR_INVALID_IMAGE        200 }
201     { CUDA_ERROR_INVALID_CONTEXT      201 }
202     { CUDA_ERROR_CONTEXT_ALREADY_CURRENT 202 }
203     { CUDA_ERROR_MAP_FAILED           205 }
204     { CUDA_ERROR_UNMAP_FAILED         206 }
205     { CUDA_ERROR_ARRAY_IS_MAPPED      207 }
206     { CUDA_ERROR_ALREADY_MAPPED       208 }
207     { CUDA_ERROR_NO_BINARY_FOR_GPU    209 }
208     { CUDA_ERROR_ALREADY_ACQUIRED     210 }
209     { CUDA_ERROR_NOT_MAPPED           211 }
210     { CUDA_ERROR_NOT_MAPPED_AS_ARRAY  212 }
211     { CUDA_ERROR_NOT_MAPPED_AS_POINTER 213 }
212     { CUDA_ERROR_ECC_UNCORRECTABLE    214 }
213
214     { CUDA_ERROR_INVALID_SOURCE       300 }
215     { CUDA_ERROR_FILE_NOT_FOUND       301 }
216
217     { CUDA_ERROR_INVALID_HANDLE       400 }
218
219     { CUDA_ERROR_NOT_FOUND            500 }
220
221     { CUDA_ERROR_NOT_READY            600 }
222
223     { CUDA_ERROR_LAUNCH_FAILED        700 }
224     { CUDA_ERROR_LAUNCH_OUT_OF_RESOURCES 701 }
225     { CUDA_ERROR_LAUNCH_TIMEOUT       702 }
226     { CUDA_ERROR_LAUNCH_INCOMPATIBLE_TEXTURING 703 }
227
228     { CUDA_ERROR_POINTER_IS_64BIT     800 }
229     { CUDA_ERROR_SIZE_IS_64BIT        801 }
230
231     { CUDA_ERROR_UNKNOWN              999 } ;
232
233 CONSTANT: CU_MEMHOSTALLOC_PORTABLE        0x01
234 CONSTANT: CU_MEMHOSTALLOC_DEVICEMAP       0x02
235 CONSTANT: CU_MEMHOSTALLOC_WRITECOMBINED   0x04
236
237 STRUCT: CUDA_MEMCPY2D
238     { srcXInBytes uint }
239     { srcY        uint }
240     { srcMemoryType CUmemorytype }
241     { srcHost void* }
242     { srcDevice CUdeviceptr }
243     { srcArray CUarray }
244     { srcPitch uint }
245     { dstXInBytes uint }
246     { dstY uint }
247     { dstMemoryType CUmemorytype }
248     { dstHost void* }
249     { dstDevice CUdeviceptr }
250     { dstArray CUarray }
251     { dstPitch uint }
252     { WidthInBytes uint }
253     { Height uint } ;
254
255 STRUCT: CUDA_MEMCPY3D
256     { srcXInBytes uint }
257     { srcY        uint }
258     { srcZ        uint }
259     { srcLOD      uint }
260     { srcMemoryType CUmemorytype }
261     { srcHost void* }
262     { srcDevice CUdeviceptr }
263     { srcArray CUarray }
264     { reserved0 void* }
265     { srcPitch uint }
266     { srcHeight uint }
267     { dstXInBytes uint }
268     { dstY uint }
269     { dstZ uint }
270     { dstLOD uint }
271     { dstMemoryType CUmemorytype }
272     { dstHost void* }
273     { dstDevice CUdeviceptr }
274     { dstArray CUarray }
275     { reserved1 void* }
276     { dstPitch uint }
277     { dstHeight uint }
278     { WidthInBytes uint }
279     { Height uint }
280     { Depth uint } ;
281
282 STRUCT: CUDA_ARRAY_DESCRIPTOR
283     { Width uint }
284     { Height uint }
285     { Format CUarray_format }
286     { NumChannels uint } ;
287
288 STRUCT: CUDA_ARRAY3D_DESCRIPTOR
289     { Width uint }
290     { Height uint }
291     { Depth uint }
292     { Format CUarray_format }
293     { NumChannels uint }
294     { Flags uint } ;
295
296 CONSTANT: CUDA_ARRAY3D_2DARRAY    0x01
297 CONSTANT: CU_TRSA_OVERRIDE_FORMAT 0x01
298 CONSTANT: CU_TRSF_READ_AS_INTEGER         0x01
299 CONSTANT: CU_TRSF_NORMALIZED_COORDINATES  0x02
300 CONSTANT: CU_PARAM_TR_DEFAULT -1
301
302 FUNCTION: CUresult cuInit ( uint Flags ) ;
303
304 FUNCTION: CUresult cuDriverGetVersion ( int* driverVersion ) ;
305
306 FUNCTION: CUresult cuDeviceGet ( CUdevice* device, int ordinal ) ;
307 FUNCTION: CUresult cuDeviceGetCount ( int* count ) ;
308 FUNCTION: CUresult cuDeviceGetName ( char* name, int len, CUdevice dev ) ;
309 FUNCTION: CUresult cuDeviceComputeCapability ( int* major, int* minor, CUdevice dev ) ;
310 FUNCTION: CUresult cuDeviceTotalMem ( uint* bytes, CUdevice dev ) ;
311 FUNCTION: CUresult cuDeviceGetProperties ( CUdevprop* prop, CUdevice dev ) ;
312 FUNCTION: CUresult cuDeviceGetAttribute ( int* pi, CUdevice_attribute attrib, CUdevice dev ) ;
313         
314 FUNCTION: CUresult cuCtxCreate ( CUcontext* pctx, uint flags, CUdevice dev ) ;
315 FUNCTION: CUresult cuCtxDestroy ( CUcontext ctx ) ;
316 FUNCTION: CUresult cuCtxAttach ( CUcontext* pctx, uint flags ) ;
317 FUNCTION: CUresult cuCtxDetach ( CUcontext ctx ) ;
318 FUNCTION: CUresult cuCtxPushCurrent ( CUcontext ctx ) ;
319 FUNCTION: CUresult cuCtxPopCurrent ( CUcontext* pctx ) ;
320 FUNCTION: CUresult cuCtxGetDevice ( CUdevice* device ) ;
321 FUNCTION: CUresult cuCtxSynchronize ( ) ;
322
323 FUNCTION: CUresult cuModuleLoad ( CUmodule* module, c-string fname ) ;
324 FUNCTION: CUresult cuModuleLoadData ( CUmodule* module, void* image ) ;
325 FUNCTION: CUresult cuModuleLoadDataEx ( CUmodule* module, void* image, uint numOptions, CUjit_option* options, void** optionValues ) ;
326 FUNCTION: CUresult cuModuleLoadFatBinary ( CUmodule* module, void* fatCubin ) ;
327 FUNCTION: CUresult cuModuleUnload ( CUmodule hmod ) ;
328 FUNCTION: CUresult cuModuleGetFunction ( CUfunction* hfunc, CUmodule hmod, c-string name ) ;
329 FUNCTION: CUresult cuModuleGetGlobal ( CUdeviceptr* dptr, uint* bytes, CUmodule hmod, char* name ) ;
330 FUNCTION: CUresult cuModuleGetTexRef ( CUtexref* pTexRef, CUmodule hmod, char* name ) ;
331     
332 FUNCTION: CUresult cuMemGetInfo ( uint* free, uint* total ) ;
333
334 FUNCTION: CUresult cuMemAlloc ( CUdeviceptr* dptr, uint bytesize ) ;
335 FUNCTION: CUresult cuMemAllocPitch ( CUdeviceptr* dptr, 
336                                       uint* pPitch,
337                                       uint WidthInBytes, 
338                                       uint Height, 
339                                       uint ElementSizeBytes
340                                      ) ;
341 FUNCTION: CUresult cuMemFree ( CUdeviceptr dptr ) ;
342 FUNCTION: CUresult cuMemGetAddressRange ( CUdeviceptr* pbase, uint* psize, CUdeviceptr dptr ) ;
343
344 FUNCTION: CUresult cuMemAllocHost ( void** pp, uint bytesize ) ;
345 FUNCTION: CUresult cuMemFreeHost ( void* p ) ;
346
347 FUNCTION: CUresult cuMemHostAlloc ( void** pp, size_t bytesize, uint Flags ) ;
348  
349 FUNCTION: CUresult cuMemHostGetDevicePointer ( CUdeviceptr* pdptr, void* p, uint Flags ) ;
350 FUNCTION: CUresult cuMemHostGetFlags ( uint* pFlags, void* p ) ;
351
352 FUNCTION: CUresult  cuMemcpyHtoD ( CUdeviceptr dstDevice, void* srcHost, uint ByteCount ) ;
353 FUNCTION: CUresult  cuMemcpyDtoH ( void* dstHost, CUdeviceptr srcDevice, uint ByteCount ) ;
354
355 FUNCTION: CUresult  cuMemcpyDtoD ( CUdeviceptr dstDevice, CUdeviceptr srcDevice, uint ByteCount ) ;
356
357 FUNCTION: CUresult  cuMemcpyDtoA ( CUarray dstArray, uint dstIndex, CUdeviceptr srcDevice, uint ByteCount ) ;
358 FUNCTION: CUresult  cuMemcpyAtoD ( CUdeviceptr dstDevice, CUarray hSrc, uint SrcIndex, uint ByteCount ) ;
359
360 FUNCTION: CUresult  cuMemcpyHtoA ( CUarray dstArray, uint dstIndex, void* pSrc, uint ByteCount ) ;
361 FUNCTION: CUresult  cuMemcpyAtoH ( void* dstHost, CUarray srcArray, uint srcIndex, uint ByteCount ) ;
362
363 FUNCTION: CUresult  cuMemcpyAtoA ( CUarray dstArray, uint dstIndex, CUarray srcArray, uint srcIndex, uint ByteCount ) ;
364
365 FUNCTION: CUresult  cuMemcpy2D ( CUDA_MEMCPY2D* pCopy ) ;
366 FUNCTION: CUresult  cuMemcpy2DUnaligned ( CUDA_MEMCPY2D* pCopy ) ;
367
368 FUNCTION: CUresult  cuMemcpy3D ( CUDA_MEMCPY3D* pCopy ) ;
369
370 FUNCTION: CUresult  cuMemcpyHtoDAsync ( CUdeviceptr dstDevice, 
371             void* srcHost, uint ByteCount, CUstream hStream ) ;
372 FUNCTION: CUresult  cuMemcpyDtoHAsync ( void* dstHost, 
373             CUdeviceptr srcDevice, uint ByteCount, CUstream hStream ) ;
374
375 FUNCTION: CUresult cuMemcpyDtoDAsync ( CUdeviceptr dstDevice,
376             CUdeviceptr srcDevice, uint ByteCount, CUstream hStream ) ;
377
378 FUNCTION: CUresult  cuMemcpyHtoAAsync ( CUarray dstArray, uint dstIndex, 
379             void* pSrc, uint ByteCount, CUstream hStream ) ;
380 FUNCTION: CUresult  cuMemcpyAtoHAsync ( void* dstHost, CUarray srcArray, uint srcIndex, 
381             uint ByteCount, CUstream hStream ) ;
382
383 FUNCTION: CUresult  cuMemcpy2DAsync ( CUDA_MEMCPY2D* pCopy, CUstream hStream ) ;
384 FUNCTION: CUresult  cuMemcpy3DAsync ( CUDA_MEMCPY3D* pCopy, CUstream hStream ) ;
385
386 FUNCTION: CUresult  cuMemsetD8 ( CUdeviceptr dstDevice, uchar uc, uint N ) ;
387 FUNCTION: CUresult  cuMemsetD16 ( CUdeviceptr dstDevice, ushort us, uint N ) ;
388 FUNCTION: CUresult  cuMemsetD32 ( CUdeviceptr dstDevice, uint ui, uint N ) ;
389
390 FUNCTION: CUresult  cuMemsetD2D8 ( CUdeviceptr dstDevice, uint dstPitch, uchar uc, uint Width, uint Height ) ;
391 FUNCTION: CUresult  cuMemsetD2D16 ( CUdeviceptr dstDevice, uint dstPitch, ushort us, uint Width, uint Height ) ;
392 FUNCTION: CUresult  cuMemsetD2D32 ( CUdeviceptr dstDevice, uint dstPitch, uint ui, uint Width, uint Height ) ;
393
394 FUNCTION: CUresult cuFuncSetBlockShape ( CUfunction hfunc, int x, int y, int z ) ;
395 FUNCTION: CUresult cuFuncSetSharedSize ( CUfunction hfunc, uint bytes ) ;
396 FUNCTION: CUresult cuFuncGetAttribute ( int* pi, CUfunction_attribute attrib, CUfunction hfunc ) ;
397 FUNCTION: CUresult cuFuncSetCacheConfig ( CUfunction hfunc, CUfunc_cache config ) ;
398
399 FUNCTION: CUresult  cuArrayCreate ( CUarray* pHandle, CUDA_ARRAY_DESCRIPTOR* pAllocateArray ) ;
400 FUNCTION: CUresult  cuArrayGetDescriptor ( CUDA_ARRAY_DESCRIPTOR* pArrayDescriptor, CUarray hArray ) ;
401 FUNCTION: CUresult  cuArrayDestroy ( CUarray hArray ) ;
402
403 FUNCTION: CUresult  cuArray3DCreate ( CUarray* pHandle, CUDA_ARRAY3D_DESCRIPTOR* pAllocateArray ) ;
404 FUNCTION: CUresult  cuArray3DGetDescriptor ( CUDA_ARRAY3D_DESCRIPTOR* pArrayDescriptor, CUarray hArray ) ;
405
406 FUNCTION: CUresult  cuTexRefCreate ( CUtexref* pTexRef ) ;
407 FUNCTION: CUresult  cuTexRefDestroy ( CUtexref hTexRef ) ;
408     
409 FUNCTION: CUresult  cuTexRefSetArray ( CUtexref hTexRef, CUarray hArray, uint Flags ) ;
410 FUNCTION: CUresult  cuTexRefSetAddress ( uint* ByteOffset, CUtexref hTexRef, CUdeviceptr dptr, uint bytes ) ;
411 FUNCTION: CUresult  cuTexRefSetAddress2D ( CUtexref hTexRef, CUDA_ARRAY_DESCRIPTOR* desc, CUdeviceptr dptr, uint Pitch ) ;
412 FUNCTION: CUresult  cuTexRefSetFormat ( CUtexref hTexRef, CUarray_format fmt, int NumPackedComponents ) ;
413 FUNCTION: CUresult  cuTexRefSetAddressMode ( CUtexref hTexRef, int dim, CUaddress_mode am ) ;
414 FUNCTION: CUresult  cuTexRefSetFilterMode ( CUtexref hTexRef, CUfilter_mode fm ) ;
415 FUNCTION: CUresult  cuTexRefSetFlags ( CUtexref hTexRef, uint Flags ) ;
416
417 FUNCTION: CUresult  cuTexRefGetAddress ( CUdeviceptr* pdptr, CUtexref hTexRef ) ;
418 FUNCTION: CUresult  cuTexRefGetArray ( CUarray* phArray, CUtexref hTexRef ) ;
419 FUNCTION: CUresult  cuTexRefGetAddressMode ( CUaddress_mode* pam, CUtexref hTexRef, int dim ) ;
420 FUNCTION: CUresult  cuTexRefGetFilterMode ( CUfilter_mode* pfm, CUtexref hTexRef ) ;
421 FUNCTION: CUresult  cuTexRefGetFormat ( CUarray_format* pFormat, int* pNumChannels, CUtexref hTexRef ) ;
422 FUNCTION: CUresult  cuTexRefGetFlags ( uint* pFlags, CUtexref hTexRef ) ;
423
424 FUNCTION: CUresult  cuParamSetSize ( CUfunction hfunc, uint numbytes ) ;
425 FUNCTION: CUresult  cuParamSeti    ( CUfunction hfunc, int offset, uint value ) ;
426 FUNCTION: CUresult  cuParamSetf    ( CUfunction hfunc, int offset, float value ) ;
427 FUNCTION: CUresult  cuParamSetv    ( CUfunction hfunc, int offset, void* ptr, uint numbytes ) ;
428 FUNCTION: CUresult  cuParamSetTexRef ( CUfunction hfunc, int texunit, CUtexref hTexRef ) ;
429
430 FUNCTION: CUresult cuLaunch ( CUfunction f ) ;
431 FUNCTION: CUresult cuLaunchGrid ( CUfunction f, int grid_width, int grid_height ) ;
432 FUNCTION: CUresult cuLaunchGridAsync ( CUfunction f, int grid_width, int grid_height, CUstream hStream ) ;
433
434 FUNCTION: CUresult cuEventCreate ( CUevent* phEvent, uint Flags ) ;
435 FUNCTION: CUresult cuEventRecord ( CUevent hEvent, CUstream hStream ) ;
436 FUNCTION: CUresult cuEventQuery ( CUevent hEvent ) ;
437 FUNCTION: CUresult cuEventSynchronize ( CUevent hEvent ) ;
438 FUNCTION: CUresult cuEventDestroy ( CUevent hEvent ) ;
439 FUNCTION: CUresult cuEventElapsedTime ( float* pMilliseconds, CUevent hStart, CUevent hEnd ) ;
440
441 FUNCTION: CUresult  cuStreamCreate ( CUstream* phStream, uint Flags ) ;
442 FUNCTION: CUresult  cuStreamQuery ( CUstream hStream ) ;
443 FUNCTION: CUresult  cuStreamSynchronize ( CUstream hStream ) ;
444 FUNCTION: CUresult  cuStreamDestroy ( CUstream hStream ) ;
445
446 FUNCTION: CUresult cuGraphicsUnregisterResource ( CUgraphicsResource resource ) ;
447 FUNCTION: CUresult cuGraphicsSubResourceGetMappedArray ( CUarray* pArray, CUgraphicsResource resource, uint arrayIndex, uint mipLevel ) ;
448 FUNCTION: CUresult cuGraphicsResourceGetMappedPointer ( CUdeviceptr* pDevPtr, uint* pSize, CUgraphicsResource resource ) ;
449 FUNCTION: CUresult cuGraphicsResourceSetMapFlags ( CUgraphicsResource resource, uint flags ) ; 
450 FUNCTION: CUresult cuGraphicsMapResources ( uint count, CUgraphicsResource* resources, CUstream hStream ) ;
451 FUNCTION: CUresult cuGraphicsUnmapResources ( uint count, CUgraphicsResource* resources, CUstream hStream ) ;
452
453 FUNCTION: CUresult cuGetExportTable ( void** ppExportTable, CUuuid* pExportTableId ) ;