Add stub for dynamic link function and for extended kernel properties

Change-Id: Ifaaf1226114233618e7959def086989cf93bd0bd
Signed-off: Jaime Arteaga <jaime.a.arteaga.molina@intel.com>
This commit is contained in:
Jaime Arteaga
2020-06-17 07:43:24 -07:00
committed by sys_ocldev
parent 4cb6c17d21
commit 5b61ad0966
12 changed files with 321 additions and 3 deletions

View File

@@ -60,6 +60,7 @@ struct ModuleFixture : public DeviceFixture {
const std::string binaryFilename = "test_kernel";
const std::string kernelName = "test";
const uint32_t numKernelArguments = 6;
std::unique_ptr<L0::Module> module;
std::unique_ptr<WhiteBox<::L0::Kernel>> kernel;
};

View File

@@ -39,6 +39,9 @@ struct Mock<Module> : public Module {
MOCK_METHOD(const L0::KernelImmutableData *, getKernelImmutableData, (const char *functionName), (const, override));
MOCK_METHOD(uint32_t, getMaxGroupSize, (), (const, override));
MOCK_METHOD(ze_result_t, getKernelNames, (uint32_t * pCount, const char **pNames), (override));
MOCK_METHOD(ze_result_t, performDynamicLink,
(uint32_t numModules, ze_module_handle_t *phModules, ze_module_build_log_handle_t *phLinkLog),
(override));
MOCK_METHOD(ze_result_t, getGlobalPointer, (const char *pGlobalName, void **pPtr), (override));
MOCK_METHOD(bool, isDebugEnabled, (), (const, override));
};

View File

@@ -175,5 +175,64 @@ HWTEST2_F(SetKernelArg, givenBufferArgumentWhichHasNotBeenAllocatedByRuntimeThen
EXPECT_EQ(ZE_RESULT_ERROR_INVALID_ARGUMENT, res);
}
using KernelPropertiesTest = Test<ModuleFixture>;
HWTEST_F(KernelPropertiesTest, givenKernelThenPropertiesAreRetrieved) {
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);
ze_kernel_propertiesExt_t kernelProperties = {};
kernelProperties.requiredNumSubGroups = std::numeric_limits<uint32_t>::max();
kernelProperties.requiredSubgroupSize = std::numeric_limits<uint32_t>::max();
kernelProperties.maxSubgroupSize = std::numeric_limits<uint32_t>::max();
kernelProperties.maxNumSubgroups = std::numeric_limits<uint32_t>::max();
kernelProperties.localMemSize = std::numeric_limits<uint32_t>::max();
kernelProperties.privateMemSize = std::numeric_limits<uint32_t>::max();
kernelProperties.spillMemSize = std::numeric_limits<uint32_t>::max();
kernelProperties.numKernelArgs = std::numeric_limits<uint32_t>::max();
memset(&kernelProperties.uuid.kid, std::numeric_limits<int>::max(),
sizeof(kernelProperties.uuid.kid));
memset(&kernelProperties.uuid.mid, std::numeric_limits<int>::max(),
sizeof(kernelProperties.uuid.mid));
ze_kernel_propertiesExt_t kernelPropertiesBefore = {};
kernelPropertiesBefore = kernelProperties;
kernel->getPropertiesExt(&kernelProperties);
EXPECT_EQ(0, strncmp(kernelName.c_str(), kernelProperties.name,
sizeof(kernelProperties.name)));
EXPECT_EQ(numKernelArguments, kernelProperties.numKernelArgs);
EXPECT_EQ(0u, kernelProperties.requiredNumSubGroups);
EXPECT_EQ(0u, kernelProperties.requiredSubgroupSize);
EXPECT_EQ(0u, kernelProperties.maxSubgroupSize);
EXPECT_EQ(0u, kernelProperties.maxNumSubgroups);
EXPECT_EQ(0u, kernelProperties.localMemSize);
EXPECT_EQ(0u, kernelProperties.privateMemSize);
EXPECT_EQ(0u, kernelProperties.spillMemSize);
uint8_t zeroKid[ZE_MAX_KERNEL_UUID_SIZE];
uint8_t zeroMid[ZE_MAX_MODULE_UUID_SIZE];
memset(&zeroKid, 0, ZE_MAX_KERNEL_UUID_SIZE);
memset(&zeroMid, 0, ZE_MAX_MODULE_UUID_SIZE);
EXPECT_EQ(0, memcmp(&kernelProperties.uuid.kid, &zeroKid,
sizeof(kernelProperties.uuid.kid)));
EXPECT_EQ(0, memcmp(&kernelProperties.uuid.mid, &zeroMid,
sizeof(kernelProperties.uuid.mid)));
Kernel::fromHandle(kernelHandle)->destroy();
}
} // namespace ult
} // namespace L0

View File

@@ -114,5 +114,19 @@ HWTEST_F(ModuleSpecConstantsTests, givenSpecializationConstantsSetInDescriptorTh
module->destroy();
}
using ModuleDynamicLinkTests = Test<ModuleFixture>;
HWTEST_F(ModuleDynamicLinkTests, givenCallToDynamicLinkThenUnsupportedFeatureIsReturned) {
auto module0 = new Module(device, nullptr);
auto module1 = new Module(device, nullptr);
std::vector<ze_module_handle_t> hModules = {module0->toHandle(), module1->toHandle()};
ze_result_t res = module0->performDynamicLink(2, hModules.data(), nullptr);
EXPECT_EQ(ZE_RESULT_ERROR_UNSUPPORTED_FEATURE, res);
delete module0;
delete module1;
}
} // namespace ult
} // namespace L0