EPR #402000 - [CQE OCL][Perf][QR] ~6-7% perf drop in CompuCL Benchmark (Graphics: T-Rex subtest).
Add option to disable SC merge memory loads and stores. By default it is disabled. Will decide whether to enable it by default after performance runs.
cherrypick 1076590 and CL#1077419 from sc stg for adding option in sc.
Affected files ...
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/gpu/sc/Interface/SCCommon.h#42 integrate
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/gpu/sc/Src/CompilerBase.cpp#51 integrate
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/gpu/sc/Src/CompilerBase.hpp#35 integrate
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/gpu/sc/Src/HwUtils.cpp#36 integrate
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/gpu/scwrapper/scState.cpp#32 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/utils/OPTIONS.def#114 edit
ECR #333753 - HSA RT: avoiding superfluous recompilations on ORCA RT/HSA path
Next compilation stage determination based on binary sections and options (while linkImpl).
If current HSAILProgram options are equal to binarys ones:
- Do not generate BRIG if BRIG sections are already presented in binary.
- Do not finalize BRIG->ISA if ISA is already presented in binary.
- Perform only CG phase if HSAIL is absent in binary.
Always perform only brig loading (even in case of ISA presented).
Testing: pre check-in, compile & basic ocl conformance 2.0 tests
Reviewer: German Andryeyev
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpucompiler.cpp#150 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpukernel.cpp#264 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpukernel.hpp#101 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuprogram.cpp#177 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuprogram.hpp#55 edit
[ROCm/clr commit: ff7ab4a0b2]
ECR #333753 - HSA RT: avoiding superfluous recompilations on ORCA RT/HSA path
Next compilation stage determination based on binary sections and options (while linkImpl).
If current HSAILProgram options are equal to binarys ones:
- Do not generate BRIG if BRIG sections are already presented in binary.
- Do not finalize BRIG->ISA if ISA is already presented in binary.
- Perform only CG phase if HSAIL is absent in binary.
Always perform only brig loading (even in case of ISA presented).
Testing: pre check-in, compile & basic ocl conformance 2.0 tests
Reviewer: German Andryeyev
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpucompiler.cpp#150 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpukernel.cpp#264 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpukernel.hpp#101 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuprogram.cpp#177 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuprogram.hpp#55 edit
EPR #010002 - Change OpenCL version number from 1635 to 1636.
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/utils/versions.hpp#1382 edit
[ROCm/clr commit: 44b425a7a5]
EPR #010002 - Change OpenCL version number from 1635 to 1636.
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/utils/versions.hpp#1382 edit
ECR #304775 - Update resource cache behavior
Currently, the resource cache is fixed at 64MB regardless of available video memory size. Changed the logic to use max(1/8th video memory, 64MB). This is still overrideable with the env. var. GPU_RESOURCE_CACHE_SIZE.
Improvements with changes: 18% decrease in video chat face detect time on 95w Kaveri (no change in PCMark8 score as we already achieved 30fps), 14% improvement on 19w Kaveri (this does result in an improvement in PCMark8 since the APU is slower).
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpusettings.cpp#279 edit
[ROCm/clr commit: fc2687df3a]
ECR #304775 - Update resource cache behavior
Currently, the resource cache is fixed at 64MB regardless of available video memory size. Changed the logic to use max(1/8th video memory, 64MB). This is still overrideable with the env. var. GPU_RESOURCE_CACHE_SIZE.
Improvements with changes: 18% decrease in video chat face detect time on 95w Kaveri (no change in PCMark8 score as we already achieved 30fps), 14% improvement on 19w Kaveri (this does result in an improvement in PCMark8 since the APU is slower).
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpusettings.cpp#279 edit
EPR #010002 - Change OpenCL version number from 1634 to 1635.
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/utils/versions.hpp#1381 edit
[ROCm/clr commit: fe0dedc497]
EPR #010002 - Change OpenCL version number from 1634 to 1635.
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/utils/versions.hpp#1381 edit
EPR #010002 - Change OpenCL version number from 1633 to 1634.
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/utils/versions.hpp#1380 edit
[ROCm/clr commit: 585664f084]
EPR #010002 - Change OpenCL version number from 1633 to 1634.
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/utils/versions.hpp#1380 edit
ECR #377625 - AMDIL Function support: Calculate total private memory usage by a kernel including memory used by called functions.
This cannot be done by IPA since stack size is known only after register allocation due to potential register spill, but MachineFunctionAnalysis cannot persist after CGSCC pass with current LLVM version.
This change adds private memory usage metadata for non-kernel functions. The total private memory usage by a kernel is calculated when AMDIL is split for different kernels. BIF will contain total private memory size.
Affected files ...
... //depot/stg/opencl/drivers/opencl/compiler/lib/utils/amdilUtils.cpp#1 add
... //depot/stg/opencl/drivers/opencl/compiler/lib/utils/amdilUtils.hpp#1 add
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Target/AMDIL/AMDILKernelManager.cpp#451 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Target/AMDIL/AMDILKernelManager.h#51 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuprogram.cpp#175 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuprogram.hpp#54 edit
[ROCm/clr commit: 42f4b2af97]
ECR #377625 - AMDIL Function support: Calculate total private memory usage by a kernel including memory used by called functions.
This cannot be done by IPA since stack size is known only after register allocation due to potential register spill, but MachineFunctionAnalysis cannot persist after CGSCC pass with current LLVM version.
This change adds private memory usage metadata for non-kernel functions. The total private memory usage by a kernel is calculated when AMDIL is split for different kernels. BIF will contain total private memory size.
Affected files ...
... //depot/stg/opencl/drivers/opencl/compiler/lib/utils/amdilUtils.cpp#1 add
... //depot/stg/opencl/drivers/opencl/compiler/lib/utils/amdilUtils.hpp#1 add
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Target/AMDIL/AMDILKernelManager.cpp#451 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Target/AMDIL/AMDILKernelManager.h#51 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuprogram.cpp#175 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuprogram.hpp#54 edit
ECR #333753 - HSA HLC: remove code changing the default filetype which is set by an external tool such as llc
Effectively llc will produce text hsail file by default as a standard llc behaviour. Use -filetype=obj to obtain brig.
Note, test_driver.pl is already patched to preserve old behaviour.
Testing: smoke, smoke_clang, precheckin
Reviewed by Nikolay Haustov
Affected files ...
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/common/codegen.cpp#58 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Target/HSAIL/HSAILTargetMachine.cpp#33 edit
[ROCm/clr commit: fea6100aa9]
ECR #333753 - HSA HLC: remove code changing the default filetype which is set by an external tool such as llc
Effectively llc will produce text hsail file by default as a standard llc behaviour. Use -filetype=obj to obtain brig.
Note, test_driver.pl is already patched to preserve old behaviour.
Testing: smoke, smoke_clang, precheckin
Reviewed by Nikolay Haustov
Affected files ...
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/common/codegen.cpp#58 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Target/HSAIL/HSAILTargetMachine.cpp#33 edit
EPR #010002 - Change OpenCL version number from 1632 to 1633.
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/utils/versions.hpp#1379 edit
[ROCm/clr commit: 6fddbe6449]
EPR #010002 - Change OpenCL version number from 1632 to 1633.
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/utils/versions.hpp#1379 edit
EPR #405753 - Fixed incorrect value of slicePitch returned from clEnqueueMapimage for 1Darray.
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpumemory.cpp#111 edit
[ROCm/clr commit: edb288692d]
EPR #405753 - Fixed incorrect value of slicePitch returned from clEnqueueMapimage for 1Darray.
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpumemory.cpp#111 edit
EPR #010002 - Change OpenCL version number from 1631 to 1632.
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/utils/versions.hpp#1378 edit
[ROCm/clr commit: 93ee6bb034]
EPR #010002 - Change OpenCL version number from 1631 to 1632.
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/utils/versions.hpp#1378 edit
EPR #405194 - Change unroll threshold to LLVM default to partially work around Linpack performance problem.
Prior to CL 1058428, which increased the unroll threshold to 200, this was only 100 which is lower than the LLVM default. Linpack's new ISA has increased register usage, but decreasing the unroll threshold to the previous level does not reduce the register count to its previous level. The increased register usage is probably a new SC problem, so this should probably be increased again in the future. There is no change in register usage with 100 vs. 150 on Linpack.
Affected files ...
... //depot/stg/opencl/drivers/opencl/compiler/lib/utils/OPTIONS.def#113 edit
[ROCm/clr commit: d5f7502ca8]
EPR #405194 - Change unroll threshold to LLVM default to partially work around Linpack performance problem.
Prior to CL 1058428, which increased the unroll threshold to 200, this was only 100 which is lower than the LLVM default. Linpack's new ISA has increased register usage, but decreasing the unroll threshold to the previous level does not reduce the register count to its previous level. The increased register usage is probably a new SC problem, so this should probably be increased again in the future. There is no change in register usage with 100 vs. 150 on Linpack.
Affected files ...
... //depot/stg/opencl/drivers/opencl/compiler/lib/utils/OPTIONS.def#113 edit
ECR #304775 - Remove _ in hsail_64 triple enum name. It isn't consistent with itself, or most other targets. The string form is already "hsail64", but the target name is sometimes "hsail-64". Does not remove the - in "hsail-64" for the target name since users could be depending on that, although that should also be fixed.
Affected files ...
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/common/codegen.cpp#57 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/common/linker.cpp#110 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/include/llvm/ADT/Triple.h#36 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/include/llvm/AMDLLVMContextHook.h#22 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/MC/MCObjectFileInfo.cpp#14 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Support/Triple.cpp#47 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Target/HSAIL/TargetInfo/HSAILTargetInfo.cpp#4 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Transforms/SPIR/AMDSPIRLoader.cpp#82 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Transforms/Scalar/AMDLowerAtomics.cpp#13 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Transforms/Utils/AMDUtils.cpp#2 edit
[ROCm/clr commit: c02dacedb2]
ECR #304775 - Remove _ in hsail_64 triple enum name. It isn't consistent with itself, or most other targets. The string form is already "hsail64", but the target name is sometimes "hsail-64". Does not remove the - in "hsail-64" for the target name since users could be depending on that, although that should also be fixed.
Affected files ...
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/common/codegen.cpp#57 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/common/linker.cpp#110 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/include/llvm/ADT/Triple.h#36 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/include/llvm/AMDLLVMContextHook.h#22 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/MC/MCObjectFileInfo.cpp#14 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Support/Triple.cpp#47 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Target/HSAIL/TargetInfo/HSAILTargetInfo.cpp#4 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Transforms/SPIR/AMDSPIRLoader.cpp#82 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Transforms/Scalar/AMDLowerAtomics.cpp#13 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Transforms/Utils/AMDUtils.cpp#2 edit
EPR #403493 - Block index error for CI and VI, OCL code change
Problem description: The OCL implementation requires HSA to used different block index values for CI and VI. However, the same index value is used for the same counter block in both CI and VI, which in turn caused a segmentation fault.
Root cause: HSA implementation does not know this situation before hand.
Solution: Fix to use different counter block index in CI from that in VI
Functional area: HSA perf counter implementation...
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/device/hsa/hsacounters.cpp#4 edit
[ROCm/clr commit: f517eefd51]
EPR #403493 - Block index error for CI and VI, OCL code change
Problem description: The OCL implementation requires HSA to used different block index values for CI and VI. However, the same index value is used for the same counter block in both CI and VI, which in turn caused a segmentation fault.
Root cause: HSA implementation does not know this situation before hand.
Solution: Fix to use different counter block index in CI from that in VI
Functional area: HSA perf counter implementation...
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/device/hsa/hsacounters.cpp#4 edit
ECR #333756 - HSA Finalizer: added runtime option to force buffer instructions for global access
This can be used under ORCA RT.
Testing: smoke, smoke_clang, precheckin, clbas dgemm
Reviewed by Nikolay Haustov
Affected files ...
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/gpu/scwrapper/SI/scStateSI.cpp#24 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/utils/OPTIONS.def#112 edit
[ROCm/clr commit: d35be99f01]
ECR #333756 - HSA Finalizer: added runtime option to force buffer instructions for global access
This can be used under ORCA RT.
Testing: smoke, smoke_clang, precheckin, clbas dgemm
Reviewed by Nikolay Haustov
Affected files ...
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/gpu/scwrapper/SI/scStateSI.cpp#24 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/utils/OPTIONS.def#112 edit
EPR #010002 - Change OpenCL version number from 1630 to 1631.
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/utils/versions.hpp#1377 edit
[ROCm/clr commit: 612ed6149b]
EPR #010002 - Change OpenCL version number from 1630 to 1631.
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/utils/versions.hpp#1377 edit
EPR #397491 - only using OpenCL 1.2 onr multiple GPUs on mainline by default.
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpudevice.cpp#460 edit
EPR #010002 - Change OpenCL version number from 1629 to 1630.
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/utils/versions.hpp#1376 edit
[ROCm/clr commit: 8751996be9]