Commit Graph

162 Commits

Author SHA1 Message Date
Marko Arandjelovic cf8eeabfe2 SWDEV-489619 - Fix memcpy tests with capture stream enabled
- Added missing validation as graph node should not be created
 if parameters are invalid
 - Fix conversion of input params to graphNode params

Change-Id: I37ab04942b5fb2eb07386850cb7dbbf26f9ca967


[ROCm/clr commit: db8527f655]
2025-01-16 10:31:04 -05:00
Rahul Manocha 0a9315f5e0 SWDEV-497288 - Add validation checks to hipGraphExecNodeSetParams
Change-Id: If8cde47bc8e62414333768e01064298d8a3d80ee


[ROCm/clr commit: 2b32d9aada]
2025-01-13 16:49:45 -05:00
Anusha GodavarthySurya 08c92f4793 SWDEV-480209 - Make internal callbacks non-blocking
Change-Id: Ic918d08f341abfd9a7c167d09f9c723cdc43157f


[ROCm/clr commit: 683a942364]
2025-01-10 02:16:11 -05:00
Anusha GodavarthySurya 4288640f69 SWDEV-469422 - Derive GraphExec from Graph and ChildGraphNode from GraphExec
Change-Id: I54d67a1665355579bc249d8ff4f9806e9ee14588


[ROCm/clr commit: 13e2e797c0]
2024-12-16 00:43:57 -05:00
Sourabh Betigeri 750313dfed SWDEV-421020 - Adds hipGraphAddBatchMemOp, SetGetParams and execSetParams APIs
Change-Id: Ieccecfe6173cc68fd3c01f86c99f7cc09fe194a3


[ROCm/clr commit: f1c05e9026]
2024-12-13 06:23:39 +00:00
Anusha GodavarthySurya acfcd1098f SWDEV-469422 - Refacor childgraph node
Remove static functions in graph

Change-Id: I4df94915f81f250acaea60398aea32ef0ed658e2


[ROCm/clr commit: 28cbf2bc4f]
2024-12-12 12:38:24 -05:00
Branislav Brzak cf25aaddcf SWDEV-490860 - Include signal_is_required in dot file dumps
Change-Id: Iec4b433b11fbecb71a4ce68beb7d6f681d25b8e6


[ROCm/clr commit: f2dba978f5]
2024-12-05 04:51:59 -05:00
Shane Xiao dabe311bd8 SWDEV-492049 - Remove the handle of Phy Mem from Memobj
The hipGraph will use VMM by default when allocating memory.
However, the handle of Phy mem has been added to Memobj by default.
Since the Memobj will track the whole address range from handle to
handle + size, this needs the system to reserve the whole address
range. If the system range have not reserved by the system, then it
will have the potential issue that clr finds the Memobj incorrectly.

This patch removes the handle from the Memobj to fix this potential
issue.

Change-Id: I2da38e6b2d11d0d48e1afe66c46899500c290624


[ROCm/clr commit: 231b2410a0]
2024-12-04 19:39:52 -05:00
Anusha GodavarthySurya a3c4a5a19c SWDEV-469422 - Cleanup graph code remove parallellists and nodewaitlists
Change-Id: I00c7b2894333bd13d47b913d3fcdd6e1ffcb741f


[ROCm/clr commit: c47f9dda58]
2024-11-30 04:40:51 -05:00
Vladana Stojiljkovic 3e8d5599d4 SWDEV-494612- Add capture support for hipLaunchCooperativeKernel
Change-Id: I6b3c6af55c60cffd43ce6f47b75998f750b75703


[ROCm/clr commit: b75b0d9a53]
2024-11-29 08:17:41 -05:00
Anusha GodavarthySurya ac927dd94e SWDEV-489084 - Update max streams for graph
Change-Id: I6d0992b2e80ebf3184911593a4f3574327b2e9c3


[ROCm/clr commit: fb7ad8361c]
2024-11-29 08:16:16 -05:00
Rahul Manocha 234f7bd197 SWDEV-497288 - Fix Segfault when kernel param is nullptr
1) for case where kernelParam_.func = nullptr, the validation
fails in setParam call and memory is not alloced for kernelParams
2) destructor path segfaults trying to free the kernelParams memory.
3) copy of params is done after function validation is successful.

Change-Id: I6338e0c89f259632e4115f0508e2f240bc207fd9


[ROCm/clr commit: 1ac9286b5a]
2024-11-26 11:34:41 -05:00
Rahul Manocha 5b40eefdac SWDEV-490864 - Optimize Alloc Node detection in graph
Change-Id: I6ac32f9abd0b44864071a0a9396463cb13f6941f


[ROCm/clr commit: 314d4a2c22]
2024-11-01 11:45:49 -04:00
Vladana Stojiljkovic d655fa8c66 SWDEV-489571 - Fix ihipGraphAddMemsetNode to allow memset of 3d portions of an array
* When hipMemset3dAsync is captured, a 3d extent can set be as a parameter (depth > 1). That worked on nvidia, but on amd wrong portion of array was filled because when creating Memset3D command, extent dimensions were used to create pitchedPtr, instead of original array width and height.
* Also, when capturing hipMemset3dAsync, nvidia allows any of the extent dimension to be 0, and in that case, no work should be done.

Change-Id: I46a605bf9ae801cd3348e98d528c21263a8eefce


[ROCm/clr commit: ec60bb1aed]
2024-10-31 10:29:54 -04:00
Anusha GodavarthySurya 1a472b9703 SWDEV-480209 - Handle GraphExec object release
=> GraphExec instance is destroyed before async launch completes,
destroy after all pending graph launches
=> Remove GraphExec destroy during next sync point(hipStreamSync,
hipDeviceSync etc..)

Change-Id: I4df682aae5787fd6e5240a7be936ce50361345d0


[ROCm/clr commit: f9f995c6d0]
2024-10-22 12:30:46 -04:00
Jaydeep Patel b31bf885a3 SWDEV-482692, SWDEV-485802, SWDEV-485489 - Handle refcounts owned by graph for user objects.
Change-Id: Ic739ab1ec5d3dc3143e3ae70f9591922bc0e3d9f


[ROCm/clr commit: e74ac6f580]
2024-10-08 03:44:44 -04:00
Branislav Brzak 491d3828dd SWDEV-482130 - Fix release of virtual mem obj
Change-Id: I893a8353aa1a25d00e36c8e601caf31cc0fc1f22


[ROCm/clr commit: 43fcac1739]
2024-10-08 01:37:39 -04:00
Anusha GodavarthySurya c0ceb1cf12 SWDEV-477324 - Capture Memcpy1D pinned H2D D2H
Change-Id: I1f4744f20a9caeed005ec68da44e5fde737e09f7


[ROCm/clr commit: 742b0210d3]
2024-09-30 01:01:30 -04:00
Vladana Stojiljkovic 887b11894b SWDEV-482086 - Fix hipGraphInstantiate leak
* In a scenario where kernel is launched with hipExtLaunchKernelGGL and stop event is used, hipGraphInstantiate leaks. Since stop event is used, profiling is enabled and Timestamp (ReferencedCountedObject) is created, but it doesn't get released.
* The idea behind this solution is that profiling should be disabled when command is captured, hence the timestamp should not be created. Because information about capturing isn't available when kernel command is created, packet capturing state is used to determine whether to create a timestamp or not.

Change-Id: Ia23adac4592ded4fb5e236acf99e12e729f63692


[ROCm/clr commit: da5f1a6146]
2024-09-29 11:36:53 -04:00
Rahul Manocha c4cab41cc2 SWDEV-479575 - Add marker to parent graph dependencies in childgraph node
1) Child Graph nodes need to have parent graph dependencies in waitlist.
2) Marker is placed on base stream with parent graph waitlist

Change-Id: Iec65a0171ea387be05b0733abcc708fb630e4be4


[ROCm/clr commit: 4d1ded9eaf]
2024-09-18 15:12:50 -04:00
Jaydeep Patel 7b2cd9111c SWDEV-478049 - Clear packets list as it is being added back later during submitKernelInternal while setting params for graph node.
Change-Id: I7451ffda93d94eeda5e1be05bb87558ae86d2a19


[ROCm/clr commit: 2494992695]
2024-09-16 23:10:32 -04:00
Anusha GodavarthySurya fc014587f8 SWDEV-477324 - Graph Capture memcpy D2D
Change-Id: Ifaa4d78854c03b3150233142df187c9bbf731cab


[ROCm/clr commit: e98179d924]
2024-08-28 23:36:51 -04:00
Anusha GodavarthySurya c2a4062392 SWDEV-470612 - Add stream id to DOT print when DEBUG_HIP_GRAPH_DOT_PRINT is enabled
Change-Id: Iec3630ba6fb2206925653ea939770bb9820d7c52


[ROCm/clr commit: 19bf971134]
2024-08-21 00:37:41 -04:00
kjayapra-amd 457e46551d SWDEV-439234 - set access for vmm memory on graph/mempool path.
Change-Id: Idfb740dcfe6c7fe0f18231de3074a81d06e6886e


[ROCm/clr commit: e72d5a4443]
2024-08-19 13:16:30 -04:00
Jaydeep Patel c1f83df84c SWDEV-474937 - Fix race condition between main and work thread on windows.
Change-Id: I4d6b9de41d0e5a39094eb3babe47dffde72e0587


[ROCm/clr commit: 912de7ab44]
2024-08-07 14:29:14 -04:00
German Andryeyev 35c7a87014 SWDEV-470612 - Add the optimized multistream path
- Added the optimized multi stream path in graph execution. It uses a fixed number of async streams in the execution
- Optimize the launch latency, where commands
creation and execution is done at the same time
- Optimize the scheduling to use less barriers and waiting signals if
the same queue  can be detected
- The new path is controlled by  DEBUG_HIP_FORCE_GRAPH_QUEUES
environment variable, where 0 will use the original path and any other
value will force the number of asynchronous queues for execution
- DEBUG_HIP_FORCE_ASYNC_QUEUE can force single queue async
execution in graphs(applicable for Navi families only)

Change-Id: I7eb40bc15c45f508d6911868a6f6d4c3598d380e


[ROCm/clr commit: 9db52f9a46]
2024-08-02 14:19:44 -04:00
Anusha GodavarthySurya 31927fefd6 SWDEV-468424 - Add support to capture multiple AQL Packets
=> Added support to capture multiple AQL Packets.
=> Added Interface to callback to hip runtime from rocclr to allocate
kernel args from the graph kernel arg pool.
=> Enabled Support to capture memset node.

Change-Id: I7e1c2ba06927459e024653058af142bd82192c43


[ROCm/clr commit: bd3a35bde1]
2024-08-01 23:55:51 -04:00
Saleel Kudchadker abfe135e4f SWDEV-475341 - Fix stream resolution for graphs launches
This issue was happening because of incorrect usage of getStream call,
if we get the null stream first and then typecast it, and call on
getStream again, we lose the advantage of simply passing "nullptr" to
indicate NULL stream. Thus we enter the waitActiveStream call and add
barriers to sync across streams.

Change-Id: I94dc4e3ec927295b9e1ab6dee4b37d7d3e00b0cc


[ROCm/clr commit: cda4b7db1c]
2024-07-25 19:38:23 -04:00
German Andryeyev fffd8d8190 SWDEV-470612 - Avoid copying a vector on the stack
Change-Id: Ia5fc7d1f77d2519dedeedb2c82c26efebb03d1d3


[ROCm/clr commit: c6b8d69158]
2024-07-25 10:09:19 -04:00
Anusha GodavarthySurya da132a2e28 SWDEV-468424 - Fix kernelArg mgr release and clear commands after capture
Creation of ReferenceCountedObject will increase reference count by 1.
Clear the commands from Node after capture so that they wont be reference later.

Change-Id: I1cc4085939cf65218ec2aa2e25ab6d737f7cacd3


[ROCm/clr commit: 6ae5d6896c]
2024-07-22 05:16:12 +00:00
Anusha GodavarthySurya 7985a72073 SWDEV-468424 - hipgraph capture memset node
Capture AQL packets during GraphInstantiation and enqueue AQL packets during graph launch.

Added support to capture single graph memset node.
Capture support for memset node is currently disabled.
Memset capture will be enabled when capture for multiple packets are supported..

Change-Id: I14dfbc41731025cc3a548a730558915def3fa384


[ROCm/clr commit: 346da4bb40]
2024-07-19 23:52:50 -04:00
Anusha GodavarthySurya b6d82323e9 SWDEV-468424 - Refactor kernel arg
For refactoring of childGraph to have its own graphExec,
kernelArgs needs to be separated from the graphExec object.
All the childNodes part of graph should share same kernelArg pool.
Otherwise we endup creating multiple device kernel arg memory chucks
for single graphExec.

Change-Id: I4029a46ebc1fa112d87df64ab1fecbf288fabe5e


[ROCm/clr commit: 35079e834e]
2024-07-16 08:38:44 -04:00
Jaydeep Patel 130b72302a SWDEV-457316 - Return invalid val from add mem free node if corresponding mem alloc node is missing.
Change-Id: Ib0c346a439fc38ebfd106bcbdf75bd10bfd2f090


[ROCm/clr commit: cf0320a0b9]
2024-07-04 13:09:46 -04:00
Saleel Kudchadker ff12be080d SWDEV-465602 - Fix random segfault
- Introduce a lock when checking isUserObjectValid. We need a lock
here as one can remove the userObject T2, leading to buffer overflow
when checking ranges in T1.

Change-Id: I058144b8cc463c90ab6bf5cf96bf937897742917


[ROCm/clr commit: 6ac67afdd5]
2024-07-03 18:57:23 -04:00
Anusha GodavarthySurya af6dd5d865 SWDEV-469331 - Fix issue of graph sync.
If graph has multiple branches, End command is enqueued on launch stream which
makes sure all the internal parallel streams are finsihed.

When node is removed from the graph, indegree and outdegree are not getting update correctly for parent, child nodes and
resulting in endNode not having deps on parallel commands. Resulting in graph sync issues.

Change-Id: I33cc2f21220e1c017d88099b29b542e05b683f73


[ROCm/clr commit: 9ad7e79e50]
2024-06-28 02:11:44 -04:00
Ioannis Assiouras c407812add SWDEV-468381 - Fixed use of vaddr_sub_obj in GraphMemFreeNode
Resolved an issue where a freed virtual buffer was incorrectly
added to the global mapping causing an assertion error during
teardown process.

Change-Id: I4801157a28603ce9be1ca0131982b700ff884f7a


[ROCm/clr commit: 1c6b92627d]
2024-06-27 16:20:47 -04:00
Saleel Kudchadker 17a46aa40b SWDEV-465602 - Refactor kernel arg pool allocation for graphs
- Allocate additional argument space to accomodate for kernel node
param updates

Change-Id: I2d4ea8bddd716f1191f3cbea807920d0248f8c4e


[ROCm/clr commit: 17313ec99d]
2024-06-25 18:28:03 -04:00
Anusha GodavarthySurya 291f079669 SWDEV-467102 - Hidden heap init for graph capture
If the graph has kernels that does device side allocation,  during packet capture, heap is
allocated because heap pointer has to be added to the AQL packet, and initialized during
graph launch.

Handle race with wait when 2 kernels with device heap are enqueued on multiple streams.

Change-Id: I45933b77fcaf7bc8fdf1bc906462e32b5d8d3688


[ROCm/clr commit: 57156c524d]
2024-06-17 02:07:25 -04:00
Anusha GodavarthySurya 44ef705022 SWDEV-461072 - Add reference to function parameter
Change-Id: I9ad5dafc6d697d12fbd1675f19f88f83ad2d7b9c


[ROCm/clr commit: 3a5cbb91b9]
2024-06-12 01:20:28 -04:00
Anusha GodavarthySurya 3b85ba70df SWDEV-461072 - Extend AQL Optimization for child graph nodes
Change-Id: I6baf906add7240b29ea653020a9a0b56206ee2a7


[ROCm/clr commit: 243dad92c9]
2024-05-28 06:31:10 +00:00
shadi 19ce99d104 SWDEV-421027 - Add more Graph APIs
Signed-off-by: shadi <shadi.dashmiz@amd.com>
Change-Id: I0a1fc284e48317a49ca88d4ed4e3a10e752efd58


[ROCm/clr commit: e705e5e0d9]
2024-05-28 06:28:17 +00:00
Anusha GodavarthySurya 085703c225 SWDEV-460770 - Handle Graph Exec release
Handle GraphExec instance is destroyed before async launch completes
GraphExec instance is destroyed after async launch completes
GraphExec instance is destroyed without a launch

Change-Id: I45a7c82295fea916c7559bd8f796df710513aea1


[ROCm/clr commit: bf4d10ff61]
2024-05-28 06:28:17 +00:00
Anusha GodavarthySurya ece7fa9f76 SWDEV-454247 - Fix graph multi threading issue
Change-Id: I565889da6f7091030b7f6a2d6234b82c389358e3


[ROCm/clr commit: de95625f09]
2024-05-28 06:28:17 +00:00
Saleel Kudchadker 588e870000 SWDEV-301667 - Pass reference to kernel name
Change-Id: I21abe109ddfabfe7640bf78a96c81a1317d31952


[ROCm/clr commit: 4a9d24a211]
2024-05-05 16:38:20 -04:00
Saleel Kudchadker 0cf1f056a7 SWDEV 301667 - Fix Debug dot print for graphs
- Fix possible buffer overflow for long kernel names

Change-Id: I3c51669de7ff242d03f9210ee045b6d5e7ac274a


[ROCm/clr commit: f1ef05b121]
2024-04-30 12:26:10 -04:00
German Andryeyev d1507ad475 SWDEV-353281 - Align VA size
Lower layer ignores alignment

Change-Id: If16df951ecefddc804a6effe013058afc595d30f


[ROCm/clr commit: 5c23440199]
2024-04-24 15:22:20 -04:00
Rahul Manocha 85a372e4eb [SWDEV-454661][SWDEV-454653] - GraphExecMemcpyNodeSetParam to return error on memcpy direction change
Change-Id: I2c8f5ea394caeaaa6895003e63cd62a052c491f8


[ROCm/clr commit: 880963346d]
2024-04-23 12:56:30 -04:00
Ioannis Assiouras 2f430138c5 SWDEV-451594 - Implement Readback and Avoid HDP Flush workaround for device kernel args
Change-Id: I6d41a089a17f55306e7ff402588a1e831b20a7a7


[ROCm/clr commit: bf74ef4025]
2024-04-19 09:29:20 -04:00
Anusha GodavarthySurya b77908a819 SWDEV-450053 - Handle MemcpyNodeSetParamsTo/FromSymbol negative parameters
For all windows allocation on SVM memory tagged with flag ROCCLR_MEM_INTERPROCESS.
hipHostMalloc validation is based on flag. So remove ROCCLR_MEM_INTERPROCESS before check.

Change-Id: I823bbf228d9a4a9acb4abffc01ac6b3f544c6e12


[ROCm/clr commit: 8179fa98a2]
2024-04-18 05:39:35 -04:00
Jaydeep Patel 3dae883e73 SWDEV-453535 - Capture hipMemset3DAsync.
Change-Id: I517c2557573db258b3e3e353f02f6a56652b0fde


[ROCm/clr commit: 12e0bdcd32]
2024-04-18 00:05:45 -04:00