c4457661f3da3ced7c1139dcf65c9be935335a90
[charm.git] / src / arch / cuda / hybridAPI / hapi_impl.h
1 #ifndef __HAPI_IMPL_H_
2 #define __HAPI_IMPL_H_
3
4 #ifdef __cplusplus
5 extern "C" {
6 #endif
7
8 // Initialize & exit hybrid API.
9 void initHybridAPI();
10 void exitHybridAPI();
11
12 // Initializes event queues used for polling.
13 void initEventQueues();
14
15 // Registers callback handler functions.
16 void hapiRegisterCallbacks();
17
18 // Polls for GPU work completion. Does not do anything if HAPI_CUDA_CALLBACK is defined.
19 void hapiPollEvents();
20
21 #ifdef HAPI_MEMPOOL
22 // data and metadata reside in same chunk of memory
23 typedef struct _header {
24   struct _header *next;
25   int slot;
26 #ifdef HAPI_MEMPOOL_DEBUG
27   size_t size;
28 #endif
29 } Header;
30
31 typedef struct _bufferPool {
32   Header *head;
33   size_t size;
34 #ifdef HAPI_MEMPOOL_DEBUG
35   int num;
36 #endif
37 } BufferPool;
38 #endif // HAPI_MEMPOOL
39
40 #ifdef __cplusplus
41 }
42 #endif
43
44 #endif // __HAPI_IMPL_H_