feature: add support for new ze_bin wg barrier token

Related-To: NEO-11031

Signed-off-by: Bartosz Dunajski <bartosz.dunajski@intel.com>
This commit is contained in:
Bartosz Dunajski 2024-05-31 09:45:09 +00:00 committed by Compute-Runtime-Automation
parent 2406453440
commit cc8b5ee972
5 changed files with 26 additions and 2 deletions

View File

@ -128,6 +128,7 @@ inline constexpr ConstStringRef scratchPointer("scratch_pointer");
inline constexpr ConstStringRef regionGroupSize("region_group_size");
inline constexpr ConstStringRef regionGroupDimension("region_group_dimension");
inline constexpr ConstStringRef regionGroupWgCount("region_group_wg_count");
inline constexpr ConstStringRef regionGroupBarrierBuffer("region_group_barrier_buffer");
namespace Image {
inline constexpr ConstStringRef width("image_width");
@ -506,6 +507,7 @@ enum ArgType : uint8_t {
argTypeRegionGroupSize,
argTypeRegionGroupDimension,
argTypeRegionGroupWgCount,
argTypeRegionGroupBarrierBuffer,
argTypeMax
};

View File

@ -1394,6 +1394,9 @@ DecodeError populateKernelPayloadArgument(NEO::KernelDescriptor &dst, const Kern
case Types::Kernel::argTypeRegionGroupWgCount:
return populateWithOffsetChecked(dst.payloadMappings.dispatchTraits.regionGroupWgCount, sizeof(int32_t), Tags::Kernel::PayloadArgument::ArgType::regionGroupWgCount);
case Types::Kernel::argTypeRegionGroupBarrierBuffer:
return populateWithOffsetChecked(dst.payloadMappings.dispatchTraits.regionGroupBarrierBuffer, sizeof(int64_t), Tags::Kernel::PayloadArgument::ArgType::regionGroupBarrierBuffer);
}
UNREACHABLE();

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2022-2023 Intel Corporation
* Copyright (C) 2022-2024 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@ -22,7 +22,7 @@ using namespace Tags::Kernel::PayloadArgument::ArgType::Sampler::Vme;
using ArgType = Types::Kernel::ArgType;
inline constexpr ConstStringRef name = "argument type";
inline constexpr LookupArray<ConstStringRef, ArgType, 44> lookup({{
inline constexpr LookupArray<ConstStringRef, ArgType, 45> lookup({{
{packedLocalIds, ArgType::argTypePackedLocalIds},
{localId, ArgType::argTypeLocalId},
{localSize, ArgType::argTypeLocalSize},
@ -67,6 +67,7 @@ inline constexpr LookupArray<ConstStringRef, ArgType, 44> lookup({{
{regionGroupSize, ArgType::argTypeRegionGroupSize},
{regionGroupDimension, ArgType::argTypeRegionGroupDimension},
{regionGroupWgCount, ArgType::argTypeRegionGroupWgCount},
{regionGroupBarrierBuffer, ArgType::argTypeRegionGroupBarrierBuffer},
}});
static_assert(lookup.size() == ArgType::argTypeMax - 1, "Every enum field must be present");
} // namespace ArgType

View File

@ -158,6 +158,7 @@ struct KernelDescriptor {
CrossThreadDataOffset regionGroupSize[3] = {undefined<CrossThreadDataOffset>, undefined<CrossThreadDataOffset>, undefined<CrossThreadDataOffset>};
CrossThreadDataOffset regionGroupDimension = undefined<CrossThreadDataOffset>;
CrossThreadDataOffset regionGroupWgCount = undefined<CrossThreadDataOffset>;
CrossThreadDataOffset regionGroupBarrierBuffer = undefined<CrossThreadDataOffset>;
} dispatchTraits;
struct {

View File

@ -5104,6 +5104,23 @@ TEST_F(decodeZeInfoKernelEntryTest, givenRegionArgTypesWhenArgSizeIsCorrectThenR
EXPECT_TRUE(warnings.empty()) << warnings;
EXPECT_EQ(16, kernelDescriptor->payloadMappings.dispatchTraits.regionGroupWgCount);
ConstStringRef zeInfoRegionGroupBarrier = R"===(
kernels:
- name : some_kernel
execution_env:
simd_size: 32
payload_arguments:
- arg_type : region_group_barrier_buffer
offset : 16
size : 8
)===";
err = decodeZeInfoKernelEntry(zeInfoRegionGroupBarrier);
EXPECT_EQ(NEO::DecodeError::success, err);
EXPECT_TRUE(errors.empty()) << errors;
EXPECT_TRUE(warnings.empty()) << warnings;
EXPECT_EQ(16, kernelDescriptor->payloadMappings.dispatchTraits.regionGroupBarrierBuffer);
}
TEST_F(decodeZeInfoKernelEntryTest, GivenArgTypeGlobalSizeWhenArgSizeValidThenPopulatesKernelDescriptor) {