Tencent / ncnn

ncnn is a high-performance neural network inference framework optimized for the mobile platform
Other
20.41k stars 4.16k forks source link

我有3个GPU,但get_gpu_count()=1 #5440

Closed 1027663760 closed 4 months ago

1027663760 commented 6 months ago

windows11,用的最新版ncnn.

但是用darknet训练或者识别都可以正常用到两个p40

1

wzyforgit commented 6 months ago

NCNN的GPU推理是基于vulkan的,可能是你的P40的驱动不支持vulkan导致 可以通过vulkaninfo命令查看vulkan识别到的设备

1027663760 commented 6 months ago

NCNN的GPU推理是基于vulkan的,可能是你的P40的驱动不支持vulkan导致 可以通过vulkaninfo命令查看vulkan识别到的设备

vulkaninfo 也只能看到一个GPU,那这样的话是不是无解了

================= VK_LAYER_NV_optimus (NVIDIA Optimus layer) Vulkan version 1.3.277, layer version 1: Layer Extensions: count = 0 Devices: count = 1 GPU id = 0 (NVIDIA GeForce RTX 3060) Layer-Device Extensions: count = 0

VK_LAYER_TENCENT_wegame_cross_overlay (Cross Overlay Layer) Vulkan version 1.1.121, layer version 1: Layer Extensions: count = 0 Devices: count = 1 GPU id = 0 (NVIDIA GeForce RTX 3060) Layer-Device Extensions: count = 0

Presentable Surfaces:

GPU id : 0 (NVIDIA GeForce RTX 3060): Surface type = VK_KHR_win32_surface Formats: count = 5 SurfaceFormat[0]: format = FORMAT_B8G8R8A8_UNORM colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR SurfaceFormat[1]: format = FORMAT_B8G8R8A8_SRGB colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR SurfaceFormat[2]: format = FORMAT_R8G8B8A8_UNORM colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR SurfaceFormat[3]: format = FORMAT_R8G8B8A8_SRGB colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR SurfaceFormat[4]: format = FORMAT_A2B10G10R10_UNORM_PACK32 colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR Present Modes: count = 4 PRESENT_MODE_FIFO_KHR PRESENT_MODE_FIFO_RELAXED_KHR PRESENT_MODE_MAILBOX_KHR PRESENT_MODE_IMMEDIATE_KHR VkSurfaceCapabilitiesKHR:

wzyforgit commented 6 months ago

NCNN的GPU推理是基于vulkan的,可能是你的P40的驱动不支持vulkan导致 可以通过vulkaninfo命令查看vulkan识别到的设备

vulkaninfo 也只能看到一个GPU,那这样的话是不是无解了

================= VK_LAYER_NV_optimus (NVIDIA Optimus layer) Vulkan version 1.3.277, layer version 1: Layer Extensions: count = 0 Devices: count = 1 GPU id = 0 (NVIDIA GeForce RTX 3060) Layer-Device Extensions: count = 0

VK_LAYER_TENCENT_wegame_cross_overlay (Cross Overlay Layer) Vulkan version 1.1.121, layer version 1: Layer Extensions: count = 0 Devices: count = 1 GPU id = 0 (NVIDIA GeForce RTX 3060) Layer-Device Extensions: count = 0

Presentable Surfaces:

GPU id : 0 (NVIDIA GeForce RTX 3060): Surface type = VK_KHR_win32_surface Formats: count = 5 SurfaceFormat[0]: format = FORMAT_B8G8R8A8_UNORM colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR SurfaceFormat[1]: format = FORMAT_B8G8R8A8_SRGB colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR SurfaceFormat[2]: format = FORMAT_R8G8B8A8_UNORM colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR SurfaceFormat[3]: format = FORMAT_R8G8B8A8_SRGB colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR SurfaceFormat[4]: format = FORMAT_A2B10G10R10_UNORM_PACK32 colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR Present Modes: count = 4 PRESENT_MODE_FIFO_KHR PRESENT_MODE_FIFO_RELAXED_KHR PRESENT_MODE_MAILBOX_KHR PRESENT_MODE_IMMEDIATE_KHR VkSurfaceCapabilitiesKHR: -------------------------

可以再去NV那边找找看有没有支持的驱动,实在没有的话那确实没办法了 毕竟vulkan sdk只是说提供一个接口,具体是否支持还是要看显卡驱动的

1027663760 commented 6 months ago

NCNN的GPU推理是基于vulkan的,可能是你的P40的驱动不支持vulkan导致 可以通过vulkaninfo命令查看vulkan识别到的设备

vulkaninfo 也只能看到一个GPU,那这样的话是不是无解了 ================= VK_LAYER_NV_optimus (NVIDIA Optimus layer) Vulkan version 1.3.277, layer version 1: Layer Extensions: count = 0 Devices: count = 1 GPU id = 0 (NVIDIA GeForce RTX 3060) Layer-Device Extensions: count = 0 VK_LAYER_TENCENT_wegame_cross_overlay (Cross Overlay Layer) Vulkan version 1.1.121, layer version 1: Layer Extensions: count = 0 Devices: count = 1 GPU id = 0 (NVIDIA GeForce RTX 3060) Layer-Device Extensions: count = 0

Presentable Surfaces:

GPU id : 0 (NVIDIA GeForce RTX 3060): Surface type = VK_KHR_win32_surface Formats: count = 5 SurfaceFormat[0]: format = FORMAT_B8G8R8A8_UNORM colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR SurfaceFormat[1]: format = FORMAT_B8G8R8A8_SRGB colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR SurfaceFormat[2]: format = FORMAT_R8G8B8A8_UNORM colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR SurfaceFormat[3]: format = FORMAT_R8G8B8A8_SRGB colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR SurfaceFormat[4]: format = FORMAT_A2B10G10R10_UNORM_PACK32 colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR Present Modes: count = 4 PRESENT_MODE_FIFO_KHR PRESENT_MODE_FIFO_RELAXED_KHR PRESENT_MODE_MAILBOX_KHR PRESENT_MODE_IMMEDIATE_KHR VkSurfaceCapabilitiesKHR: -------------------------

可以再去NV那边找找看有没有支持的驱动,实在没有的话那确实没办法了 毕竟vulkan sdk只是说提供一个接口,具体是否支持还是要看显卡驱动的

看来N卡还是用cuda最好,兼容性也很强,下到gtx750上到4090再到各种专业卡都支持

nihui commented 6 months ago

NCNN的GPU推理是基于vulkan的,可能是你的P40的驱动不支持vulkan导致 可以通过vulkaninfo命令查看vulkan识别到的设备

vulkaninfo 也只能看到一个GPU,那这样的话是不是无解了 ================= VK_LAYER_NV_optimus (NVIDIA Optimus layer) Vulkan version 1.3.277, layer version 1: Layer Extensions: count = 0 Devices: count = 1 GPU id = 0 (NVIDIA GeForce RTX 3060) Layer-Device Extensions: count = 0 VK_LAYER_TENCENT_wegame_cross_overlay (Cross Overlay Layer) Vulkan version 1.1.121, layer version 1: Layer Extensions: count = 0 Devices: count = 1 GPU id = 0 (NVIDIA GeForce RTX 3060) Layer-Device Extensions: count = 0

Presentable Surfaces:

GPU id : 0 (NVIDIA GeForce RTX 3060): Surface type = VK_KHR_win32_surface Formats: count = 5 SurfaceFormat[0]: format = FORMAT_B8G8R8A8_UNORM colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR SurfaceFormat[1]: format = FORMAT_B8G8R8A8_SRGB colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR SurfaceFormat[2]: format = FORMAT_R8G8B8A8_UNORM colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR SurfaceFormat[3]: format = FORMAT_R8G8B8A8_SRGB colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR SurfaceFormat[4]: format = FORMAT_A2B10G10R10_UNORM_PACK32 colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR Present Modes: count = 4 PRESENT_MODE_FIFO_KHR PRESENT_MODE_FIFO_RELAXED_KHR PRESENT_MODE_MAILBOX_KHR PRESENT_MODE_IMMEDIATE_KHR VkSurfaceCapabilitiesKHR: -------------------------

可以再去NV那边找找看有没有支持的驱动,实在没有的话那确实没办法了 毕竟vulkan sdk只是说提供一个接口,具体是否支持还是要看显卡驱动的

看来N卡还是用cuda最好,兼容性也很强,下到gtx750上到4090再到各种专业卡都支持

但是吧,cuda新版本也会废弃一些老卡的兼容性....

以及,我记得 linux 下 p40 安装驱动的时候要记得勾选安装 opengl 支持,只安装cuda的驱动是不够的,vulkan 的部分在 opengl 那边

1027663760 commented 6 months ago

NCNN的GPU推理是基于vulkan的,可能是你的P40的驱动不支持vulkan导致 可以通过vulkaninfo命令查看vulkan识别到的设备

vulkaninfo 也只能看到一个GPU,那这样的话是不是无解了 ================= VK_LAYER_NV_optimus (NVIDIA Optimus layer) Vulkan version 1.3.277, layer version 1: Layer Extensions: count = 0 Devices: count = 1 GPU id = 0 (NVIDIA GeForce RTX 3060) Layer-Device Extensions: count = 0 VK_LAYER_TENCENT_wegame_cross_overlay (Cross Overlay Layer) Vulkan version 1.1.121, layer version 1: Layer Extensions: count = 0 Devices: count = 1 GPU id = 0 (NVIDIA GeForce RTX 3060) Layer-Device Extensions: count = 0

Presentable Surfaces:

GPU id : 0 (NVIDIA GeForce RTX 3060): Surface type = VK_KHR_win32_surface Formats: count = 5 SurfaceFormat[0]: format = FORMAT_B8G8R8A8_UNORM colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR SurfaceFormat[1]: format = FORMAT_B8G8R8A8_SRGB colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR SurfaceFormat[2]: format = FORMAT_R8G8B8A8_UNORM colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR SurfaceFormat[3]: format = FORMAT_R8G8B8A8_SRGB colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR SurfaceFormat[4]: format = FORMAT_A2B10G10R10_UNORM_PACK32 colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR Present Modes: count = 4 PRESENT_MODE_FIFO_KHR PRESENT_MODE_FIFO_RELAXED_KHR PRESENT_MODE_MAILBOX_KHR PRESENT_MODE_IMMEDIATE_KHR VkSurfaceCapabilitiesKHR: -------------------------

可以再去NV那边找找看有没有支持的驱动,实在没有的话那确实没办法了 毕竟vulkan sdk只是说提供一个接口,具体是否支持还是要看显卡驱动的

看来N卡还是用cuda最好,兼容性也很强,下到gtx750上到4090再到各种专业卡都支持

但是吧,cuda新版本也会废弃一些老卡的兼容性....

以及,我记得 linux 下 p40 安装驱动的时候要记得勾选安装 opengl 支持,只安装cuda的驱动是不够的,vulkan 的部分在 opengl 那边

我这里不需要这么麻烦,就安装3060的驱动 p40就自动识别了,然后 darknet就能直接跑,我是windows系统

TianZerL commented 5 months ago

Windows下装谷歌提供的grid驱动就能用图形功能了

1027663760 commented 5 months ago

Windows下装谷歌提供的grid驱动就能用图形功能了

grid驱动安装后 3060就认不到了...