2021-03-09 18:30:21 +08:00
|
|
|
/*
|
|
|
|
* Copyright (C) 2021 Intel Corporation
|
|
|
|
*
|
|
|
|
* SPDX-License-Identifier: MIT
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include "opencl/source/kernel/multi_device_kernel.h"
|
|
|
|
namespace NEO {
|
|
|
|
|
|
|
|
MultiDeviceKernel::~MultiDeviceKernel() {
|
2021-03-16 19:32:40 +08:00
|
|
|
for (auto &pKernel : kernels) {
|
|
|
|
if (pKernel) {
|
|
|
|
pKernel->decRefInternal();
|
|
|
|
}
|
|
|
|
}
|
2021-03-09 18:30:21 +08:00
|
|
|
}
|
2021-03-16 19:32:40 +08:00
|
|
|
MultiDeviceKernel::MultiDeviceKernel(KernelVectorType kernelVector) : kernels(std::move(kernelVector)) {
|
|
|
|
for (auto &pKernel : kernels) {
|
|
|
|
if (pKernel) {
|
|
|
|
if (!defaultKernel) {
|
|
|
|
defaultKernel = kernels[(*pKernel->getDevices().begin())->getRootDeviceIndex()];
|
|
|
|
}
|
|
|
|
pKernel->incRefInternal();
|
|
|
|
pKernel->setMultiDeviceKernel(this);
|
|
|
|
}
|
|
|
|
}
|
2021-03-09 18:30:21 +08:00
|
|
|
};
|
|
|
|
|
|
|
|
} // namespace NEO
|