Files
compute-runtime/opencl/source/built_ins/built_ins.inl
Kacper Nowak 7be2ac84d3 Refactor(ocl): refactor OCL Kernel and MultiDeviceKernel class 1/n
- For static create() method for Kernel and MultiDeviceKernel force errcodeRet
parameter to be passed via reference (instead of a pointer)
- Move part of kernel's creation logic to initialize() method

Signed-off-by: Kacper Nowak <kacper.nowak@intel.com>
2023-04-11 11:43:26 +02:00

43 lines
1.7 KiB
C++

/*
* Copyright (C) 2018-2023 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#include "opencl/source/built_ins/aux_translation_builtin.h"
#include "opencl/source/built_ins/populate_built_ins.inl"
#include "opencl/source/kernel/kernel.h"
#include "opencl/source/mem_obj/buffer.h"
namespace NEO {
BuiltInOp<EBuiltInOps::AuxTranslation>::BuiltInOp(BuiltIns &kernelsLib, ClDevice &device) : BuiltinDispatchInfoBuilder(kernelsLib, device) {
BuiltinDispatchInfoBuilder::populate(EBuiltInOps::AuxTranslation, "", "fullCopy", multiDeviceBaseKernel);
baseKernel = multiDeviceBaseKernel->getKernel(clDevice.getRootDeviceIndex());
resizeKernelInstances(5);
}
void BuiltInOp<EBuiltInOps::AuxTranslation>::resizeKernelInstances(size_t size) const {
convertToNonAuxKernel.reserve(size);
convertToAuxKernel.reserve(size);
for (size_t i = convertToNonAuxKernel.size(); i < size; i++) {
cl_int retVal{CL_SUCCESS};
auto clonedNonAuxToAuxKernel = Kernel::create(baseKernel->getProgram(), baseKernel->getKernelInfo(), clDevice, retVal);
UNRECOVERABLE_IF(CL_SUCCESS != retVal);
clonedNonAuxToAuxKernel->setAuxTranslationDirection(AuxTranslationDirection::NonAuxToAux);
auto clonedAuxToNonAuxKernel = Kernel::create(baseKernel->getProgram(), baseKernel->getKernelInfo(), clDevice, retVal);
UNRECOVERABLE_IF(CL_SUCCESS != retVal);
clonedAuxToNonAuxKernel->setAuxTranslationDirection(AuxTranslationDirection::AuxToNonAux);
clonedNonAuxToAuxKernel->cloneKernel(baseKernel);
clonedAuxToNonAuxKernel->cloneKernel(baseKernel);
convertToAuxKernel.emplace_back(clonedNonAuxToAuxKernel);
convertToNonAuxKernel.emplace_back(clonedAuxToNonAuxKernel);
}
}
} // namespace NEO