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