mirror of
https://github.com/PaddlePaddle/FastDeploy.git
synced 2025-10-14 04:44:00 +08:00
[Hackthon_4th 244] Added Paddle Lite GPU Backend (#1907)
* [improved] enum; ConfigureGpu(); * [improved] init() * [improved] valid place; model dir; is valid; * [added] WITH_OPENCL in cmake * [improved] set model; valid place; cmake url; cmake option; * Update runtime_option.cc --------- Co-authored-by: DefTruth <31974251+DefTruth@users.noreply.github.com>
This commit is contained in:
@@ -49,6 +49,31 @@ void LiteBackend::ConfigureCpu(const LiteBackendOption& option) {
|
||||
config_.set_valid_places(GetPlacesForCpu(option));
|
||||
}
|
||||
|
||||
void LiteBackend::ConfigureGpu(const LiteBackendOption& option) {
|
||||
std::vector<paddle::lite_api::Place> valid_places;
|
||||
if (option.enable_fp16) {
|
||||
valid_places.emplace_back(paddle::lite_api::Place{TARGET(kOpenCL),
|
||||
PRECISION(kFP16), DATALAYOUT(kImageDefault)});
|
||||
valid_places.emplace_back(paddle::lite_api::Place{TARGET(kOpenCL),
|
||||
PRECISION(kFP16), DATALAYOUT(kImageFolder)});
|
||||
}
|
||||
valid_places.emplace_back(paddle::lite_api::Place{TARGET(kOpenCL),
|
||||
PRECISION(kFloat)});
|
||||
valid_places.emplace_back(paddle::lite_api::Place{TARGET(kOpenCL),
|
||||
PRECISION(kAny), DATALAYOUT(kImageDefault)});
|
||||
valid_places.emplace_back(paddle::lite_api::Place{TARGET(kOpenCL),
|
||||
PRECISION(kAny), DATALAYOUT(kImageFolder)});
|
||||
valid_places.emplace_back(paddle::lite_api::Place{TARGET(kOpenCL),
|
||||
PRECISION(kAny)});
|
||||
valid_places.emplace_back(paddle::lite_api::Place{TARGET(kOpenCL),
|
||||
PRECISION(kInt32)});
|
||||
valid_places.emplace_back(paddle::lite_api::Place{TARGET(kARM),
|
||||
PRECISION(kInt8)});
|
||||
valid_places.emplace_back(paddle::lite_api::Place{TARGET(kARM),
|
||||
PRECISION(kFloat)});
|
||||
config_.set_valid_places(valid_places);
|
||||
}
|
||||
|
||||
void LiteBackend::ConfigureKunlunXin(const LiteBackendOption& option) {
|
||||
std::vector<paddle::lite_api::Place> valid_places;
|
||||
// TODO(yeliang): Placing kInt8 first may cause accuracy issues of some model
|
||||
|
@@ -40,6 +40,8 @@ void LiteBackend::BuildOption(const LiteBackendOption& option) {
|
||||
|
||||
if (option_.device == Device::CPU) {
|
||||
ConfigureCpu(option_);
|
||||
} else if (option_.device == Device::GPU) {
|
||||
ConfigureGpu(option_);
|
||||
} else if (option_.device == Device::TIMVX) {
|
||||
ConfigureTimvx(option_);
|
||||
} else if (option_.device == Device::KUNLUNXIN) {
|
||||
@@ -70,15 +72,21 @@ bool LiteBackend::Init(const RuntimeOption& runtime_option) {
|
||||
return false;
|
||||
}
|
||||
if (runtime_option.device != Device::CPU &&
|
||||
runtime_option.device != Device::GPU &&
|
||||
runtime_option.device != Device::KUNLUNXIN &&
|
||||
runtime_option.device != Device::ASCEND &&
|
||||
runtime_option.device != Device::TIMVX) {
|
||||
FDERROR << "PaddleLiteBackend only supports "
|
||||
"Device::CPU/Device::TIMVX/Device::KUNLUNXIN/Device::ASCEND, "
|
||||
"Device::CPU/Device::GPU/Device::TIMVX/Device::KUNLUNXIN/Device::ASCEND, "
|
||||
"but now it's "
|
||||
<< runtime_option.device << "." << std::endl;
|
||||
return false;
|
||||
}
|
||||
if (runtime_option.device == Device::GPU &&
|
||||
!paddle::lite_api::IsOpenCLBackendValid()) {
|
||||
FDERROR << "PaddleLiteBackend GPU (OpenCL) is not supported by the current device."
|
||||
<< std::endl;
|
||||
}
|
||||
if (runtime_option.model_from_memory_) {
|
||||
FDERROR << "PaddleLiteBackend doesn't support load model from memory, "
|
||||
"please load model from disk."
|
||||
|
@@ -51,6 +51,7 @@ class LiteBackend : public BaseBackend {
|
||||
void BuildOption(const LiteBackendOption& option);
|
||||
|
||||
void ConfigureCpu(const LiteBackendOption& option);
|
||||
void ConfigureGpu(const LiteBackendOption& option);
|
||||
void ConfigureTimvx(const LiteBackendOption& option);
|
||||
void ConfigureAscend(const LiteBackendOption& option);
|
||||
void ConfigureKunlunXin(const LiteBackendOption& option);
|
||||
|
Reference in New Issue
Block a user