PaddleLite学习<三>使用GPU推理
2023-11-22 14:53:49
标签: paddle
作者: Sam(甄峰) sam_code@hotmail.com
当前大多数手机芯片和嵌入式芯片都加入了GPU芯片。如何利用GPU芯片加快推理,就是一个很大的问题。
Paddle
lite利用跨平台计算框架OpenCL将计算映射到GPU上执行,以充分利用GPU硬件算力,提高推理性能。在执行时,会优先在GPU上执行算子,如果OP没有GPU实现,则该OP退回到CPU上执行。
1.硬件支持:
支持高通骁龙 Adreno系列GPU. ARM Mali系列GPU。PowerVR系列GPU。
2.
paddle-lite支持:
需要编译paddle-lite,
添加with_opencl=ON
3.
模型转换:
需要重新使用opt工具转换模型。添加上:--valid_target=opencl
4.
代码相关:
4.1:判断当前平台是否支持OpenCL:
bool is_opencl_backend_valid =
::IsOpenCLBackendValid();
std::cout
<<
"###########################################is_opencl_backend_valid:"
<< (is_opencl_backend_valid ? "true"
: "false") << std::endl;
4.2: set_opencl_binary_path_name()
函数可以避免在线编译 OpenCL
kernel,进而提高首帧运行速度。推荐在工程代码中使用该函数。
if (is_opencl_backend_valid)
{
#ifdef ANDROID
__android_log_print(ANDROID_LOG_INFO,
"JNIDetection",
"Platform
Support OpenCL.");
#endif
const std::string bin_path
= "/data/sam/";
const std::string bin_name
= "lite_opencl_kernel.bin";
config.set_opencl_binary_path_name(bin_path, bin_name);
}
PaddleLite学习<三>使用GPU推理
作者: Sam(甄峰) sam_code@hotmail.com
当前大多数手机芯片和嵌入式芯片都加入了GPU芯片。如何利用GPU芯片加快推理,就是一个很大的问题。 Paddle lite利用跨平台计算框架OpenCL将计算映射到GPU上执行,以充分利用GPU硬件算力,提高推理性能。在执行时,会优先在GPU上执行算子,如果OP没有GPU实现,则该OP退回到CPU上执行。
1.硬件支持:
支持高通骁龙 Adreno系列GPU. ARM Mali系列GPU。PowerVR系列GPU。
2. paddle-lite支持:
需要编译paddle-lite, 添加with_opencl=ON
3. 模型转换:
需要重新使用opt工具转换模型。添加上:--valid_target=opencl
4. 代码相关:
4.1:判断当前平台是否支持OpenCL:
bool is_opencl_backend_valid = ::IsOpenCLBackendValid();
std::cout
<< "###########################################is_opencl_backend_valid:"
<< (is_opencl_backend_valid ? "true" : "false") << std::endl;
4.2: set_opencl_binary_path_name()
函数可以避免在线编译 OpenCL kernel,进而提高首帧运行速度。推荐在工程代码中使用该函数。
if (is_opencl_backend_valid)
{
#ifdef ANDROID
__android_log_print(ANDROID_LOG_INFO,
"JNIDetection",
"Platform Support OpenCL.");
#endif
const std::string bin_path = "/data/sam/";
const std::string bin_name = "lite_opencl_kernel.bin";
config.set_opencl_binary_path_name(bin_path, bin_name);
}