| 88 | return NO_ERROR; |
| 89 | } |
| 90 | virtual ErrorCode onExecute(const std::vector<Tensor *> &inputs, const std::vector<Tensor *> &outputs) override { |
| 91 | auto inputBn = TensorUtils::getDescribeOrigin(inputs[0])->getBackend(); |
| 92 | auto outputBn = TensorUtils::getDescribeOrigin(outputs[0])->getBackend(); |
| 93 | auto outputForwardtype = MNN_FORWARD_CPU; |
| 94 | if (nullptr != mMidCPUTensor.get()) { |
| 95 | inputBn->onCopyBuffer(inputs[0], mMidCPUTensor.get()); |
| 96 | outputBn->onCopyBuffer(mMidCPUTensor.get(), outputs[0]); |
| 97 | return NO_ERROR; |
| 98 | } |
| 99 | if (nullptr != outputBn) { |
| 100 | outputForwardtype = outputBn->type(); |
| 101 | } |
| 102 | if (outputForwardtype == MNN_FORWARD_CPU) { |
| 103 | MNN_ASSERT(nullptr != inputBn); |
| 104 | inputBn->onCopyBuffer(inputs[0], outputs[0]); |
| 105 | } else { |
| 106 | outputBn->onCopyBuffer(inputs[0], outputs[0]); |
| 107 | } |
| 108 | return NO_ERROR; |
| 109 | } |
| 110 | private: |
| 111 | std::shared_ptr<Tensor> mMidCPUTensor; |
| 112 | Backend* mBackupBackend; |
no test coverage detected