mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-03 23:03:02 +08:00
Move PATCH_TOKEN_GLOBAL_HOST_ACCESS_TABLE to kernel scope tokens
This commit moves patch token with global host access table to the kernel scope from the program scope. Related-To: NEO-6734 Signed-off-by: Kacper Nowak <kacper.nowak@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
a5ac961726
commit
86434e485d
@@ -101,34 +101,6 @@ struct ValidEmptyProgram : NEO::PatchTokenBinary::ProgramFromPatchtokens {
|
||||
iOpenCL::SProgramBinaryHeader *headerMutable = nullptr;
|
||||
};
|
||||
|
||||
struct ValidProgramWithHostAccessTable : ValidEmptyProgram {
|
||||
ValidProgramWithHostAccessTable() {
|
||||
iOpenCL::SPatchFunctionTableInfo hostAccessTok = {};
|
||||
hostAccessTok.Token = NEO::PatchTokenBinary::_PATCH_TOKEN_GLOBAL_HOST_ACCESS_TABLE;
|
||||
hostAccessTok.NumEntries = 2;
|
||||
struct HostAccessTableEntry {
|
||||
char deviceName[vISA::MAX_SYMBOL_NAME_LENGTH];
|
||||
char hostName[vISA::MAX_SYMBOL_NAME_LENGTH];
|
||||
};
|
||||
hostAccessTok.Size = sizeof(hostAccessTok) + 2 * sizeof(HostAccessTableEntry);
|
||||
const size_t hostAccessTokStorageSize = sizeof(hostAccessTok) + 2 * sizeof(HostAccessTableEntry);
|
||||
uint8_t hostAccessTokStorage[hostAccessTokStorageSize] = {};
|
||||
uint8_t *storagePtr = hostAccessTokStorage;
|
||||
memcpy_s(storagePtr, hostAccessTokStorageSize, &hostAccessTok, sizeof(iOpenCL::SPatchFunctionTableInfo));
|
||||
storagePtr = ptrOffset(storagePtr, sizeof(iOpenCL::SPatchFunctionTableInfo));
|
||||
|
||||
HostAccessTableEntry *entries = reinterpret_cast<HostAccessTableEntry *>(storagePtr);
|
||||
strcpy_s(entries[0].deviceName, vISA::MAX_SYMBOL_NAME_LENGTH, "deviceNameOne");
|
||||
strcpy_s(entries[0].hostName, vISA::MAX_SYMBOL_NAME_LENGTH, "hostNameOne");
|
||||
strcpy_s(entries[1].deviceName, vISA::MAX_SYMBOL_NAME_LENGTH, "deviceNameTwo");
|
||||
strcpy_s(entries[1].hostName, vISA::MAX_SYMBOL_NAME_LENGTH, "hostNameTwo");
|
||||
|
||||
storage.insert(storage.end(), hostAccessTokStorage, hostAccessTokStorage + hostAccessTokStorageSize);
|
||||
recalcTokPtr();
|
||||
headerMutable->PatchListSize = hostAccessTokStorageSize;
|
||||
}
|
||||
};
|
||||
|
||||
struct ValidProgramWithConstantSurface : ValidEmptyProgram {
|
||||
ValidProgramWithConstantSurface() {
|
||||
iOpenCL::SPatchAllocateConstantMemorySurfaceProgramBinaryInfo constSurfTok = {};
|
||||
@@ -362,4 +334,40 @@ struct ValidProgramWithKernelAndArg : ValidProgramWithKernel {
|
||||
size_t kernelArgOffset = 0U;
|
||||
};
|
||||
|
||||
struct ValidProgramWithKernelUsingHostAccessTable : ValidProgramWithKernel {
|
||||
ValidProgramWithKernelUsingHostAccessTable() {
|
||||
hostAccessMutableOffset = storage.size();
|
||||
iOpenCL::SPatchFunctionTableInfo hostAccessTok = {};
|
||||
hostAccessTok.Token = NEO::PatchTokenBinary::_PATCH_TOKEN_GLOBAL_HOST_ACCESS_TABLE;
|
||||
hostAccessTok.NumEntries = 2;
|
||||
struct HostAccessTableEntry {
|
||||
char deviceName[vISA::MAX_SYMBOL_NAME_LENGTH];
|
||||
char hostName[vISA::MAX_SYMBOL_NAME_LENGTH];
|
||||
};
|
||||
hostAccessTok.Size = sizeof(hostAccessTok) + 2 * sizeof(HostAccessTableEntry);
|
||||
const size_t hostAccessTokStorageSize = sizeof(hostAccessTok) + 2 * sizeof(HostAccessTableEntry);
|
||||
uint8_t hostAccessTokStorage[hostAccessTokStorageSize] = {};
|
||||
uint8_t *storagePtr = hostAccessTokStorage;
|
||||
memcpy_s(storagePtr, hostAccessTokStorageSize, &hostAccessTok, sizeof(iOpenCL::SPatchFunctionTableInfo));
|
||||
storagePtr = ptrOffset(storagePtr, sizeof(iOpenCL::SPatchFunctionTableInfo));
|
||||
|
||||
HostAccessTableEntry *entries = reinterpret_cast<HostAccessTableEntry *>(storagePtr);
|
||||
strcpy_s(entries[0].deviceName, vISA::MAX_SYMBOL_NAME_LENGTH, "deviceNameOne");
|
||||
strcpy_s(entries[0].hostName, vISA::MAX_SYMBOL_NAME_LENGTH, "hostNameOne");
|
||||
strcpy_s(entries[1].deviceName, vISA::MAX_SYMBOL_NAME_LENGTH, "deviceNameTwo");
|
||||
strcpy_s(entries[1].hostName, vISA::MAX_SYMBOL_NAME_LENGTH, "hostNameTwo");
|
||||
|
||||
storage.insert(storage.end(), hostAccessTokStorage, hostAccessTokStorage + hostAccessTokStorageSize);
|
||||
ValidProgramWithKernel::recalcTokPtr();
|
||||
}
|
||||
|
||||
void recalcTokPtr() {
|
||||
ValidProgramWithKernel::recalcTokPtr();
|
||||
hostAccessMutable = reinterpret_cast<iOpenCL::SPatchFunctionTableInfo *>(storage.data() + hostAccessMutableOffset);
|
||||
this->kernels[0].tokens.hostAccessTable = hostAccessMutable;
|
||||
}
|
||||
|
||||
iOpenCL::SPatchFunctionTableInfo *hostAccessMutable = nullptr;
|
||||
size_t hostAccessMutableOffset = 0u;
|
||||
};
|
||||
} // namespace PatchTokensTestData
|
||||
|
||||
@@ -300,12 +300,15 @@ TEST(PopulateProgramInfoFromPatchtokensTests, GivenProgramWithKernelsWhenKernelH
|
||||
EXPECT_EQ(1U, receivedSegmentIds[1]);
|
||||
}
|
||||
|
||||
TEST(PopulateProgramInfoFromPatchtokensTests, givenProgramWithHostAccessTableGThenPopulateDeviceHostNameMapCorrectly) {
|
||||
PatchTokensTestData::ValidProgramWithHostAccessTable programTokens;
|
||||
TEST(PopulateProgramInfoFromPatchtokensTests, givenProgramWithKernelWhenKernelHasHostAccessTableThenPopulateDeviceHostNameMapCorrectly) {
|
||||
PatchTokensTestData::ValidProgramWithKernelUsingHostAccessTable programToEncode;
|
||||
programToEncode.headerMutable->NumberOfKernels = 1;
|
||||
programToEncode.storage.insert(programToEncode.storage.end(), programToEncode.kernels[0].blobs.kernelInfo.begin(), programToEncode.kernels[0].blobs.kernelInfo.end());
|
||||
NEO::PatchTokenBinary::ProgramFromPatchtokens decodedProgram;
|
||||
bool decodeSuccess = NEO::PatchTokenBinary::decodeProgramFromPatchtokensBlob(programTokens.blobs.programInfo, decodedProgram);
|
||||
bool decodeSuccess = NEO::PatchTokenBinary::decodeProgramFromPatchtokensBlob(programToEncode.storage, decodedProgram);
|
||||
EXPECT_TRUE(decodeSuccess);
|
||||
NEO::ProgramInfo programInfo;
|
||||
|
||||
NEO::ProgramInfo programInfo = {};
|
||||
NEO::populateProgramInfo(programInfo, decodedProgram);
|
||||
EXPECT_EQ(2u, programInfo.globalsDeviceToHostNameMap.size());
|
||||
EXPECT_STREQ("hostNameOne", programInfo.globalsDeviceToHostNameMap["deviceNameOne"].c_str());
|
||||
|
||||
Reference in New Issue
Block a user