Add support for zeKernelGetName

Change-Id: I167cc202436b6a76841c56e46baa684e7be90132
Signed-off: Jaime Arteaga <jaime.a.arteaga.molina@intel.com>
This commit is contained in:
Jaime Arteaga
2020-07-30 11:04:16 -07:00
committed by sys_ocldev
parent 3eafb466f6
commit 169089347f
6 changed files with 97 additions and 15 deletions

View File

@@ -106,6 +106,7 @@ struct Kernel : _ze_kernel_handle_t, virtual NEO::DispatchKernelEncoderI {
virtual ze_result_t suggestGroupSize(uint32_t globalSizeX, uint32_t globalSizeY,
uint32_t globalSizeZ, uint32_t *groupSizeX,
uint32_t *groupSizeY, uint32_t *groupSizeZ) = 0;
virtual ze_result_t getKernelName(size_t *pSize, char *pName) = 0;
virtual ze_result_t suggestMaxCooperativeGroupCount(uint32_t *totalGroupCount) = 0;

View File

@@ -565,6 +565,20 @@ ze_result_t KernelImp::getProperties(ze_kernel_properties_t *pKernelProperties)
return ZE_RESULT_SUCCESS;
}
ze_result_t KernelImp::getKernelName(size_t *pSize, char *pName) {
size_t kernelNameSize = this->kernelImmData->getDescriptor().kernelMetadata.kernelName.size() + 1;
if (0 == *pSize || nullptr == pName) {
*pSize = kernelNameSize;
return ZE_RESULT_SUCCESS;
}
*pSize = std::min(*pSize, kernelNameSize);
strncpy_s(pName, *pSize,
this->kernelImmData->getDescriptor().kernelMetadata.kernelName.c_str(), kernelNameSize);
return ZE_RESULT_SUCCESS;
}
ze_result_t KernelImp::getPropertiesExt(ze_kernel_propertiesExt_t *pKernelProperties) {
size_t kernelNameSize = std::min(this->kernelImmData->getDescriptor().kernelMetadata.kernelName.size(),
(static_cast<size_t>(ZE_MAX_KERNEL_NAME) - 1));

View File

@@ -51,6 +51,8 @@ struct KernelImp : Kernel {
uint32_t *groupSizeX, uint32_t *groupSizeY,
uint32_t *groupSizeZ) override;
ze_result_t getKernelName(size_t *pSize, char *pName) override;
ze_result_t suggestMaxCooperativeGroupCount(uint32_t *totalGroupCount) override;
const uint8_t *getCrossThreadData() const override { return crossThreadData.get(); }

View File

@@ -202,6 +202,39 @@ HWTEST2_F(SetKernelArg, givenBufferArgumentWhichHasNotBeenAllocatedByRuntimeThen
using KernelPropertiesTest = Test<ModuleFixture>;
HWTEST_F(KernelPropertiesTest, givenKernelThenCorrectNameIsRetrieved) {
ze_kernel_handle_t kernelHandle;
ze_kernel_desc_t kernelDesc = {};
kernelDesc.version = ZE_KERNEL_DESC_VERSION_CURRENT;
kernelDesc.flags = ZE_KERNEL_FLAG_NONE;
kernelDesc.pKernelName = kernelName.c_str();
ze_result_t res = module->createKernel(&kernelDesc, &kernelHandle);
EXPECT_EQ(ZE_RESULT_SUCCESS, res);
auto kernel = L0::Kernel::fromHandle(kernelHandle);
size_t kernelSize = 0;
res = kernel->getKernelName(&kernelSize, nullptr);
EXPECT_EQ(ZE_RESULT_SUCCESS, res);
EXPECT_EQ(kernelSize, kernelName.length() + 1);
size_t alteredKernelSize = kernelSize * 2;
res = kernel->getKernelName(&alteredKernelSize, nullptr);
EXPECT_EQ(ZE_RESULT_SUCCESS, res);
EXPECT_EQ(alteredKernelSize, kernelSize);
char *kernelNameRetrieved = new char[kernelSize];
res = kernel->getKernelName(&kernelSize, kernelNameRetrieved);
EXPECT_EQ(ZE_RESULT_SUCCESS, res);
EXPECT_EQ(0, strncmp(kernelName.c_str(), kernelNameRetrieved, kernelSize));
delete[] kernelNameRetrieved;
Kernel::fromHandle(kernelHandle)->destroy();
}
HWTEST_F(KernelPropertiesTest, givenKernelThenPropertiesAreRetrieved) {
ze_kernel_handle_t kernelHandle;