diff --git a/mindspore/lite/src/lite_session.cc b/mindspore/lite/src/lite_session.cc index 82ec0d8147..446e259f23 100644 --- a/mindspore/lite/src/lite_session.cc +++ b/mindspore/lite/src/lite_session.cc @@ -380,6 +380,7 @@ int LiteSession::Init(const Context *context) { auto opencl_runtime = ocl_runtime_wrap_.GetInstance(); opencl_runtime->SetFp16Enable(gpu_device_info.enable_float16_); if (opencl_runtime->Init() != RET_OK) { + this->context_->device_list_ = {{DT_CPU, {gpu_device_info.enable_float16_, MID_CPU}}}; MS_LOG(WARNING) << "Init OpenCL runtime failed, change to CPU mode."; } else { MS_LOG(INFO) << "Init OpenCL runtime success."; diff --git a/mindspore/lite/src/runtime/kernel/opencl/subgraph_opencl_kernel.cc b/mindspore/lite/src/runtime/kernel/opencl/subgraph_opencl_kernel.cc index 0f23b982fa..c77acbc360 100644 --- a/mindspore/lite/src/runtime/kernel/opencl/subgraph_opencl_kernel.cc +++ b/mindspore/lite/src/runtime/kernel/opencl/subgraph_opencl_kernel.cc @@ -101,6 +101,10 @@ int SubGraphOpenCLKernel::GenToFormatOp(const std::vector &in_te out_convert_ops->clear(); MS_ASSERT(in_tensors.size() == to_kernels.size()); MS_ASSERT(in_tensors.size() == from_kernels.size()); + std::vector> loop_kernels; + if (mem_type == OpenCLMemType::BUF) { + GetKernelFromToTensor(in_tensors, nodes_, &loop_kernels, true); + } ReplaceOutTensorAndKernelToNull(in_tensors, in_kernels, mem_type); @@ -163,8 +167,6 @@ int SubGraphOpenCLKernel::GenToFormatOp(const std::vector &in_te // replace in_tensor of inner kernel which use out tensor if (mem_type == OpenCLMemType::BUF) { - std::vector> loop_kernels; - GetKernelFromToTensor(in_tensors, nodes_, &loop_kernels, true); for (auto &iv : loop_kernels[i]) { auto tensors = iv->in_tensors(); auto jv = std::find(tensors.begin(), tensors.end(), in_tensors.at(i));