tfhe_cuda_backend/
cuda_bind.rs1use std::ffi::c_void;
2
3#[link(name = "tfhe_cuda_backend", kind = "static")]
4extern "C" {
5
6 pub fn cuda_create_stream(gpu_index: u32) -> *mut c_void;
7
8 pub fn cuda_destroy_stream(stream: *mut c_void, gpu_index: u32);
9
10 pub fn cuda_synchronize_stream(stream: *mut c_void, gpu_index: u32);
11
12 pub fn cuda_is_available() -> u32;
13
14 pub fn cuda_malloc(size: u64, gpu_index: u32) -> *mut c_void;
15
16 pub fn cuda_malloc_with_size_tracking_async(
17 size: u64,
18 stream: *mut c_void,
19 gpu_index: u32,
20 size_tracker: *mut u64,
21 allocate_gpu_memory: bool,
22 ) -> *mut c_void;
23
24 pub fn cuda_malloc_async(size: u64, stream: *mut c_void, gpu_index: u32) -> *mut c_void;
25 pub fn cuda_check_valid_malloc(size: u64, gpu_index: u32) -> bool;
26 pub fn cuda_device_total_memory(gpu_index: u32) -> u64;
27
28 pub fn cuda_memcpy_with_size_tracking_async_to_gpu(
29 dest: *mut c_void,
30 src: *const c_void,
31 size: u64,
32 stream: *mut c_void,
33 gpu_index: u32,
34 gpu_memory_allocated: bool,
35 );
36
37 pub fn cuda_memcpy_async_to_gpu(
38 dest: *mut c_void,
39 src: *const c_void,
40 size: u64,
41 stream: *mut c_void,
42 gpu_index: u32,
43 );
44
45 pub fn cuda_memcpy_gpu_to_gpu(dest: *mut c_void, src: *const c_void, size: u64, gpu_index: u32);
46
47 pub fn cuda_memcpy_with_size_tracking_async_gpu_to_gpu(
48 dest: *mut c_void,
49 src: *const c_void,
50 size: u64,
51 stream: *mut c_void,
52 gpu_index: u32,
53 gpu_memory_allocated: bool,
54 );
55
56 pub fn cuda_memcpy_async_gpu_to_gpu(
57 dest: *mut c_void,
58 src: *const c_void,
59 size: u64,
60 stream: *mut c_void,
61 gpu_index: u32,
62 );
63
64 pub fn cuda_memcpy_async_to_cpu(
65 dest: *mut c_void,
66 src: *const c_void,
67 size: u64,
68 stream: *mut c_void,
69 gpu_index: u32,
70 );
71
72 pub fn cuda_memset_with_size_tracking_async(
73 dest: *mut c_void,
74 val: u64,
75 size: u64,
76 stream: *mut c_void,
77 gpu_index: u32,
78 gpu_memory_allocated: bool,
79 );
80
81 pub fn cuda_memset_async(
82 dest: *mut c_void,
83 val: u64,
84 size: u64,
85 stream: *mut c_void,
86 gpu_index: u32,
87 );
88
89 pub fn cuda_get_number_of_gpus() -> i32;
90
91 pub fn cuda_synchronize_device(gpu_index: u32);
92
93 pub fn cuda_drop(ptr: *mut c_void, gpu_index: u32);
94
95 pub fn cuda_drop_with_size_tracking_async(
96 ptr: *mut c_void,
97 stream: *mut c_void,
98 gpu_index: u32,
99 size_tracker: *mut u64,
100 allocate_gpu_memory: bool,
101 );
102
103 pub fn cuda_drop_async(ptr: *mut c_void, stream: *mut c_void, gpu_index: u32);
104
105 pub fn cuda_setup_multi_gpu(gpu_index: u32) -> i32;
106
107}