VaneDB
0.1.0
Embeddable vector database for edge AI
Loading...
Searching...
No Matches
src
core
gpu
gpu_distance.h
Go to the documentation of this file.
1
// VaneDB - Copyright (c) 2025 Anton Tsvetkov - MIT License
2
#pragma once
3
#include <cstddef>
4
5
#if defined(__APPLE__)
6
#include <TargetConditionals.h>
7
#if TARGET_OS_MAC || TARGET_OS_IPHONE
8
#define VANE_HAS_METAL 1
9
#endif
10
#endif
11
12
#if defined(__CUDACC__) || defined(VANE_CUDA_ENABLED)
13
#define VANE_HAS_CUDA 1
14
#endif
15
16
namespace
vanedb
{
17
namespace
gpu {
18
19
enum class
Backend
{
NONE
,
METAL
,
CUDA
};
20
21
inline
Backend
available
() {
22
#if defined(VANE_HAS_METAL)
23
return
Backend::METAL
;
24
#elif defined(VANE_HAS_CUDA)
25
return
Backend::CUDA
;
26
#else
27
return
Backend::NONE
;
28
#endif
29
}
30
31
constexpr
size_t
GPU_THRESHOLD
= 50000;
32
inline
bool
use_gpu
(
size_t
n,
size_t
d) {
return
available
() !=
Backend::NONE
&& n * d >=
GPU_THRESHOLD
; }
33
34
}
// namespace gpu
35
}
// namespace vanedb
vanedb::gpu::use_gpu
bool use_gpu(size_t n, size_t d)
Definition
gpu_distance.h:32
vanedb::gpu::available
Backend available()
Definition
gpu_distance.h:21
vanedb::gpu::GPU_THRESHOLD
constexpr size_t GPU_THRESHOLD
Definition
gpu_distance.h:31
vanedb::gpu::Backend
Backend
Definition
gpu_distance.h:19
vanedb::gpu::Backend::METAL
@ METAL
vanedb::gpu::Backend::CUDA
@ CUDA
vanedb::gpu::Backend::NONE
@ NONE
vanedb
Definition
file_utils.h:16
Generated by
1.9.8