#pragma once #include "devices.h" namespace ctranslate2 { class Allocator { public: virtual ~Allocator() = default; virtual void* allocate(size_t size, int device_index) = 0; virtual void free(void* ptr, int device_index) = 0; virtual void clear_cache() {}; void* allocate(size_t size) { return allocate(size, -1); } void free(void* ptr) { free(ptr, -1); } }; template Allocator& get_allocator(); Allocator& get_allocator(Device device); }