Legate.jl
Loading...
Searching...
No Matches
types.h
Go to the documentation of this file.
1
#pragma once
2
3
#include "jlcxx/jlcxx.hpp"
4
#include "legate.h"
5
6
namespace
legate_util
{
7
template
<legate::Type::Code CODE>
8
struct
code_to_cxx
;
9
10
#define DEFINE_CODE_TO_CXX(code_enum, cxx_type) \
11
template <> \
12
struct code_to_cxx<legate::Type::Code::code_enum> { \
13
using type = cxx_type; \
14
};
15
16
DEFINE_CODE_TO_CXX
(BOOL,
bool
)
17
DEFINE_CODE_TO_CXX
(INT8, int8_t)
18
DEFINE_CODE_TO_CXX
(INT16, int16_t)
19
DEFINE_CODE_TO_CXX
(INT32, int32_t)
20
DEFINE_CODE_TO_CXX
(INT64, int64_t)
21
DEFINE_CODE_TO_CXX
(UINT8, uint8_t)
22
DEFINE_CODE_TO_CXX
(UINT16, uint16_t)
23
DEFINE_CODE_TO_CXX
(UINT32, uint32_t)
24
DEFINE_CODE_TO_CXX
(UINT64, uint64_t)
25
#ifdef HAVE_CUDA
26
DEFINE_CODE_TO_CXX
(FLOAT16, __half)
27
#else
28
// Dummy type for FLOAT16 when CUDA is not available
29
// This allows compilation but we throw an error if actually used
30
struct
__half_dummy
{};
31
DEFINE_CODE_TO_CXX
(FLOAT16,
__half_dummy
)
32
#endif
33
DEFINE_CODE_TO_CXX
(FLOAT32,
float
)
34
DEFINE_CODE_TO_CXX
(FLOAT64,
double
)
35
DEFINE_CODE_TO_CXX
(COMPLEX64, std::complex<float>)
36
DEFINE_CODE_TO_CXX
(COMPLEX128, std::complex<double>)
37
#undef DEFINE_CODE_TO_CXX
38
}
// namespace legate_util
39
40
// Wraps the enums which define how legate
41
// and cupynumeric types map to legion types
42
void
wrap_type_enums
(jlcxx::Module&);
43
44
// Wraps the legate functions which return the
45
// specified legate::Type. (e.g. legate::int8())
46
void
wrap_type_getters
(jlcxx::Module&);
47
48
// Wraps the privilege modes used in
49
// FieldAccessor (AcessorRO, AccessorWO)
50
void
wrap_privilege_modes
(jlcxx::Module&);
legate_util
Definition
types.h:6
legate_util::__half_dummy
Definition
types.h:30
legate_util::code_to_cxx
Definition
types.h:8
wrap_type_enums
void wrap_type_enums(jlcxx::Module &)
Definition
types.cpp:28
wrap_privilege_modes
void wrap_privilege_modes(jlcxx::Module &)
Definition
types.cpp:73
DEFINE_CODE_TO_CXX
#define DEFINE_CODE_TO_CXX(code_enum, cxx_type)
Definition
types.h:10
wrap_type_getters
void wrap_type_getters(jlcxx::Module &)
Definition
types.cpp:55
lib
legate_jl_wrapper
include
types.h
Generated by
1.16.1