VaneDB 0.1.0
Embeddable vector database for edge AI
Loading...
Searching...
No Matches
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
16namespace vanedb {
17namespace gpu {
18
19enum class Backend { NONE, METAL, CUDA };
20
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
31constexpr size_t GPU_THRESHOLD = 50000;
32inline bool use_gpu(size_t n, size_t d) { return available() != Backend::NONE && n * d >= GPU_THRESHOLD; }
33
34} // namespace gpu
35} // namespace vanedb
bool use_gpu(size_t n, size_t d)
Backend available()
constexpr size_t GPU_THRESHOLD