ollama/discover/gpu_info_vulkan.h

53 lines
1.8 KiB
C

#ifndef __APPLE__
#ifndef __GPU_INFO_VULKAN_H__
#define __GPU_INFO_VULKAN_H__
#include "gpu_info.h"
#include <vulkan/vulkan.h>
typedef struct {
void* vk_handle;
uint16_t verbose;
VkInstance vk;
int num_devices;
void (*vkGetPhysicalDeviceProperties)(
VkPhysicalDevice physicalDevice,
VkPhysicalDeviceProperties* pProperties);
VkResult (*vkEnumerateDeviceExtensionProperties)(
VkPhysicalDevice physicalDevice,
const char* pLayerName,
uint32_t* pPropertyCount,
VkExtensionProperties* pProperties);
VkResult (*vkCreateInstance)(
const VkInstanceCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkInstance* pInstance);
VkResult (*vkEnumeratePhysicalDevices)(
VkInstance instance,
uint32_t* pPhysicalDeviceCount,
VkPhysicalDevice* pPhysicalDevices);
void (*vkGetPhysicalDeviceMemoryProperties2)(
VkPhysicalDevice physicalDevice,
VkPhysicalDeviceMemoryProperties2* pMemoryProperties);
void (*vkDestroyInstance)(
VkInstance instance,
const VkAllocationCallbacks* pAllocator);
} vk_handle_t;
typedef struct vk_init_resp
{
char *err; // If err is non-null handle is invalid
int num_devices;
vk_handle_t ch;
} vk_init_resp_t;
void vk_init(char* vk_lib_path, vk_init_resp_t *resp);
void vk_check_vram(vk_handle_t rh, int i, mem_info_t *resp);
int vk_check_flash_attention(vk_handle_t rh, int i);
void vk_release(vk_handle_t rh);
#endif
#endif