SWDEV-77584 - ORCA RT: Preparations for enabling HSAIL on OpenCL 1.2 by default. Integrate new algorithm for device program choice.
[Reasons]
1. Make the switching change as less as possible.
2. Give a chance to test HSA_foundation device work on OCL 1.2 beforehand (asked by Nikolay).
Almost already reviewed:
http://ocltc.amd.com/reviews/r/8850/
Additionally:
1. Linking logic was changed: if the target of one of the binaries is hsail-(64) linking goes through HSAIL, otherwise - through AMDIL. Previously -cl-std=CL2.0 in any of the linking binaries was a criterion for HSAIL, what will be wrong for HSAIL 1.2 after switching. -clang & -edg options are set now to distinguish the path while linking.
2. -cl-std=CL2.0 as a criterion for HSAIL was returned back in isHSAILProgram() method; -clang & -edg options were also added as a criterion.
[ToDo] After enabling HSAIL by default remove -cl-std, -clang & -edg checks from the code.
[Testing] Pre-checkin
http://ocltc.amd.com:8111/viewModification.html?modId=61929&personal=true&buildTypeId=&tab=vcsModificationBuilds&show_all_builds=true
[Reviewers] German Andryeyev, Nikolay Haustov
Affected files ...
... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_program.cpp#39 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/cpu/cpudevice.cpp#279 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/cpu/cpudevice.hpp#93 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/device.hpp#261 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpudevice.cpp#534 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpudevice.hpp#154 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/hsa_foundation/hsadevice.cpp#47 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/hsa_foundation/hsadevice.hpp#22 edit
... //depot/stg/opencl/drivers/opencl/runtime/platform/program.cpp#76 edit
... //depot/stg/opencl/drivers/opencl/runtime/platform/program.hpp#38 edit
[ROCm/clr commit: 7638f403f9]
SWDEV-77584 - ORCA RT: Preparations for enabling HSAIL on OpenCL 1.2 by default. Integrate new algorithm for device program choice.
[Reasons]
1. Make the switching change as less as possible.
2. Give a chance to test HSA_foundation device work on OCL 1.2 beforehand (asked by Nikolay).
Almost already reviewed:
http://ocltc.amd.com/reviews/r/8850/
Additionally:
1. Linking logic was changed: if the target of one of the binaries is hsail-(64) linking goes through HSAIL, otherwise - through AMDIL. Previously -cl-std=CL2.0 in any of the linking binaries was a criterion for HSAIL, what will be wrong for HSAIL 1.2 after switching. -clang & -edg options are set now to distinguish the path while linking.
2. -cl-std=CL2.0 as a criterion for HSAIL was returned back in isHSAILProgram() method; -clang & -edg options were also added as a criterion.
[ToDo] After enabling HSAIL by default remove -cl-std, -clang & -edg checks from the code.
[Testing] Pre-checkin
http://ocltc.amd.com:8111/viewModification.html?modId=61929&personal=true&buildTypeId=&tab=vcsModificationBuilds&show_all_builds=true
[Reviewers] German Andryeyev, Nikolay Haustov
Affected files ...
... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_program.cpp#39 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/cpu/cpudevice.cpp#279 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/cpu/cpudevice.hpp#93 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/device.hpp#261 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpudevice.cpp#534 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpudevice.hpp#154 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/hsa_foundation/hsadevice.cpp#47 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/hsa_foundation/hsadevice.hpp#22 edit
... //depot/stg/opencl/drivers/opencl/runtime/platform/program.cpp#76 edit
... //depot/stg/opencl/drivers/opencl/runtime/platform/program.hpp#38 edit
SWDEV-77584 - ORCA RT: Preparations for enabling HSAIL on OpenCL 1.2 by default. Integrate new algorithm for device program choice.
[Reasons]
1. Make the switching change as less as possible.
2. Give a chance to test HSA_foundation device work on OCL 1.2 beforehand (asked by Nikolay).
Almost already reviewed:
http://ocltc.amd.com/reviews/r/8850/
Additionally:
1. Linking logic was changed: if the target of one of the binaries is hsail-(64) linking goes through HSAIL, otherwise - through AMDIL. Previously -cl-std=CL2.0 in any of the linking binaries was a criterion for HSAIL, what will be wrong for HSAIL 1.2 after switching. -clang & -edg options are set now to distinguish the path while linking.
2. -cl-std=CL2.0 as a criterion for HSAIL was returned back in isHSAILProgram() method; -clang & -edg options were also added as a criterion.
[ToDo] After enabling HSAIL by default remove -cl-std, -clang & -edg checks from the code.
[Testing] Pre-checkin
http://ocltc.amd.com:8111/viewModification.html?modId=61929&personal=true&buildTypeId=&tab=vcsModificationBuilds&show_all_builds=true
[Reviewers] German Andryeyev, Nikolay Haustov
Affected files ...
... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_program.cpp#39 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/cpu/cpudevice.cpp#279 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/cpu/cpudevice.hpp#93 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/device.hpp#261 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpudevice.cpp#534 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpudevice.hpp#154 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/hsa_foundation/hsadevice.cpp#47 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/hsa_foundation/hsadevice.hpp#22 edit
... //depot/stg/opencl/drivers/opencl/runtime/platform/program.cpp#76 edit
... //depot/stg/opencl/drivers/opencl/runtime/platform/program.hpp#38 edit
[ROCm/clr commit: 539fef47eb]
SWDEV-77584 - ORCA RT: Preparations for enabling HSAIL on OpenCL 1.2 by default. Integrate new algorithm for device program choice.
[Reasons]
1. Make the switching change as less as possible.
2. Give a chance to test HSA_foundation device work on OCL 1.2 beforehand (asked by Nikolay).
Almost already reviewed:
http://ocltc.amd.com/reviews/r/8850/
Additionally:
1. Linking logic was changed: if the target of one of the binaries is hsail-(64) linking goes through HSAIL, otherwise - through AMDIL. Previously -cl-std=CL2.0 in any of the linking binaries was a criterion for HSAIL, what will be wrong for HSAIL 1.2 after switching. -clang & -edg options are set now to distinguish the path while linking.
2. -cl-std=CL2.0 as a criterion for HSAIL was returned back in isHSAILProgram() method; -clang & -edg options were also added as a criterion.
[ToDo] After enabling HSAIL by default remove -cl-std, -clang & -edg checks from the code.
[Testing] Pre-checkin
http://ocltc.amd.com:8111/viewModification.html?modId=61929&personal=true&buildTypeId=&tab=vcsModificationBuilds&show_all_builds=true
[Reviewers] German Andryeyev, Nikolay Haustov
Affected files ...
... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_program.cpp#39 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/cpu/cpudevice.cpp#279 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/cpu/cpudevice.hpp#93 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/device.hpp#261 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpudevice.cpp#534 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpudevice.hpp#154 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/hsa_foundation/hsadevice.cpp#47 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/hsa_foundation/hsadevice.hpp#22 edit
... //depot/stg/opencl/drivers/opencl/runtime/platform/program.cpp#76 edit
... //depot/stg/opencl/drivers/opencl/runtime/platform/program.hpp#38 edit
SWDEV-79957 - use system memory to calculate the largest available memory size on Linux APU system.
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpudevice.cpp#533 edit
[ROCm/clr commit: 6f0457c510]
SWDEV-79957 - use system memory to calculate the largest available memory size on Linux APU system.
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpudevice.cpp#533 edit
Fill up cache properties of CPU node by reading data from /proc/cpuinfo
and /sys/devices/system/cpu/cpuX/cache/indexY
Change-Id: I0a96760575e504e38962554f192c3fe66bea3c15
Fill up cache properties of CPU node by reading data from /proc/cpuinfo
and /sys/devices/system/cpu/cpuX/cache/indexY
Change-Id: I0a96760575e504e38962554f192c3fe66bea3c15
[ROCm/ROCR-Runtime commit: b6f65f9849]
SWDEV-2 - Change OpenCL version number from 1938 to 1939.
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/utils/versions.hpp#1685 edit
[ROCm/clr commit: a1146f6e4d]
SWDEV-2 - Change OpenCL version number from 1938 to 1939.
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/utils/versions.hpp#1685 edit
SWDEV-2 - Change OpenCL version number from 1937 to 1938.
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/utils/versions.hpp#1684 edit
[ROCm/clr commit: b7c9a38645]
SWDEV-2 - Change OpenCL version number from 1937 to 1938.
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/utils/versions.hpp#1684 edit
SWDEV-2 - Change OpenCL version number from 1936 to 1937.
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/utils/versions.hpp#1683 edit
[ROCm/clr commit: f0aea225b6]
SWDEV-2 - Change OpenCL version number from 1936 to 1937.
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/utils/versions.hpp#1683 edit
SWDEV-77172 - IOMMUv2 changes for Windows 10
- Clear passing SVM flag from top level and fix GL interop on SVM
- Add\Remove gpuvmOffset before WDDM calls as its added manually for SUA model
ReviewBoardURL = http://ocltc.amd.com/reviews/r/8914/diff/
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuresource.cpp#230 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gslbe/src/rt/GSLDeviceGL.cpp#25 edit
[ROCm/clr commit: b0b6b55051]
SWDEV-77172 - IOMMUv2 changes for Windows 10
- Clear passing SVM flag from top level and fix GL interop on SVM
- Add\Remove gpuvmOffset before WDDM calls as its added manually for SUA model
ReviewBoardURL = http://ocltc.amd.com/reviews/r/8914/diff/
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuresource.cpp#230 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gslbe/src/rt/GSLDeviceGL.cpp#25 edit
SWDEV-80874 - fixed staging buffer overflow with HSA printf
Staging buffer is ~2 times smaller than allocated printf buffer, so if amount of data in printf buffer exceeds the size of the staging buffer
we hit assertion in the memory copy. To hit the assertion that is enough to print 2 integers with 64K workitems.
Added loop to read printf buffer into staging in portions.
Testing: smoke, precheckin, conformance printf with HSAIL forced, custom tests
Reviewed by German Andreev
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuprintf.cpp#41 edit
[ROCm/clr commit: e18cd1d76e]
SWDEV-80874 - fixed staging buffer overflow with HSA printf
Staging buffer is ~2 times smaller than allocated printf buffer, so if amount of data in printf buffer exceeds the size of the staging buffer
we hit assertion in the memory copy. To hit the assertion that is enough to print 2 integers with 64K workitems.
Added loop to read printf buffer into staging in portions.
Testing: smoke, precheckin, conformance printf with HSAIL forced, custom tests
Reviewed by German Andreev
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuprintf.cpp#41 edit
SWDEV-80874 - Fixed ORCA RT HSA printf buffer indexing issues
The format of the buffer is: printf_id, <arg1>, <arg2>, ...
The RT did not advance index for printf_id field, so for example for a format string "%d" we have been printing printf_id instead of actual argument for every other string.
The other issue is that outputDbgBuffer is adjusting its last argument (idx) by the number of consumed DWORD values,
but PrintfDbgHSA::output() is also ajusting dbgBufferPtr, so we had adjustment done twice, printing only half of the actual data and then printing zeroes from the buffer.
The resolution for both is to always pass 1 as index to outputDbgBuffer(). 1 because 0 is printf_id.
Testing: smoke, precheckin, conformance printf with HSAIL forced, custom tests
Reviewed by Brian Sumner and German Andreev
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuprintf.cpp#40 edit
[ROCm/clr commit: 047f87bb4f]
SWDEV-80874 - Fixed ORCA RT HSA printf buffer indexing issues
The format of the buffer is: printf_id, <arg1>, <arg2>, ...
The RT did not advance index for printf_id field, so for example for a format string "%d" we have been printing printf_id instead of actual argument for every other string.
The other issue is that outputDbgBuffer is adjusting its last argument (idx) by the number of consumed DWORD values,
but PrintfDbgHSA::output() is also ajusting dbgBufferPtr, so we had adjustment done twice, printing only half of the actual data and then printing zeroes from the buffer.
The resolution for both is to always pass 1 as index to outputDbgBuffer(). 1 because 0 is printf_id.
Testing: smoke, precheckin, conformance printf with HSAIL forced, custom tests
Reviewed by Brian Sumner and German Andreev
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuprintf.cpp#40 edit
SWDEV-2 - Change OpenCL version number from 1935 to 1936.
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/utils/versions.hpp#1682 edit
[ROCm/clr commit: 3206a987aa]
SWDEV-2 - Change OpenCL version number from 1935 to 1936.
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/utils/versions.hpp#1682 edit
SWDEV-80864 - HSAIL Metadata Workgroup Size Hint and Vec Type Hint added to HSAIL Runtime
Runtime changes required for the use of these two metadata:
- Runtime's gpukernel.cpp requires new aclQueries during HSAILKernel::Init
- One for quering WorkGroupSizeHint's array
- Two for size of VecTypeHint and fetching VecTypeHint's string
- initArgList needs to be moved to end of HSAILKernel::init to allow createSignature to get non empty values
- Compiler lib's workgroup hint (wsh) needs to match runtime's type (size_t)
- In Kernel constructor, instead of using memset which corrupts std::string, specifically set default workGroupInfo struct's variables
Also fixed wavesPerSimdHint to use size_t to match runtime.
Updated CLAssumptionCheck.cpp since aclMetadata structure was modified.
Note: This is the runtime counterpart to submitted CL#1204512. (Post Review#8808, SWDEV-79695)
Affected files ...
... //depot/stg/opencl/drivers/opencl/compiler/legacy-lib/include/v0_8/aclStructs.h#5 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/include/v0_8/aclStructs.h#22 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/device.hpp#260 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpukernel.cpp#308 edit
... //depot/stg/opencl/drivers/opencl/tests/ocltst/module/complib/CLAssumptionCheck.cpp#48 edit
[ROCm/clr commit: b9fcb50bbc]
SWDEV-80864 - HSAIL Metadata Workgroup Size Hint and Vec Type Hint added to HSAIL Runtime
Runtime changes required for the use of these two metadata:
- Runtime's gpukernel.cpp requires new aclQueries during HSAILKernel::Init
- One for quering WorkGroupSizeHint's array
- Two for size of VecTypeHint and fetching VecTypeHint's string
- initArgList needs to be moved to end of HSAILKernel::init to allow createSignature to get non empty values
- Compiler lib's workgroup hint (wsh) needs to match runtime's type (size_t)
- In Kernel constructor, instead of using memset which corrupts std::string, specifically set default workGroupInfo struct's variables
Also fixed wavesPerSimdHint to use size_t to match runtime.
Updated CLAssumptionCheck.cpp since aclMetadata structure was modified.
Note: This is the runtime counterpart to submitted CL#1204512. (Post Review#8808, SWDEV-79695)
Affected files ...
... //depot/stg/opencl/drivers/opencl/compiler/legacy-lib/include/v0_8/aclStructs.h#5 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/include/v0_8/aclStructs.h#22 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/device.hpp#260 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpukernel.cpp#308 edit
... //depot/stg/opencl/drivers/opencl/tests/ocltst/module/complib/CLAssumptionCheck.cpp#48 edit
SWDEV-2 - Change OpenCL version number from 1934 to 1935.
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/utils/versions.hpp#1681 edit
[ROCm/clr commit: 2d0f155e6f]
SWDEV-2 - Change OpenCL version number from 1934 to 1935.
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/utils/versions.hpp#1681 edit
SWDEV-2 - Change OpenCL version number from 1933 to 1934.
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/utils/versions.hpp#1680 edit
[ROCm/clr commit: 28c0cbc150]
SWDEV-2 - Change OpenCL version number from 1933 to 1934.
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/utils/versions.hpp#1680 edit
SWDEV-78103 - Remove the extra flush from WriteMarker call.
Reviewed by: German
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuvirtual.cpp#389 edit
SWDEV-77584 - ORCA RT: Preparations for enabling HSAIL on OpenCL 1.2 by default. Fix error (by CL 1205606) in parsing option algorithm.
Compile/link options should be parsed once with additional options specified by AMD_OCL_BUILD(LINK)_OPTIONS(_APPEND) in case of optionChangable or without them, but once.
One static method for parsing all options in ORCA RT is created:
static bool ParseAllOptions(const std::string& options,
option::Options& parsedOptions,
bool optionChangable = true,
bool linkOptsOnly = false)
[Testing] Pre-checkin
[Reviewers] German Andryeyev, Nikolay Haustov
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/platform/program.cpp#75 edit
... //depot/stg/opencl/drivers/opencl/runtime/platform/program.hpp#37 edit
[ROCm/clr commit: 095b73ae6f]
SWDEV-77584 - ORCA RT: Preparations for enabling HSAIL on OpenCL 1.2 by default. Fix error (by CL 1205606) in parsing option algorithm.
Compile/link options should be parsed once with additional options specified by AMD_OCL_BUILD(LINK)_OPTIONS(_APPEND) in case of optionChangable or without them, but once.
One static method for parsing all options in ORCA RT is created:
static bool ParseAllOptions(const std::string& options,
option::Options& parsedOptions,
bool optionChangable = true,
bool linkOptsOnly = false)
[Testing] Pre-checkin
[Reviewers] German Andryeyev, Nikolay Haustov
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/platform/program.cpp#75 edit
... //depot/stg/opencl/drivers/opencl/runtime/platform/program.hpp#37 edit
SWDEV-77584 - Compiler Lib: Preparations for enabling HSAIL on OpenCL 1.2 by default. Adding -legacy and -binary_is_spirv.
-legacy option will be used for forcing AMDIL path after switching HSAIL by default for OpenCL.
-binary_is_spirv option will be used for indicating that the binary is constructed from SPIRV.
[Testing] pre-checkin:
http://ocltc.amd.com:8111/viewModification.html?modId=61541&personal=true&buildTypeId=&tab=vcsModificationBuilds&show_all_builds=true
[Reviewer] Stanislav Mekhanoshin
http://ocltc.amd.com/reviews/r/8850
Affected files ...
... //depot/stg/opencl/drivers/opencl/compiler/legacy-lib/utils/OPTIONS.def#4 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/utils/OPTIONS.def#132 edit
[ROCm/clr commit: 0efe4a5ead]
SWDEV-77584 - Compiler Lib: Preparations for enabling HSAIL on OpenCL 1.2 by default. Adding -legacy and -binary_is_spirv.
-legacy option will be used for forcing AMDIL path after switching HSAIL by default for OpenCL.
-binary_is_spirv option will be used for indicating that the binary is constructed from SPIRV.
[Testing] pre-checkin:
http://ocltc.amd.com:8111/viewModification.html?modId=61541&personal=true&buildTypeId=&tab=vcsModificationBuilds&show_all_builds=true
[Reviewer] Stanislav Mekhanoshin
http://ocltc.amd.com/reviews/r/8850
Affected files ...
... //depot/stg/opencl/drivers/opencl/compiler/legacy-lib/utils/OPTIONS.def#4 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/utils/OPTIONS.def#132 edit
SWDEV-2 - Change OpenCL version number from 1932 to 1933.
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/utils/versions.hpp#1679 edit
[ROCm/clr commit: 7aa34e41ca]
SWDEV-2 - Change OpenCL version number from 1932 to 1933.
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/utils/versions.hpp#1679 edit