|
|
|
@@ -201,26 +201,10 @@ kernel::LiteKernel *Scheduler::CreateSubKernel(const std::vector<kernel::LiteKer |
|
|
|
kernel::LiteKernel *sub_kernel = nullptr; |
|
|
|
#if SUPPORT_GPU |
|
|
|
if (arch == kernel::KERNEL_ARCH::kGPU) { |
|
|
|
auto head_kernel = kernels.front(); |
|
|
|
auto tail_kernel = kernels.back(); |
|
|
|
std::vector<kernel::LiteKernel *> input_kernels{head_kernel}; |
|
|
|
std::vector<kernel::LiteKernel *> output_kernels{tail_kernel}; |
|
|
|
std::vector<tensor::Tensor *> input_tensors; |
|
|
|
std::vector<tensor::Tensor *> output_tensors; |
|
|
|
for (auto tensor : head_kernel->in_tensors()) { |
|
|
|
if (tensor->Data() == nullptr) { |
|
|
|
input_tensors.emplace_back(tensor); |
|
|
|
} |
|
|
|
} |
|
|
|
for (auto tensor : tail_kernel->out_tensors()) { |
|
|
|
if (tensor->Data() == nullptr) { |
|
|
|
output_tensors.emplace_back(tensor); |
|
|
|
} |
|
|
|
} |
|
|
|
// std::vector<tensor::Tensor *> input_tensors = kernel::LiteKernelUtil::SubgraphInputTensors(kernels); |
|
|
|
// std::vector<tensor::Tensor *> output_tensors = kernel::LiteKernelUtil::SubgraphOutputTensors(kernels); |
|
|
|
// std::vector<kernel::LiteKernel *> input_kernels = kernel::LiteKernelUtil::SubgraphInputKernels(kernels); |
|
|
|
// std::vector<kernel::LiteKernel *> output_kernels = kernel::LiteKernelUtil::SubgraphOutputKernels(kernels); |
|
|
|
std::vector<tensor::Tensor *> input_tensors = kernel::LiteKernelUtil::SubgraphInputTensors(kernels); |
|
|
|
std::vector<tensor::Tensor *> output_tensors = kernel::LiteKernelUtil::SubgraphOutputTensors(kernels); |
|
|
|
std::vector<kernel::LiteKernel *> input_kernels = kernel::LiteKernelUtil::SubgraphInputKernels(kernels); |
|
|
|
std::vector<kernel::LiteKernel *> output_kernels = kernel::LiteKernelUtil::SubgraphOutputKernels(kernels); |
|
|
|
sub_kernel = |
|
|
|
new kernel::SubGraphOpenCLKernel(input_tensors, output_tensors, input_kernels, output_kernels, kernels); |
|
|
|
sub_kernel->Init(); |
|
|
|
|