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:
@@ -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.
|
||||
|
||||
Atsaukties uz šo jaunā problēmā
Block a user