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