P4 to Git Change 1195825 by yaxunl@yaxunl_stg_win50 on 2015/09/30 07:45:04

SWDEV-77682 - Wave Limiter: Add __attribute__((amd_hint_waves_per_simd(n))) to FE for setting waves/simd hint per kernel. 0 for adaptive wave limitting. 1~10 for fixed waves/simd.
	Add query of WavesPerSimdHint metadata to compiler lib. HSAI path shouls use aclQueryInfo RT_WAVES_PER_SIMD_HINT to get the waves/simd hint value.
	This should provide a flexible workaround for bug SWDEV-56552  [CQE OCL][PERF][LNX][QR][G] 19% Perf drop is observed with chunkBp kernel in Carrizo.

Affected files ...

... //depot/stg/opencl/drivers/opencl/compiler/clang/include/clang/Basic/Attr.td#9 edit
... //depot/stg/opencl/drivers/opencl/compiler/clang/lib/CodeGen/CodeGenFunction.cpp#16 edit
... //depot/stg/opencl/drivers/opencl/compiler/clang/lib/Sema/SemaDeclAttr.cpp#8 edit
... //depot/stg/opencl/drivers/opencl/compiler/clc/src/e2lModule.cpp#95 edit
... //depot/stg/opencl/drivers/opencl/compiler/clc/src/e2lModule.h#44 edit
... //depot/stg/opencl/drivers/opencl/compiler/clc/src/oclEntry.cpp#49 edit
... //depot/stg/opencl/drivers/opencl/compiler/clc/src/oclMeta.cpp#32 edit
... //depot/stg/opencl/drivers/opencl/compiler/clc/src/oclMeta.h#32 edit
... //depot/stg/opencl/drivers/opencl/compiler/edg/src/amd_ocl_attribute.c#26 edit
... //depot/stg/opencl/drivers/opencl/compiler/edg/src/attribute.c#29 edit
... //depot/stg/opencl/drivers/opencl/compiler/edg/src/err_codes.h#42 edit
... //depot/stg/opencl/drivers/opencl/compiler/edg/src/err_data.h#56 edit
... //depot/stg/opencl/drivers/opencl/compiler/edg/src/il_def.h#57 edit
... //depot/stg/opencl/drivers/opencl/compiler/edg/src/il_display.c#25 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/common/v0_8/if_acl.cpp#77 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/gpu/MDParser/AMDILMDInterface.h#3 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/gpu/MDParser/AMDILMDParser.l#4 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/gpu/MDParser/AMDILMDTypes.cpp#3 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/gpu/MDParser/lex.yy.cpp#5 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/gpu/metadata.cpp#9 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/include/v0_8/aclEnums.h#23 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/include/v0_8/aclStructs.h#18 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/include/llvm/Transforms/IPO/AMDKernelPerfHint.h#4 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Target/HSAIL/HSAILKernelManager.cpp#37 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Transforms/IPO/AMDKernelPerfHint.cpp#6 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm32/include/llvm/Transforms/IPO/AMDKernelPerfHint.h#3 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm32/lib/Target/AMDIL/AMDILKernelManager.cpp#4 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm32/lib/Transforms/IPO/AMDKernelPerfHint.cpp#6 edit
... //depot/stg/opencl/drivers/opencl/tests/hsa/src/llc/opt/wave_limiter/explicit.cl#1 add
... //depot/stg/opencl/drivers/opencl/tests/hsa/tlst/llc_opt.tlst#57 edit
... //depot/stg/opencl/drivers/opencl/tests/ocltst/module/complib/CLAssumptionCheck.cpp#44 edit
... //depot/stg/opencl/drivers/opencl/tests/ocltst/module/complib/CLEnumCheck.cpp#48 edit
Šī revīzija ir iekļauta:
foreman
2015-09-30 10:30:21 -04:00
vecāks af1f393ed0
revīzija 120b8fba7c
3 mainīti faili ar 14 papildinājumiem un 1 dzēšanām
@@ -2814,6 +2814,17 @@ if_aclQueryInfo(aclCompiler *cl,
}
break;
}
case RT_WAVES_PER_SIMD_HINT: {
size_t waves_per_simd_hint_size = sizeof(md->wavesPerSimdHint);
if (!ptr) {
*size = waves_per_simd_hint_size;
success = true;
} else if (*size >= waves_per_simd_hint_size) {
memcpy(ptr, &md->wavesPerSimdHint, waves_per_simd_hint_size);
success = true;
}
break;
}
}
return (success) ? ACL_SUCCESS : ACL_ERROR;
}
@@ -217,7 +217,8 @@ typedef enum _rt_query_types_enum_0_8 {
RT_CONTAINS_SPIR = 21,
RT_NUM_KERNEL_HIDDEN_ARGS = 22,
RT_CONTAINS_SPIRV = 23,
RT_LAST_TYPE = 24
RT_WAVES_PER_SIMD_HINT = 24,
RT_LAST_TYPE = 25
} aclQueryType_0_8;
//! An enumeration for the various GPU capabilities
@@ -120,6 +120,7 @@ typedef struct _acl_metadata_0_8 {
bool enqueue_kernel; // RT_DEVICE_ENQUEUE
uint32_t kernel_index; // RT_KERNEL_INDEX
uint32_t numHiddenKernelArgs; // RT_NUM_KERNEL_HIDDEN_ARGS
uint32_t wavesPerSimdHint; // RT_WAVES_PER_SIMD_HINT
} aclMetadata_0_8;
//! An structure that holds information on the capabilities of the bif device.