Wykres commitów

52 Commity

Autor SHA1 Wiadomość Data
Sean Keely bc0bd00746 Fix queue interception in tools.
1. Correct amd::AqlQueue::ExecutePM4 to support interception.
2. Minor fixes to AqlPacket and SoftCP.
3. Minimal change to disable interception of runtime internal queues.

Change-Id: I103fece2ebf9a188d27f01e61221c737405d7253
2017-07-12 16:39:43 -04:00
Evgeny 4174f07fd1 hsa-runtime integration
Change-Id: I48968966ffe164218ebff88d0e3a1268e96bf1dd
2017-07-05 10:55:30 -04:00
Kenny Ho 5b4df54b10 Revert "Implement memory fault analysis through context save area"
This reverts commit 75c9506f9d.

Change-Id: Ibf11b764b383b9be291f3009a30550e1a1e2d115
2017-06-14 14:21:53 -04:00
Jay Cornwall 75c9506f9d Implement memory fault analysis through context save area
When a fatal memory fault occurs the scheduler context-saves all queues
in the process and notifies the runtime through the memory event. The
saved state contains all GPR/LDS data at the moment of the fault.

Retrieve this state and present it to the user if HSA_DEBUG_FAULT is set
to "analyze" and the wavefront caused the fault. If amdgcn-capable objdump
is in the PATH invoke this to disassemble code around the PC.

Queue lifetime is now managed by the runtime to allow querying the
context save state for all active queues.

Change-Id: I6fee662fad1c4f9aa125bf5c53d7d0ea1ab32f95
2017-06-13 23:12:28 -04:00
Sean Keely e38ff18990 Unmap GPUs when allow_access removes them from system pools.
Change-Id: Ib9eb88622fded43ebd9eddbf78ad6771a5b91e77
2017-05-17 20:58:05 -04:00
Jay Cornwall f0a1c7c4c6 Fix gfx9 trap handler to retrieve correct return address
The trap protocol changed between gfx8 and gfx9. The return address
is in trap temporaries [0,1] on gfx9 rather than [4,5] on gfx8.
Unfortunately SP3 changes the meaning of the ttmp register aliases
in gfx9, further confusing the issue.

Clean up later when LLVM assembly build is introduced to the runtime.

Change-Id: I84ea9bf3736f060dd95d0361f9d5a0f9a3576178
2017-04-05 17:33:49 -05:00
Christophe Paquot 05d587ef79 Add inc/ to some include
Change-Id: Id027b015c8785a132835a422d97a23b0bbce208a
2017-03-09 19:45:01 -08:00
Konstantin Zhuravlyov 9887c26113 Bring loader in sync with stg/sc
Change-Id: Iccce07b8fa03d37c4267a2a9bd343e6614dc43e7
2017-02-10 11:21:15 -05:00
Jay Cornwall 4d62b9482a Implement code cache invalidation for Gfx9
When a new enough microcode build is running use a vendor AQL packet
to submit the PM4 IB.

Change-Id: Icd3e2b322c418477420ba4a29f4455ce340ef0d2
2017-02-09 14:15:21 -05:00
Sean Keely bc43f97964 Use fixed size type for queue type arguments.
Change-Id: I81b605c9cc9b18bcef043a4f0292212241ce5987
2017-02-07 01:22:30 -05:00
Jay Cornwall 1cd46afe6d Implement SDMA path for Gfx9
Gfx9 requires monotonic write pointer and doorbell.
Cound fields are 1-based compared with 0-based pre-Gfx9.

- Restructure implementation to use monotonic ring indices
- Remove redundant submission size checks (handled by AcquireWriteAddress)
- Unify copy/fill per-command limit (documentation is unclear)

Change-Id: I57c1675221d2e63aa319fee700d9951671e1bd65
2017-01-26 13:11:21 -05:00
Kent Russell 5162a76616 Revert " Add image 1.1 API changes to current code base"
Currently HSA HW Profiler is failing to build due to this patch

This reverts commit e0ce8855dd.

Change-Id: Iabb2b958f33ba614a24b61bb370905b3b7362708
2017-01-12 06:43:54 -05:00
Christophe Paquot e0ce8855dd Add image 1.1 API changes to current code base
Initial work to import the latest (1.1) hsa_ext_image extension.

Change-Id: I4d55adb09ba4d4dbd43d47a4bc54077d4bc531d2
2017-01-11 17:31:37 -05:00
Sean Keely 0e17cc2887 Allow reducing max occupancy (max scratch waves) when applications request large amounts of scratch.
Also emit error messages to stderr if no async queue error callback was registered and queue fault messages are enabled (on by default).
Queue fault messages are controlled with env key HSA_ENABLE_QUEUE_FAULT_MESSAGE.

Change-Id: I496487b8d048b83aa95b9784e92928211f167b17
2016-12-20 16:52:59 -06:00
James Edwards 433a3bcde8 Readme and comment updates to ROCm 1.4
Change-Id: I2864a9c475b9ceb2fa08bfc35999c7e0e043b26d
2016-12-16 11:43:36 -06:00
Konstantin Zhuravlyov 08aded148a Revert "Bring loader in sync with stg/sc"
This reverts commit c798c60343.

Change-Id: If99e8cc9e2afb525f690e49eb6538d8e950a5615
2016-12-14 15:14:36 -05:00
Konstantin Zhuravlyov c798c60343 Bring loader in sync with stg/sc
Change-Id: I684522c442de0872007a7e4da8919067fc7b42b3
2016-12-13 16:30:25 -05:00
Ramesh Errabolu 935c1b0ba9 Per review comments
Change-Id: I44585a6dcf3c4f0ce10f0e895270c113790e0652
2016-11-28 12:41:32 -06:00
Ramesh Errabolu eb2efb83d1 Initial set of changes for ThreadTrace
Change-Id: I07ce31f9b4f508cef0fc9ca6dadcf26b6c90361e
2016-11-21 23:40:56 -06:00
Konstantin Zhuravlyov 4b86843409 Remove load_legacy parameter + change prefix for some loaded code object queries back to AMD
Change-Id: I74e905abd77dab3a7a00b5ced94cd9b5130365c5
2016-11-20 13:46:17 -05:00
Sean Keely 8081758a55 Add InterProcess memory sharing support.
Support is disabled pending KFD / Thunk readiness.

Change-Id: I55def748e3d56cbfcfa6e24983a0ab78567aa81d
2016-11-15 18:58:29 -06:00
Sean Keely 9dd76dbeda Add pointer info support.
Change-Id: I3edcc0bfddbf12465065c9bc3b6565288faff1b8
2016-11-11 18:40:16 -06:00
Konstantin Zhuravlyov 54245e064c Allocate only one segment for code object v2+
Change-Id: I7cd03b5c205d3ea5735f8f29820867ca90ac081b
2016-11-03 09:51:11 -04:00
Jay Cornwall c30c25bd30 Fix miscellaneous warnings flagged by Clang
Change-Id: I85a45cb3b44e4379b31bcc56af061fd1571f2af5
2016-10-26 19:26:16 -05:00
James Edwards 809356e0b5 Update runtime CMakeLists.txt and utility files to support top level CMakeLists.txt build.
Change-Id: I4a0eb512af82908a24f2d1964b201c28023ccae5
2016-09-27 11:58:31 -04:00
Jay Cornwall 74f5aca93d Refactor: Consolidate calls to hsaKmtAllocMemory
Route all device-visible system memory allocations through system_allocator.

Change-Id: I5e90a1bf491e432678a6d8ab1f9f3770734cbda1
2016-08-24 23:57:19 -04:00
Sean Keely 54f1311e01 Update clang-format file to clang-format v3.8.
Format HSA v1.1 core updates.

Change-Id: I540b5c0e5b3ec7522b09c2e070167812b3f17769
2016-08-23 05:50:28 -05:00
Jay Cornwall 0c9f96cfa4 Propagate errors from hsaKmtOpenKFD back to hsa_init
Errors are otherwise silently ignored and hsa_init completes successfully.

Change-Id: Ib1b7dbd7a65d40f869cdbb2792fa97132873d3d7
2016-08-22 17:28:48 -05:00
Konstantin Zhuravlyov c2c993e0d8 Update code object/isa/loader to hsa v1.1
- Includes Sean's latest changes
- Cleanups/improvements
- Fixes for few bugs that crept over from previous releases

Change-Id: I839dc4895bf13ebd0afc8843424387a9fef667b0
2016-08-22 15:03:23 -04:00
Konstantin Zhuravlyov 01dc3a8ff3 [NFC] Cosmetic improvements:
- Doxygenify comments
  - Match order of implementation with order of declaration

Change-Id: I3c7e486c4dd3616f4b10b2f3e69532a4b5fb9e8e
2016-08-06 14:41:08 -04:00
Jay Cornwall f76577ae43 Invalidate caches after allocating a code object
Due to a misinterpretation of the HSA specification the microcode has,
until now, been responsible for ensuring a coherent view of the
amd_kernel_code_t object when acquire_fence_scope is set to agent or system.
To correct this the runtime must instead assume this responsibility.

Introduce GpuAgentInt::InvalidateCodeCaches to perform this operation
on-demand. Invoke this after code object allocation. Extend the Queue
implementations to support PM4 command submission, through which the
PM4 command ACQUIRE_MEM can be submitted to perform cache invalidation.
Submit through a runtime-managed queue shared with the blit implementation.

This change depends on microcode support and this is checked against the
running version. Older microcode builds will perform cache invalidation
themselves, so it is acceptable for this change to do nothing in that case.

Change-Id: I268dd2b83af3decdd9ad07430a81df8a2ecb6bd2
2016-08-02 13:30:55 -04:00
Jay Cornwall f7ab361347 Separate blit compute interface from queue creation
The runtime needs a queue on which to submit cache management commands.
Device-to-device blit copy already creates a queue unconditionally.
We can share this queue for both purposes.

This change restructures the BlitKernel interface to accept, rather than
create, a queue. GpuAgent creates queues as needed for both cache
management and blit compute.

Fix queue full detection in AcquireWriteIndex (<= vs <).

Change-Id: I61d0c6b9d04f2dba74872f0676ad791435778ba4
2016-07-29 09:20:25 -04:00
Jay Cornwall 712ea75377 Replace SP3 dynamic assembly with pre-assembled binaries
This is the first part of transitioning to the LLVM-based assembler.
SP3 is deprecated and all references to the library are removed.
Pending LLVM support, relevant shaders have been precompiled.

Change-Id: I7d44cef5ded1836c4a74b77881af5bea8803d2c1
2016-07-16 16:38:32 -05:00
Jay Cornwall b44417043b Recognize all CPU nodes in hsa_signal_create consumer list
On multi-node systems only the first CPU node was recognized in the
signal consumer list, causing fallback to non-interrupt signals.

Change-Id: I9bd0706bafbe046be9d7f210d05fa4cf1fcd16fa
2016-07-09 18:40:39 -05:00
Ramesh Errabolu 95dc97da7b Export Amd Extension APIs including support for Version Control
Change-Id: I8c03cbd4049e8115ae00d51f193b9c31ac941f21
2016-07-06 13:50:18 -05:00
Konstantin Zhuravlyov 0e4cab3001 Implement new load map API.
Change-Id: I5f148fe66f899b2fa6a2e75430afa988f38db58d
2016-06-28 11:32:19 -04:00
Besar Wicaksono aee8ab6ef0 Add interrupt signal support to SDMA
Change-Id: Ie2b192f3351a0c3bf1eb36ba9704825b18e6059b
2016-06-14 14:26:25 -04:00
Besar Wicaksono 103cd04236 Blit SDMA support for gfx70x
Change-Id: Ie6f215890553ef41c3f36b349fc9cc39c2d38747
2016-06-02 06:18:36 -04:00
Besar Wicaksono a8b00680b6 Add profiling support to DMA copy function
Change-Id: Iadeefa2692f35d9305ac1b242284a6220d5830a7
2016-05-26 11:29:29 -04:00
Ramesh Errabolu 383ed6983f Refactor Scratch Memory Descriptor Initialization
Change-Id: Ib4a136c266646cc5d5f5afb98f4aaf9266d02072
2016-05-25 22:17:43 -04:00
Besar Wicaksono bc589048a9 Use lazy initialization to create Blit objects
Change-Id: I388865030dc2538c5c881c055e38af52a57f6d87
2016-05-20 14:26:06 -04:00
Jay Cornwall 90ab72cd66 Implement optimized blit/fill kernels
Replace HSAIL kernels with SP3 shaders.
Support all alignment variations efficiently.

Change-Id: Icf7f5471f3ba68389f55484d82f2805dd9bc3827
2016-05-10 21:51:57 -05:00
Besar Wicaksono (xN/A) TX [TEXT] 5a584fa1ab Fix query HSA_AMD_AGENT_MEMORY_POOL_INFO_LINK_INFO
Querying HSA_AMD_AGENT_MEMORY_POOL_INFO_LINK_INFO between a gpu agent
and its own local memory pool returns a wrong information.
Fix: return link with 0 hop count.

[git-p4: depot-paths = "//depot/stg/hsa/drivers/hsa/runtime/": change = 1257544]
2016-04-13 12:39:25 -05:00
Besar Wicaksono (xN/A) TX [TEXT] ea67bb8374 Sdma wraparound optimization.
Remove mutex and just make the thread spin again if the queue is wrapping.
Remove the wait for the queue to finish wrapping, and just check if there is enough space to recycle when reserving queue space.

[git-p4: depot-paths = "//depot/stg/hsa/drivers/hsa/runtime/": change = 1256713]
2016-04-11 18:31:45 -05:00
Besar Wicaksono (xN/A) TX [TEXT] 4ccc695b95 Add global memory clock and width info on the agent attribute list and deprecate the ones in the memory region attribute list.
[git-p4: depot-paths = "//depot/stg/hsa/drivers/hsa/runtime/": change = 1256098]
2016-04-08 16:29:10 -05:00
Nikolay Haustov [TEXT] a795909bca Cherry-pick CL 1250286 from SC stg.
HSA Finalizer: Add dumping of code object, ISA and executable to loader.

This is controlled by loader options -dump-all, -dump-isa, -dump-code, -dump-exec

The options can now also be set with env variable LOADER_OPTIONS_APPEND.

Added tests to finalizer_offline

Testing: smoke, dumping on hardware

Reviewed by: Konstantin Zhuravlyov

[git-p4: depot-paths = "//depot/stg/hsa/drivers/hsa/runtime/": change = 1255351]
2016-04-07 06:01:20 -05:00
Besar Wicaksono (xN/A) TX [TEXT] 823c254d61 Cleanup TODO format
[git-p4: depot-paths = "//depot/stg/hsa/drivers/hsa/runtime/": change = 1255182]
2016-04-06 16:50:50 -05:00
Besar Wicaksono (xN/A) TX [TEXT] c95f96a9e4 Add environment flag to enable sdma workaround that will wait for the sdma queue to be idle before updating the write pointer. Add class to manage environment flags.
[git-p4: depot-paths = "//depot/stg/hsa/drivers/hsa/runtime/": change = 1254004]
2016-04-01 17:13:45 -05:00
Zhuravlyov, Konstantin (x21446) MA f6565a2f70 Clean up extensions and provide public extension/API to query host address given device address:
- Partially remove 'amd_load_map' extension because it is not used and will not be used
- Remove 'hsa_amd_query_kernel_host_address' API
- Add 'hsa_ext_amd_loaded_code_object' extension
- Add 'hsa_ext_amd_loaded_code_object_query_host_address' API
	- Most likely to be used by debugger, profiler, and hcc (printf)
- Update affected sources
	- 'hsa_system_extension_supported'
	- 'hsa_system_get_extension_table'
	- SoftCP path
- Integrate CLs 1250699, 1251204, 1251214 from stg sc

ReviewBoardURL: http://ocltc.amd.com/reviews/r/10091/
Testing: smoke (ok), teamcity (ok), samples on fiji (AQL and SoftCP) (ok)

[git-p4: depot-paths = "//depot/stg/hsa/drivers/hsa/runtime/": change = 1251223]
2016-03-24 19:00:30 -05:00
James Edwards (xN/A) TX 7d2bc9d113 Separate open source core runtime code from DK makefiles.
[git-p4: depot-paths = "//depot/stg/hsa/drivers/hsa/runtime/": change = 1250152]
2016-03-22 18:10:13 -05:00