Zebin: Remove actual_kernel_start_offset from execEnv

This change is needed to bump zeInfo version beyond 1.6
- Version 1.6: Remove actual_kernel_start_offset from execution environment.

Signed-off-by: Kacper Nowak <kacper.nowak@intel.com>
This commit is contained in:
Kacper Nowak
2022-07-20 09:29:50 +00:00
committed by Compute-Runtime-Automation
parent 5c0115488d
commit 0a4ab48e0b
4 changed files with 15 additions and 24 deletions

View File

@@ -130,7 +130,6 @@ static constexpr ConstStringRef perThreadMemoryBuffers("per_thread_memory_buffer
static constexpr ConstStringRef experimentalProperties("experimental_properties"); static constexpr ConstStringRef experimentalProperties("experimental_properties");
namespace ExecutionEnv { namespace ExecutionEnv {
static constexpr ConstStringRef actualKernelStartOffset("actual_kernel_start_offset");
static constexpr ConstStringRef barrierCount("barrier_count"); static constexpr ConstStringRef barrierCount("barrier_count");
static constexpr ConstStringRef disableMidThreadPreemption("disable_mid_thread_preemption"); static constexpr ConstStringRef disableMidThreadPreemption("disable_mid_thread_preemption");
static constexpr ConstStringRef grfCount("grf_count"); static constexpr ConstStringRef grfCount("grf_count");
@@ -317,12 +316,10 @@ static constexpr WorkgroupWalkOrderDimensionsT workgroupWalkOrderDimensions = {0
} // namespace Defaults } // namespace Defaults
static constexpr ConstStringRef required[] = { static constexpr ConstStringRef required[] = {
Tags::Kernel::ExecutionEnv::actualKernelStartOffset,
Tags::Kernel::ExecutionEnv::grfCount, Tags::Kernel::ExecutionEnv::grfCount,
Tags::Kernel::ExecutionEnv::simdSize}; Tags::Kernel::ExecutionEnv::simdSize};
struct ExecutionEnvBaseT { struct ExecutionEnvBaseT {
ActualKernelStartOffsetT actualKernelStartOffset = -1;
BarrierCountT barrierCount = Defaults::barrierCount; BarrierCountT barrierCount = Defaults::barrierCount;
DisableMidThreadPreemptionT disableMidThreadPreemption = Defaults::disableMidThreadPreemption; DisableMidThreadPreemptionT disableMidThreadPreemption = Defaults::disableMidThreadPreemption;
GrfCountT grfCount = -1; GrfCountT grfCount = -1;

View File

@@ -254,9 +254,7 @@ DecodeError readZeInfoExecutionEnvironment(const NEO::Yaml::YamlParser &parser,
bool validExecEnv = true; bool validExecEnv = true;
for (const auto &execEnvMetadataNd : parser.createChildrenRange(node)) { for (const auto &execEnvMetadataNd : parser.createChildrenRange(node)) {
auto key = parser.readKey(execEnvMetadataNd); auto key = parser.readKey(execEnvMetadataNd);
if (NEO::Elf::ZebinKernelMetadata::Tags::Kernel::ExecutionEnv::actualKernelStartOffset == key) { if (NEO::Elf::ZebinKernelMetadata::Tags::Kernel::ExecutionEnv::barrierCount == key) {
validExecEnv = validExecEnv & readZeInfoValueChecked(parser, execEnvMetadataNd, outExecEnv.actualKernelStartOffset, context, outErrReason);
} else if (NEO::Elf::ZebinKernelMetadata::Tags::Kernel::ExecutionEnv::barrierCount == key) {
validExecEnv = validExecEnv & readZeInfoValueChecked(parser, execEnvMetadataNd, outExecEnv.barrierCount, context, outErrReason); validExecEnv = validExecEnv & readZeInfoValueChecked(parser, execEnvMetadataNd, outExecEnv.barrierCount, context, outErrReason);
} else if (NEO::Elf::ZebinKernelMetadata::Tags::Kernel::ExecutionEnv::disableMidThreadPreemption == key) { } else if (NEO::Elf::ZebinKernelMetadata::Tags::Kernel::ExecutionEnv::disableMidThreadPreemption == key) {
validExecEnv = validExecEnv & readZeInfoValueChecked(parser, execEnvMetadataNd, outExecEnv.disableMidThreadPreemption, context, outErrReason); validExecEnv = validExecEnv & readZeInfoValueChecked(parser, execEnvMetadataNd, outExecEnv.disableMidThreadPreemption, context, outErrReason);

View File

@@ -2721,7 +2721,6 @@ TEST(YamlParser, GivenSimpleZebinThenParsesItCorrectly) {
kernels: kernels:
- name: k - name: k
execution_env: execution_env:
actual_kernel_start_offset: 0
grf_count: 128 grf_count: 128
has_no_stateless_write: true has_no_stateless_write: true
simd_size: 32 simd_size: 32
@@ -2786,27 +2785,22 @@ kernels:
ASSERT_NE(nullptr, ndBtis); ASSERT_NE(nullptr, ndBtis);
EXPECT_STREQ("k", parser.readValue(*ndName).str().c_str()); EXPECT_STREQ("k", parser.readValue(*ndName).str().c_str());
{ // exec env { // exec env
auto ndActualKernelStartOffset = parser.getChild(*ndExecutionEnv, "actual_kernel_start_offset");
auto ndGrfCount = parser.getChild(*ndExecutionEnv, "grf_count"); auto ndGrfCount = parser.getChild(*ndExecutionEnv, "grf_count");
auto ndHasNoStatelessWrite = parser.getChild(*ndExecutionEnv, "has_no_stateless_write"); auto ndHasNoStatelessWrite = parser.getChild(*ndExecutionEnv, "has_no_stateless_write");
auto ndSimdSize = parser.getChild(*ndExecutionEnv, "simd_size"); auto ndSimdSize = parser.getChild(*ndExecutionEnv, "simd_size");
auto ndSubgroupIfp = parser.getChild(*ndExecutionEnv, "subgroup_independent_forward_progress"); auto ndSubgroupIfp = parser.getChild(*ndExecutionEnv, "subgroup_independent_forward_progress");
ASSERT_NE(nullptr, ndActualKernelStartOffset);
ASSERT_NE(nullptr, ndGrfCount); ASSERT_NE(nullptr, ndGrfCount);
ASSERT_NE(nullptr, ndHasNoStatelessWrite); ASSERT_NE(nullptr, ndHasNoStatelessWrite);
ASSERT_NE(nullptr, ndSimdSize); ASSERT_NE(nullptr, ndSimdSize);
ASSERT_NE(nullptr, ndSubgroupIfp); ASSERT_NE(nullptr, ndSubgroupIfp);
uint32_t actualKernelStartOffset;
uint32_t grfCount; uint32_t grfCount;
bool hasNoStatelessWrite; bool hasNoStatelessWrite;
uint32_t simdSize; uint32_t simdSize;
bool subgroupIfp; bool subgroupIfp;
EXPECT_TRUE(parser.readValueChecked(*ndActualKernelStartOffset, actualKernelStartOffset));
EXPECT_TRUE(parser.readValueChecked(*ndGrfCount, grfCount)); EXPECT_TRUE(parser.readValueChecked(*ndGrfCount, grfCount));
EXPECT_TRUE(parser.readValueChecked(*ndHasNoStatelessWrite, hasNoStatelessWrite)); EXPECT_TRUE(parser.readValueChecked(*ndHasNoStatelessWrite, hasNoStatelessWrite));
EXPECT_TRUE(parser.readValueChecked(*ndSimdSize, simdSize)); EXPECT_TRUE(parser.readValueChecked(*ndSimdSize, simdSize));
EXPECT_TRUE(parser.readValueChecked(*ndSubgroupIfp, subgroupIfp)); EXPECT_TRUE(parser.readValueChecked(*ndSubgroupIfp, subgroupIfp));
EXPECT_EQ(0U, actualKernelStartOffset);
EXPECT_EQ(128U, grfCount); EXPECT_EQ(128U, grfCount);
EXPECT_TRUE(hasNoStatelessWrite); EXPECT_TRUE(hasNoStatelessWrite);
EXPECT_EQ(32U, simdSize); EXPECT_EQ(32U, simdSize);

View File

@@ -458,7 +458,8 @@ TEST(ExtractZeInfoKernelSections, GivenKnownSectionsThenCapturesThemProperly) {
kernels: kernels:
- name: some_kernel - name: some_kernel
execution_env: execution_env:
actual_kernel_start_offset: 0 grf_count: 128
simd_size: 32
debug_env: debug_env:
sip_surface_bti: 0 sip_surface_bti: 0
payload_arguments: payload_arguments:
@@ -514,7 +515,8 @@ TEST(ExtractZeInfoKernelSections, GivenExperimentalPropertyInKnownSectionsThenSe
kernels: kernels:
- name: some_kernel - name: some_kernel
execution_env: execution_env:
actual_kernel_start_offset: 0 grf_count: 128
simd_size: 32
payload_arguments: payload_arguments:
- arg_type: global_id_offset - arg_type: global_id_offset
offset: 0 offset: 0
@@ -968,7 +970,6 @@ TEST(ReadZeInfoExecutionEnvironment, GivenValidYamlEntriesThenSetProperMembers)
kernels: kernels:
- name: some_kernel - name: some_kernel
execution_env: execution_env:
actual_kernel_start_offset : 5
barrier_count : 7 barrier_count : 7
disable_mid_thread_preemption : true disable_mid_thread_preemption : true
grf_count : 13 grf_count : 13
@@ -1012,7 +1013,6 @@ kernels:
EXPECT_EQ(NEO::DecodeError::Success, err); EXPECT_EQ(NEO::DecodeError::Success, err);
EXPECT_TRUE(errors.empty()) << errors; EXPECT_TRUE(errors.empty()) << errors;
EXPECT_TRUE(warnings.empty()) << warnings; EXPECT_TRUE(warnings.empty()) << warnings;
EXPECT_EQ(5, execEnv.actualKernelStartOffset);
EXPECT_EQ(7, execEnv.barrierCount); EXPECT_EQ(7, execEnv.barrierCount);
EXPECT_TRUE(execEnv.disableMidThreadPreemption); EXPECT_TRUE(execEnv.disableMidThreadPreemption);
EXPECT_EQ(13, execEnv.grfCount); EXPECT_EQ(13, execEnv.grfCount);
@@ -1044,7 +1044,7 @@ TEST(ReadZeInfoExecutionEnvironment, GivenUnknownEntryThenEmmitsWarning) {
kernels: kernels:
- name: some_kernel - name: some_kernel
execution_env: execution_env:
actual_kernel_start_offset : 17 simd_size : 8
something_new : 36 something_new : 36
... ...
)==="; )===";
@@ -1062,7 +1062,7 @@ kernels:
EXPECT_EQ(NEO::DecodeError::Success, err); EXPECT_EQ(NEO::DecodeError::Success, err);
EXPECT_TRUE(errors.empty()) << errors; EXPECT_TRUE(errors.empty()) << errors;
EXPECT_STREQ("DeviceBinaryFormat::Zebin::.ze_info : Unknown entry \"something_new\" in context of some_kernel\n", warnings.c_str()); EXPECT_STREQ("DeviceBinaryFormat::Zebin::.ze_info : Unknown entry \"something_new\" in context of some_kernel\n", warnings.c_str());
EXPECT_EQ(17, execEnv.actualKernelStartOffset); EXPECT_EQ(8, execEnv.simdSize);
} }
TEST(ReadZeInfoExecutionEnvironment, GivenInvalidValueForKnownEntryThenFails) { TEST(ReadZeInfoExecutionEnvironment, GivenInvalidValueForKnownEntryThenFails) {
@@ -1070,7 +1070,7 @@ TEST(ReadZeInfoExecutionEnvironment, GivenInvalidValueForKnownEntryThenFails) {
kernels: kernels:
- name: some_kernel - name: some_kernel
execution_env: execution_env:
actual_kernel_start_offset : true simd_size : true
... ...
)==="; )===";
@@ -1086,7 +1086,7 @@ kernels:
auto err = NEO::readZeInfoExecutionEnvironment(parser, execEnvNode, execEnv, "some_kernel", errors, warnings); auto err = NEO::readZeInfoExecutionEnvironment(parser, execEnvNode, execEnv, "some_kernel", errors, warnings);
EXPECT_EQ(NEO::DecodeError::InvalidBinary, err); EXPECT_EQ(NEO::DecodeError::InvalidBinary, err);
EXPECT_TRUE(warnings.empty()) << warnings; EXPECT_TRUE(warnings.empty()) << warnings;
EXPECT_STREQ("DeviceBinaryFormat::Zebin::.ze_info : could not read actual_kernel_start_offset from : [true] in context of : some_kernel\n", errors.c_str()); EXPECT_STREQ("DeviceBinaryFormat::Zebin::.ze_info : could not read simd_size from : [true] in context of : some_kernel\n", errors.c_str());
} }
TEST(ReadZeInfoExecutionEnvironment, GivenInvalidLengthForKnownCollectionEntryThenFails) { TEST(ReadZeInfoExecutionEnvironment, GivenInvalidLengthForKnownCollectionEntryThenFails) {
@@ -3020,7 +3020,8 @@ TEST(PopulateKernelDescriptor, GivenInvalidPerThreadPayloadArgYamlEntriesThenFai
kernels: kernels:
- name : some_kernel - name : some_kernel
execution_env: execution_env:
actual_kernel_start_offset: 0 grf_count: 128
simd_size: 32
per_thread_payload_arguments: per_thread_payload_arguments:
- arg_type: local_id - arg_type: local_id
offset: aaa offset: aaa
@@ -3048,7 +3049,8 @@ TEST(PopulateKernelDescriptor, GivenInvalidPayloadArgYamlEntriesThenFails) {
kernels: kernels:
- name : some_kernel - name : some_kernel
execution_env: execution_env:
actual_kernel_start_offset: 0 grf_count: 128
simd_size: 32
payload_arguments: payload_arguments:
- arg_type: global_id_offset - arg_type: global_id_offset
offset: aaa offset: aaa
@@ -3076,7 +3078,8 @@ TEST(PopulateKernelDescriptor, GivenInvalidPerThreadMemoryBufferYamlEntriesThenF
kernels: kernels:
- name : some_kernel - name : some_kernel
execution_env: execution_env:
actual_kernel_start_offset: 0 grf_count: 128
simd_size: 32
per_thread_memory_buffers: per_thread_memory_buffers:
- type: scratch - type: scratch
usage: spill_fill_space usage: spill_fill_space
@@ -3838,7 +3841,6 @@ TEST(PopulateKernelDescriptor, GivenValidExecutionEnvironmentThenPopulateKernelD
kernels: kernels:
- name : some_kernel - name : some_kernel
execution_env: execution_env:
actual_kernel_start_offset : 5
barrier_count : 7 barrier_count : 7
disable_mid_thread_preemption : true disable_mid_thread_preemption : true
grf_count : 13 grf_count : 13