From e3d02acd52ca4604b17b73d0aea3bb9097876f39 Mon Sep 17 00:00:00 2001 From: zhangmeng <775834166@qq.com> Date: 星期日, 17 十一月 2019 12:28:53 +0800 Subject: [PATCH] update --- csrc/ffmpeg/format/FormatIn.cpp | 2 +- csrc/common/gpu/info.cpp | 31 +++++++++++++++++++++++++++++++ csrc/common/gpu/info.h | 1 + 3 files changed, 33 insertions(+), 1 deletions(-) diff --git a/csrc/common/gpu/info.cpp b/csrc/common/gpu/info.cpp index d38a8ae..d19de83 100644 --- a/csrc/common/gpu/info.cpp +++ b/csrc/common/gpu/info.cpp @@ -369,6 +369,37 @@ return suitable_gpu; } +int getGPUPrior(const int need, const int reserved, const int lastChoice){ + nvGpuInfo_t gpu_info; + + int ret = get_gpu_info(&gpu_info); + if(!ret){ + if (gpu_info.device_count == 0) return -1; + + int suitable_gpu = -1; + int mem_idle = need; + for(int i = 0; i < gpu_info.device_count; i++){ + if (i != lastChoice){ + int mem_free = gpu_info.devices[i].memory_free >> 20; + if(mem_free > mem_idle){ + mem_idle = mem_free; + suitable_gpu = i; + } + } + } + if (suitable_gpu != -1){ + return suitable_gpu; + }else{ + if (gpu_info.device_count <= lastChoice) return -1; + int mem_free = (gpu_info.devices[lastChoice].memory_free >> 20) - reserved; + if(mem_free > need){ + return lastChoice; + } + } + } + return -1; +} + int getGPU(const int need){ nvGpuInfo_t gpu_buf; diff --git a/csrc/common/gpu/info.h b/csrc/common/gpu/info.h index 73da8ab..614a4cb 100644 --- a/csrc/common/gpu/info.h +++ b/csrc/common/gpu/info.h @@ -3,6 +3,7 @@ namespace gpu{ int getGPU(const int need); + int getGPUPrior(const int need, const int reserved, const int lastChoice); } #endif \ No newline at end of file diff --git a/csrc/ffmpeg/format/FormatIn.cpp b/csrc/ffmpeg/format/FormatIn.cpp index 376c9de..6aaefd3 100644 --- a/csrc/ffmpeg/format/FormatIn.cpp +++ b/csrc/ffmpeg/format/FormatIn.cpp @@ -194,7 +194,7 @@ for (int i = 0; i < 2; ++i) { if(hw_accl_){ - idle_gpu = gpu::getGPU(100); + idle_gpu = gpu::getGPUPrior(300, 1024, 0); if(idle_gpu < 0){ logIt("NO GPU RESOURCE TO DECODE"); hw_accl_ = false; -- Gitblit v1.8.0