FireSync API
 All Classes Files Functions Variables Typedefs Friends Macros Modules Pages
kCudaUtils.h
Go to the documentation of this file.
1 
8 #ifndef K_FIRESYNC_CUDA_UTILS_H
9 #define K_FIRESYNC_CUDA_UTILS_H
10 
14 #include <kFireSync/Cuda/kCudaUtils.x.h>
15 
24 
32 
34 
37 
50 template<class T>
51 kInlineFx(kStatus) kCudaUtils_AllocValue(kCudaStream stream, kAlloc allocator, T** pointer, kCudaSync sync = kCUDA_SYNC_DEFAULT)
52 {
53  return xkCudaUtils_AllocValue(stream, allocator, pointer, sync);
54 }
55 
68 template<class T>
70 {
71  return kCudaUtils_Copy(stream, dest, source, sizeof(T), sync);
72 }
73 
89 template<class T>
90 kInlineFx(kStatus) kCudaUtils_CloneValue(kCudaStream stream, kAlloc destAlloc, T** dest, const T* source, kCudaSync sync = kCUDA_SYNC_DEFAULT)
91 {
92  return xkCudaUtils_CloneValue(stream, destAlloc, dest, source, sync);
93 }
94 
105 template<class T>
107 {
108  return kAlloc_FreeRef(allocator, pointer);
109 }
110 
112 
114 
129 kFsFx(kStatus) kCudaUtils_Allocate(kCudaStream stream, kAlloc alloc, kSize size, void* mem, kCudaSync sync = kCUDA_SYNC_DEFAULT);
130 
145 kInlineFx(kStatus) kCudaUtils_AttachToStream(kCudaStream stream, void* pointer, kCudaSync sync = kCUDA_SYNC_DEFAULT)
146 {
147  return kCudaStream_AttachMemory(xkCudaStream_Fallback(stream), pointer, sync);
148 }
149 
165 {
166  return kCudaStream_DetachMemory(xkCudaStream_Fallback(stream), pointer, sync);
167 }
168 
182 kFsFx(kStatus) kCudaUtils_MemSet(kCudaStream stream, void* dest, kByte fill, kSize size, kCudaSync sync = kCUDA_SYNC_DEFAULT);
183 
197 kFsFx(kStatus) kCudaUtils_Copy(kCudaStream stream, void* dest, const void* src, kSize size, kCudaSync sync = kCUDA_SYNC_DEFAULT);
198 
200 
202 
216 kInlineFx(kStatus) kCudaUtils_AttachArrayToStream(kCudaStream stream, kArrayProvider array, kCudaSync sync = kCUDA_SYNC_DEFAULT)
217 {
218  return kCudaUtils_AttachToStream(stream, kArrayProvider_Data(array), sync);
219 }
220 
235 {
236  return kCudaUtils_DetachFromStream(stream, kArrayProvider_Data(array), sync);
237 }
238 
254 kFsFx(kStatus) kCudaUtils_CloneObject(kCudaStream stream, kObject* object, kObject source, kAlloc objectAllocator, kAlloc valueAllocator, kCudaSync sync = kCUDA_SYNC_DEFAULT);
255 
269 kFsFx(kStatus) kCudaUtils_AssignArray(kCudaStream stream, kArrayProvider destination, kArrayProvider source, kCudaSync sync = kCUDA_SYNC_DEFAULT);
270 
284 kInlineFx(kBool) kCudaUtils_IsArrayDeviceAccessible(kArrayProvider array, kBool isExclusive = kTRUE)
285 {
286  kAllocTrait traits = kAlloc_Traits(kArrayProvider_ValueAlloc(array));
287 
288  return kAllocTrait_IsCudaDevice(traits) || kAllocTrait_IsCudaPinned(traits) || (kAllocTrait_IsCudaManaged(traits) && (!kAllocTrait_IsSerial(traits) || isExclusive));
289 }
290 
308 kFsFx(kStatus) kCudaUtils_ConstructArrayFromTemplate(kCudaStream stream, kArrayProvider* outputArray, kArrayProvider templateArray, kAlloc objectAlloc = kNULL, kAlloc valueAlloc = kNULL, kCudaSync sync = kCUDA_SYNC_DEFAULT);
309 
340 kFsFx(kStatus) kCudaUtils_PrepareDeviceArray(kCudaStream stream, kArrayProvider* outputArray, kArrayProvider inputArray, kBool copyData = kTRUE, kAlloc objectAlloc = kNULL, kAlloc valueAlloc = kNULL, kBool inputExclusive = kTRUE, kCudaSync sync = kCUDA_SYNC_DEFAULT);
341 
343 
344 #endif
kStatus kCudaUtils_Copy(kCudaStream stream, void *dest, const void *src, kSize size, kCudaSync sync=kCUDA_SYNC_DEFAULT)
Copies data from one memory address to another.
Represents the synchronization mode for a Cuda operation.
kBool kCudaUtils_IsArrayDeviceAccessible(kArrayProvider array, kBool isExclusive=kTRUE)
Reports whether an array's buffer can potentially be accessed by a Cuda device.
Definition: kCudaUtils.h:284
kStatus kCudaUtils_CloneObject(kCudaStream stream, kObject *object, kObject source, kAlloc objectAllocator, kAlloc valueAllocator, kCudaSync sync=kCUDA_SYNC_DEFAULT)
Constructs a new object by copying an existing object, including any aggregated child elements...
Represents the overall state of the Cuda processing environment.
#define kCUDA_SYNC_DEFAULT
Use default synchronization mode of the associated stream.
Definition: kCudaDef.h:40
Represents a Cuda stream object.
kStatus kCudaUtils_AttachToStream(kCudaStream stream, void *pointer, kCudaSync sync=kCUDA_SYNC_DEFAULT)
Attaches serial managed memory to a stream.
Definition: kCudaUtils.h:145
kStatus kCudaUtils_AllocValue(kCudaStream stream, kAlloc allocator, T **pointer, kCudaSync sync=kCUDA_SYNC_DEFAULT)
Allocates storage for a value-type with the specified allocator.
Definition: kCudaUtils.h:51
kStatus kCudaUtils_AssignArray(kCudaStream stream, kArrayProvider destination, kArrayProvider source, kCudaSync sync=kCUDA_SYNC_DEFAULT)
Assigns an array-based data type.
kStatus kCudaStream_DetachMemory(kCudaStream stream, kPointer mem, kCudaSync sync=kCUDA_SYNC_DEFAULT)
Detaches serial managed memory from a stream.
#define kInlineFx(TYPE)
kStatus kCudaUtils_ConstructArrayFromTemplate(kCudaStream stream, kArrayProvider *outputArray, kArrayProvider templateArray, kAlloc objectAlloc=kNULL, kAlloc valueAlloc=kNULL, kCudaSync sync=kCUDA_SYNC_DEFAULT)
Constructs an array object, using a template object to determine properties.
Declares the kCudaAlloc class.
kStatus kCudaUtils_MemSet(kCudaStream stream, void *dest, kByte fill, kSize size, kCudaSync sync=kCUDA_SYNC_DEFAULT)
Sets a block of memory to the given byte value.
kStatus kCudaUtils_Allocate(kCudaStream stream, kAlloc alloc, kSize size, void *mem, kCudaSync sync=kCUDA_SYNC_DEFAULT)
Allocates a block of memory and attaches it to the specified stream.
kStatus kCudaUtils_FreeValueRef(kAlloc allocator, T **pointer)
Frees a value buffer and resets the buffer pointer to null.
Definition: kCudaUtils.h:106
kStatus kCudaUtils_CloneValue(kCudaStream stream, kAlloc destAlloc, T **dest, const T *source, kCudaSync sync=kCUDA_SYNC_DEFAULT)
Moves an item from its existing location to a new buffer created with the specified allocator...
Definition: kCudaUtils.h:90
kStatus kCudaUtils_PrepareDeviceArray(kCudaStream stream, kArrayProvider *outputArray, kArrayProvider inputArray, kBool copyData=kTRUE, kAlloc objectAlloc=kNULL, kAlloc valueAlloc=kNULL, kBool inputExclusive=kTRUE, kCudaSync sync=kCUDA_SYNC_DEFAULT)
Ensures the specified input array is device-accessible by either cloning or sharing it...
kStatus kCudaUtils_AttachArrayToStream(kCudaStream stream, kArrayProvider array, kCudaSync sync=kCUDA_SYNC_DEFAULT)
Attaches an array's internal buffer to a stream.
Definition: kCudaUtils.h:216
kStatus kCudaUtils_AssignValue(kCudaStream stream, T *dest, const T *source, kCudaSync sync=kCUDA_SYNC_DEFAULT)
Copies an item from its existing location to a new location.
Definition: kCudaUtils.h:69
kCudaEnvironmentStatus kCudaUtils_EnvironmentStatus()
Reports the overall status of the Cuda processing environment.
kStatus kCudaUtils_DetachFromStream(kCudaStream stream, void *pointer, kCudaSync sync=kCUDA_SYNC_DEFAULT)
Detaches serial managed memory from a stream.
Definition: kCudaUtils.h:164
kStatus kCudaUtils_DetachArrayFromStream(kCudaStream stream, kArrayProvider array, kCudaSync sync=kCUDA_SYNC_DEFAULT)
Detaches an array's internal buffer from a stream.
Definition: kCudaUtils.h:234
Central Cuda-related definitions.
kStatus kCudaStream_AttachMemory(kCudaStream stream, kPointer mem, kCudaSync sync=kCUDA_SYNC_DEFAULT)
Attaches serial managed memory to a stream.