libxmp/libxmpf in Omni Compiler  1.3.4
xacc_internal.h
Go to the documentation of this file.
1 #ifndef _XACC_INTERNAL_H
2 #define _XACC_INTERNAL_H
3 
4 #include <stdio.h>
5 #include <stdlib.h>
6 #include <stdbool.h>
7 
8 //--CUDA------------------------------------------------
9 #if defined(_XMP_XACC_CUDA)
10 #include <cuda_runtime.h>
11 
12 #define CUDA_SAFE_CALL(call) \
13  do { \
14  cudaError_t err = call; \
15  if (cudaSuccess != err) { \
16  fprintf (stderr, "Cuda error in file '%s' in line %i : %s.\n", \
17  __FILE__, __LINE__, cudaGetErrorString(err) ); \
18  exit(EXIT_FAILURE); \
19  } \
20  } while (0)
21 
22 typedef cudaStream_t _XACC_queue_t;
23 typedef void* _XACC_memory_t;
24 #define _XACC_QUEUE_NULL 0
25 
26 #endif
27 
28 //--OpenCL, PZCL------------------------------------------------
29 #if defined(_XMP_XACC_OPENCL) || defined(_XMP_XACC_PZCL)
30 #ifdef _XMP_XACC_OPENCL
31 #include <CL/cl.h>
32 #else
33 #include "pzcl/pzcl_ocl_wrapper.h"
34 #endif
35 
36 #define CL_CHECK(ret) \
37  do{ \
38  cl_int err = ret; \
39  if(err != CL_SUCCESS){ \
40  fprintf(stderr, "%s:%d,rank=%d, OpenCL error code %d\n", __FILE__, __LINE__, _XMP_world_rank, err); \
41  exit(1); \
42  } \
43  }while(0)
44 
45 
46 typedef cl_command_queue _XACC_queue_t;
47 typedef cl_mem _XACC_memory_t;
48 #define _XACC_QUEUE_NULL NULL
49 
50 #endif
51 
52 //--Common------------------------------------------------
53 
54 void _XACC_init(void);
55 void _XACC_util_init(void);
56 
57 void _XACC_queue_create(_XACC_queue_t *queue);
58 void _XACC_queue_destroy(_XACC_queue_t *queue);
59 void _XACC_queue_wait(_XACC_queue_t queue);
60 
61 void _XACC_memory_alloc(_XACC_memory_t *memory, size_t size);
62 void _XACC_memory_free(_XACC_memory_t *memory);
63 void _XACC_memory_read(void *addr, _XACC_memory_t memory, size_t memory_offset, size_t size, _XACC_queue_t queue, bool is_blocking);
64 void _XACC_memory_write(_XACC_memory_t memory, size_t memory_offset, void *addr, size_t size, _XACC_queue_t queue, bool is_blocking);
65 void _XACC_memory_copy(_XACC_memory_t dst_memory, size_t dst_memory_offset, _XACC_memory_t src_memory, size_t src_memory_offset, size_t size, _XACC_queue_t queue, bool is_blocking);
66 void* _XACC_memory_get_address(_XACC_memory_t memory);
67 
68 void _XACC_host_malloc(void **ptr, size_t size);
69 void _XACC_host_free(void **ptr);
70 
71 void _XACC_memory_pack_vector(_XACC_memory_t dst_mem, size_t dst_offset,
72  _XACC_memory_t src_mem, size_t src_offset,
73  size_t blocklength, size_t stride, size_t count,
74  size_t typesize,
75  _XACC_queue_t queue, bool is_blocking);
76 void _XACC_memory_unpack_vector(_XACC_memory_t dst_mem, size_t dst_offset,
77  _XACC_memory_t src_mem, size_t src_offset,
78  size_t blocklength, size_t stride, size_t count,
79  size_t typesize,
80  _XACC_queue_t queue, bool is_blocking);
81 void _XACC_memory_pack_vector2(_XACC_memory_t dst0_mem, size_t dst0_offset,
82  _XACC_memory_t src0_mem, size_t src0_offset,
83  size_t blocklength0, size_t stride0, size_t count0,
84  _XACC_memory_t dst1_mem, size_t dst1_offset,
85  _XACC_memory_t src1_mem, size_t src1_offset,
86  size_t blocklength1, size_t stride1, size_t count1,
87  size_t typesize,
88  _XACC_queue_t queue, bool is_blocking);
89 void _XACC_memory_unpack_vector2(_XACC_memory_t dst0_mem, size_t dst0_offset,
90  _XACC_memory_t src0_mem, size_t src0_offset,
91  size_t blocklength0, size_t stride0, size_t count0,
92  _XACC_memory_t dst1_mem, size_t dst1_offset,
93  _XACC_memory_t src1_mem, size_t src1_offset,
94  size_t blocklength1, size_t stride1, size_t count1,
95  size_t typesize,
96  _XACC_queue_t queue, bool is_blocking);
97 
98 
99 #define _XACC_fatal _XMP_fatal
100 
101 #endif //_XACC_INTERNAL_H
102 
_XACC_memory_alloc
void _XACC_memory_alloc(_XACC_memory_t *memory, size_t size)
Definition: xacc_util_cl.c:52
_XACC_util_init
void _XACC_util_init(void)
Definition: xacc_util_cl.c:242
_XACC_memory_read
void _XACC_memory_read(void *addr, _XACC_memory_t memory, size_t memory_offset, size_t size, _XACC_queue_t queue, bool is_blocking)
Definition: xacc_util_cl.c:73
_XACC_memory_unpack_vector2
void _XACC_memory_unpack_vector2(_XACC_memory_t dst0_mem, size_t dst0_offset, _XACC_memory_t src0_mem, size_t src0_offset, size_t blocklength0, size_t stride0, size_t count0, _XACC_memory_t dst1_mem, size_t dst1_offset, _XACC_memory_t src1_mem, size_t src1_offset, size_t blocklength1, size_t stride1, size_t count1, size_t typesize, _XACC_queue_t queue, bool is_blocking)
Definition: xacc_util_cl.c:438
_XACC_memory_write
void _XACC_memory_write(_XACC_memory_t memory, size_t memory_offset, void *addr, size_t size, _XACC_queue_t queue, bool is_blocking)
Definition: xacc_util_cl.c:81
_XACC_memory_copy
void _XACC_memory_copy(_XACC_memory_t dst_memory, size_t dst_memory_offset, _XACC_memory_t src_memory, size_t src_memory_offset, size_t size, _XACC_queue_t queue, bool is_blocking)
Definition: xacc_util_cl.c:90
_XACC_init
void _XACC_init(void)
Definition: xacc_runtime.c:3
_XACC_host_free
void _XACC_host_free(void **ptr)
Definition: xacc_util_cl.c:108
_XACC_host_malloc
void _XACC_host_malloc(void **ptr, size_t size)
Definition: xacc_util_cl.c:104
_XACC_queue_destroy
void _XACC_queue_destroy(_XACC_queue_t *queue)
Definition: xacc_util_cl.c:35
_XACC_memory_pack_vector2
void _XACC_memory_pack_vector2(_XACC_memory_t dst0_mem, size_t dst0_offset, _XACC_memory_t src0_mem, size_t src0_offset, size_t blocklength0, size_t stride0, size_t count0, _XACC_memory_t dst1_mem, size_t dst1_offset, _XACC_memory_t src1_mem, size_t src1_offset, size_t blocklength1, size_t stride1, size_t count1, size_t typesize, _XACC_queue_t queue, bool is_blocking)
Definition: xacc_util_cl.c:428
_XACC_memory_pack_vector
void _XACC_memory_pack_vector(_XACC_memory_t dst_mem, size_t dst_offset, _XACC_memory_t src_mem, size_t src_offset, size_t blocklength, size_t stride, size_t count, size_t typesize, _XACC_queue_t queue, bool is_blocking)
Definition: xacc_util_cl.c:269
_XACC_queue_wait
void _XACC_queue_wait(_XACC_queue_t queue)
Definition: xacc_util_cl.c:45
_XACC_memory_unpack_vector
void _XACC_memory_unpack_vector(_XACC_memory_t dst_mem, size_t dst_offset, _XACC_memory_t src_mem, size_t src_offset, size_t blocklength, size_t stride, size_t count, size_t typesize, _XACC_queue_t queue, bool is_blocking)
Definition: xacc_util_cl.c:348
_XACC_memory_get_address
void * _XACC_memory_get_address(_XACC_memory_t memory)
Definition: xacc_util_cl.c:98
_XACC_memory_free
void _XACC_memory_free(_XACC_memory_t *memory)
Definition: xacc_util_cl.c:64
_XACC_queue_create
void _XACC_queue_create(_XACC_queue_t *queue)
Definition: xacc_util_cl.c:18