mirror of
https://github.com/PaddlePaddle/FastDeploy.git
synced 2025-10-05 16:48:03 +08:00
[Backend] add sophgo backend (#1015)
* Add Sophgo Device add sophgo backend in fastdeploy add resnet50, yolov5s, liteseg examples. * replace sophgo lib with download links; fix model.cc bug * modify CodeStyle * remove unuseful files;change the names of sophgo device and sophgo backend * sophgo support python and add python examples * remove unuseful rows in cmake according pr Co-authored-by: Zilong Xing <zilong.xing@sophgo.com>
This commit is contained in:
@@ -50,6 +50,7 @@ bool FastDeployModel::InitRuntimeWithSpecifiedBackend() {
|
||||
bool use_gpu = (runtime_option.device == Device::GPU);
|
||||
bool use_ipu = (runtime_option.device == Device::IPU);
|
||||
bool use_rknpu = (runtime_option.device == Device::RKNPU);
|
||||
bool use_sophgotpu = (runtime_option.device == Device::SOPHGOTPUD);
|
||||
bool use_timvx = (runtime_option.device == Device::TIMVX);
|
||||
bool use_ascend = (runtime_option.device == Device::ASCEND);
|
||||
bool use_kunlunxin = (runtime_option.device == Device::KUNLUNXIN);
|
||||
@@ -64,6 +65,11 @@ bool FastDeployModel::InitRuntimeWithSpecifiedBackend() {
|
||||
FDERROR << "The valid rknpu backends of model " << ModelName() << " are " << Str(valid_rknpu_backends) << ", " << runtime_option.backend << " is not supported." << std::endl;
|
||||
return false;
|
||||
}
|
||||
} else if (use_sophgotpu) {
|
||||
if (!IsSupported(valid_sophgonpu_backends, runtime_option.backend)) {
|
||||
FDERROR << "The valid rknpu backends of model " << ModelName() << " are " << Str(valid_rknpu_backends) << ", " << runtime_option.backend << " is not supported." << std::endl;
|
||||
return false;
|
||||
}
|
||||
} else if (use_timvx) {
|
||||
if (!IsSupported(valid_timvx_backends, runtime_option.backend)) {
|
||||
FDERROR << "The valid timvx backends of model " << ModelName() << " are " << Str(valid_timvx_backends) << ", " << runtime_option.backend << " is not supported." << std::endl;
|
||||
@@ -118,6 +124,8 @@ bool FastDeployModel::InitRuntimeWithSpecifiedDevice() {
|
||||
return CreateASCENDBackend();
|
||||
} else if (runtime_option.device == Device::KUNLUNXIN) {
|
||||
return CreateKunlunXinBackend();
|
||||
} else if (runtime_option.device == Device::SOPHGOTPUD) {
|
||||
return CreateSophgoNPUBackend();
|
||||
} else if (runtime_option.device == Device::IPU) {
|
||||
#ifdef WITH_IPU
|
||||
return CreateIpuBackend();
|
||||
@@ -218,6 +226,30 @@ bool FastDeployModel::CreateRKNPUBackend() {
|
||||
return false;
|
||||
}
|
||||
|
||||
bool FastDeployModel::CreateSophgoNPUBackend() {
|
||||
if (valid_sophgonpu_backends.empty()) {
|
||||
FDERROR << "There's no valid npu backends for model: " << ModelName()
|
||||
<< std::endl;
|
||||
return false;
|
||||
}
|
||||
|
||||
for (size_t i = 0; i < valid_sophgonpu_backends.size(); ++i) {
|
||||
if (!IsBackendAvailable(valid_sophgonpu_backends[i])) {
|
||||
continue;
|
||||
}
|
||||
runtime_option.backend = valid_sophgonpu_backends[i];
|
||||
runtime_ = std::unique_ptr<Runtime>(new Runtime());
|
||||
if (!runtime_->Init(runtime_option)) {
|
||||
return false;
|
||||
}
|
||||
runtime_initialized_ = true;
|
||||
return true;
|
||||
}
|
||||
FDERROR << "Cannot find an available npu backend to load this model."
|
||||
<< std::endl;
|
||||
return false;
|
||||
}
|
||||
|
||||
bool FastDeployModel::CreateTimVXBackend() {
|
||||
if (valid_timvx_backends.size() == 0) {
|
||||
FDERROR << "There's no valid timvx backends for model: " << ModelName()
|
||||
|
Reference in New Issue
Block a user