Commit Graph

2173 Commits

Author SHA1 Message Date
Vladana Stojiljkovic da5f1a6146 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
2024-09-29 11:36:53 -04:00
Rahul Manocha 0d20383ef9 [SWDEV-467733] - Add Param checking for SetCacheConfig APIs
Change-Id: I9e777fa0fae6791ebab539e49346e6956a6ff196
2024-09-27 11:32:58 -04:00
Jonathan R. Madsen 07c9c7fe56 Fix HIP API trace versioning
Change-Id: I33f2be4668c96e2225d4ca9a253e61ec2dc65102
2024-09-25 10:32:14 -04:00
pghafari 0a918c8f96 SWDEV-479260,SWDEV-483599 - Check griddim Y,Z <= 65536
Gfx12 has 16 bits for grid dim Y/Z. Detect gfxIp and return error if dim y/z > 16 bits

Change-Id: I43dd14affc9e4073d0b1232e7523967f0180fa31
2024-09-23 11:36:13 -04:00
Jatin Chaudhary f8beeede22 SWDEV-466747 - call device sync once while unregistering
Basically embed hipDeviceSync in std::call_once.

Change-Id: I29ca926d61ed80e21acba5c388a8256d913487e4
2024-09-23 08:00:10 -04:00
German Andryeyev 29cc678d8d SWDEV-483586 - Unblock staging H2D transfers
Although unpinned copies require synchronizations
in HIP, runtime can avoid syncs for H2D copies with
a staging buffer

Change-Id: If2203c6bc0cbd89742823688dc8e89e9acd873b2
2024-09-21 10:25:27 -04:00
Anusha GodavarthySurya 870842201d SWDEV-485904 - Fix virtual,physical mem obj leaks
Change-Id: Ie0456b5dcfec206ae54a6aabfc2a15a620cac693
2024-09-19 23:04:20 -04:00
Saleel Kudchadker 8c84a20b01 SWDEV-301667 - Improve logging
Change-Id: I3fa06791b7ac73d84b8a9586e6b3435fa8858d25
2024-09-19 15:09:03 -04:00
kjayapra-amd 12a39fbf22 SWDEV-480772 - Remove name variable from amd::Monitor class.
Change-Id: Ie2a4fa44f485786227230f8a892e090e718aa30e
2024-09-19 11:55:01 -04:00
Marko Arandjelovic cfdc9dfc36 Revert "SWDEV-441296 - Allign hipTexObjectCreate error handling to CUDA"
This reverts commit 7d3c0c5e10.

Changing the error code is considered as a breaking change,
so it should be done in major releases only.

The other reason for reverting the commit is that this change itself
is incorrect. Cuda behaves in the same way as hip when
pResDesc or pTexDesc are nullptr.

Change-Id: I3abee6b79279b81ab01c7f8466c7f8e3776c4109
2024-09-18 16:38:16 -04:00
Rahul Manocha 4d1ded9eaf 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
2024-09-18 15:12:50 -04:00
Satyanvesh Dittakavi 8ee065c5bd SWDEV-478776 - Fix segfault with streamsync using hipStreamLegacy
Change-Id: Ifb412d0bcfa33bc1130b47b757ee276ca9bc1c3a
2024-09-17 15:02:18 -04:00
Jaydeep Patel 2494992695 SWDEV-478049 - Clear packets list as it is being added back later during submitKernelInternal while setting params for graph node.
Change-Id: I7451ffda93d94eeda5e1be05bb87558ae86d2a19
2024-09-16 23:10:32 -04:00
Ioannis Assiouras bcc545e6b8 SWDEV-476929 - Introduce an activeQueues set
The new set tracks only the queues that have a command
submitted to them. This allows for fast iteration
in waitActiveStreams.

Change-Id: I2c832eefa01280d9a87a5f57874d36d2e9441de7
2024-09-16 15:53:49 -04:00
Rahul Manocha eb1089593e SWDEV-480536 - Disable cpu wait in device synchronize
1) currently cpu wait is set to true, which makes the host wait for last
command in queue to finish even if the kernel execution has already
finished causing delay in device sync call.
2) device sync only needs to await completion when hw event
is not ready.


Change-Id: I91e3e89d39a1193ae06abac822cea8ae651493a5
2024-09-13 15:31:32 -04:00
Ajay c9955a1cea SWDEV-465215 - hipFuncSetAttribute hipFuncGetAttributes fixes
Change-Id: I2151e4470d63918ff6b809a8fdeaae5bea5cc899
2024-09-13 14:05:25 -04:00
kjayapra-amd 6211037f63 SWDEV-439234 - Access check before memcpy and kernel operations.
Change-Id: I7057125c03460db205409e19980145298c190fe2
2024-09-06 14:30:00 -04:00
victzhan 8be00b6602 SWDEV-477218 - Implement hipDeviceGetTexture1DLinearMaxWidth
Change-Id: I8103f710abeb869f5f84be61c57a30b24356def6
2024-09-05 15:09:38 -04:00
Rahul Manocha dbf00966b9 SWDEV-479575 - Graph clone root size check
Change-Id: I34dd43ea36ce1e2623198e6ce1179318b9f7e277
2024-09-04 11:54:15 -04:00
Marko Arandjelovic 224334e1d2 SWDEV-478206 - Fix hipTexRefSetArray
Change-Id: I6bd6ce60163d4f79001fce75e40ef46f1fcb7c3f
2024-09-04 03:41:25 -04:00
Rahul Manocha 1f333f64c4 SWDEV-468039 - Define formatting for fp8 ocp data type
Change-Id: Ie3c8bc71b4cefaa20e9e5d80636c2d26a05e91a7
2024-09-03 11:35:48 -04:00
Rahul Manocha 450eca293b SWDEV-462192 SWDEV-459056 Check if m_streams is empty
1) Since g_devices is not initialized when stream_per_thread constructor
is called on windows, m_streams is empty when hipDeviceReset is called.
2) clear_spt tries to access empty vector causing segfaults in
hipDeviceReset call.
3) on linux ROCCLR_INIT_PRIORITY makes sure that g_devices is initialized
first before tls constructor creates stream_per_thread object.

Change-Id: Ib2ba643d1278d820287ea3b242ed0878d7529165
2024-09-01 17:17:20 -04:00
Marko Arandjelovic ddc5744c19 SWDEV-478520 - Prevent segfaults in hipTexRefSetAddress
Change-Id: I9a57ccb81c574e35e7ebf6d71512f9249413bc3e
2024-08-29 05:05:37 -04:00
Anusha GodavarthySurya e98179d924 SWDEV-477324 - Graph Capture memcpy D2D
Change-Id: Ifaa4d78854c03b3150233142df187c9bbf731cab
2024-08-28 23:36:51 -04:00
Tao Sang 4b211f7272 SWDEV-474989 - Fix issues of texture tests
Change-Id: Ie1d874742b804f82ceda68864fa54f5d59c092b8
2024-08-27 11:29:43 -04:00
Ioannis Assiouras 2c84211b58 SWDEV-470372 - Added hipExtHostAlloc API
This change adds a new HIP API `hipExtHostAlloc` which preserves
the functionality of `hipHostMalloc`.

Change-Id: I13504c6fc13465ddd7aed329795bb4f2fef1baff
2024-08-27 08:26:03 -04:00
Vladana Stojiljkovic f5e6e27fe1 SWDEV-478207 - Return hipSuccess on the end of hipTexRefGetMaxAnisotropy
Change-Id: I0c4d6d13a178af8449853c87e62a1868eb17f87d
2024-08-27 05:30:36 -04:00
kjayapra-amd d7b097c994 SWDEV-478097 - Check for parents size in case of VA Mem object.
Change-Id: Icfdeabeb178c0dcc8c3a4bc48eec40067985794e
2024-08-22 14:18:51 -04:00
Sourabh Betigeri f6a68b3c2e SWDEV-462192 SWDEV-459056 - Fixes corruption
SPT is destroyed with hipDeviceReset(). If a
stream is created right after reset, the same
object id could be reused. Later SPT destructor
incorrectly verifies that the stream is valid
referring to the reused object id causing the
corruption.

Change-Id: I3b1f7ffdf8bab874dca7b8fde22318162997b8f6
2024-08-21 11:33:44 -04:00
Ioannis Assiouras 464b99373b SWDEV-470612 - Added fixes in optimized multistream path for graph execution
This change adds fixes in optimized multistream path for childGraph uses cases.

1) For childgraph nodes, rely on runNodes() only to process
   the childgraph and skip calls to createCommand and enqueueCommands.
   This ensures that the start/end markers are enqueued correctly
   with respect to the childGraph commands.
   In addition, the runNodes() for the childgraph should be called after
   the dependency walkthrough to make sure that the subgraph is executed once.

2) Nodes with no outgoing edges should be marked
   as a leafs regardless of which stream they are assigned to.
   This is to ensure that marker dependencies from nodes
   that run on non-zero stream to subgraph leafs that run on zero stream
   are still set up correctly.

Change-Id: I4a5f4f3b0e0d01e515cdcb045b46c2798f291255
2024-08-21 10:11:24 -04:00
Anusha GodavarthySurya 19bf971134 SWDEV-470612 - Add stream id to DOT print when DEBUG_HIP_GRAPH_DOT_PRINT is enabled
Change-Id: Iec3630ba6fb2206925653ea939770bb9820d7c52
2024-08-21 00:37:41 -04:00
kjayapra-amd e72d5a4443 SWDEV-439234 - set access for vmm memory on graph/mempool path.
Change-Id: Idfb740dcfe6c7fe0f18231de3074a81d06e6886e
2024-08-19 13:16:30 -04:00
kjayapra-amd 8ddb023512 SWDEV-465509 - Save the handle type during import function.
Change-Id: If069abb6cd474a7b071617757041402b53575414
2024-08-16 10:55:36 -04:00
Ioannis Assiouras 1e4c60f286 SWDEV-470372 - Un-deprecate hipHostAlloc, comply with cuda and introduce hipHostAlloc flags
Change-Id: I8165342825dfe07b6e9edc492d0166d0a03be62d
2024-08-15 18:25:22 -04:00
Ioannis Assiouras 7a1e818c82 SWDEV-449052 - Fix hipMemcpyParam2D when source or destination pitch is set to zero
When source or destination pitch is set to zero in hip_Memcpy2D struct
it should default to WidthInBytes + [src/dst]XInBytes

Change-Id: Id57b53cab40ba72ced231258da9356554c4868c3
2024-08-14 04:46:41 -04:00
Satyanvesh Dittakavi aa6d07518f SWDEV-475185 - Handle device id for hipStreamLegacy
Change-Id: Ib56e6edb77a923f3f9738df64cb9d9ef0b4ba564
2024-08-12 09:59:17 -04:00
Jaydeep Patel 912de7ab44 SWDEV-474937 - Fix race condition between main and work thread on windows.
Change-Id: I4d6b9de41d0e5a39094eb3babe47dffde72e0587
2024-08-07 14:29:14 -04:00
Jaydeep Patel 8e80429b87 SWDEV-457316 - Release graph exec before stream gets deleted.
Releasing graph exec after wait completes and before delete hip::stream obj
during stream destroy.

Change-Id: I1d68aa8d844f7d3af330c6d09c44af07f8553551
2024-08-06 00:39:37 -04:00
Jaydeep Patel b0047d690a SWDEV-465220 - Validate stream on which Kernel is planned to be launched.
Change-Id: I34c679bd888c275584c11ad3e8346d4d542976f9
2024-08-06 00:31:22 -04:00
Jaydeep Patel d954eb64db SWDEV-457316 - Multiple graph exec can be for given stream.
Change-Id: I0f1b184eb63e0432119d62f094637d375a3d4e55
2024-08-06 00:31:04 -04:00
German Andryeyev 9db52f9a46 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
2024-08-02 14:19:44 -04:00
Anusha GodavarthySurya bd3a35bde1 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
2024-08-01 23:55:51 -04:00
Julia Jiang e988e5e448 SWDEV-436608 - Un-deprecate hipHostAlloc()
Change-Id: I71393e6f536ba84b4e172acf54ba4f72350e2ae8
2024-08-01 11:45:20 -04:00
Marko Arandjelovic be5f097e8e SWDEV-465204 - Fix hipModuleLaunchKernel data validation
Change-Id: I129f265a5eb79d0a13da4f12e78e06ba307b17ee
2024-08-01 05:09:23 -04:00
Vladana Stojiljkovic d62c1dea72 SWDEV-465142 - Copy memAllocNodePtrs_ when cloning graph
Change-Id: I5a0907e59397e71b44db59c44b551b74a6e59ba0
2024-08-01 11:05:06 +02:00
Vladana Stojiljkovic d7b07b94a0 SWDEV-475127 - Check if hipBindTextureToArray parameters are null before dereferencing them
Change-Id: Id0173faff0a385d1665194c9033083ef9b2c48b5
2024-08-01 05:01:55 -04:00
Marko Arandjelovic b3153a5f41 SWDEV-475114 - Prevent segfaults in hipBindTexture
Change-Id: I050f36a5c74a5d4542155040ccce043fee6b73ad
2024-07-31 16:57:57 -04:00
Marko Arandjelovic 7d0ff387e9 SWDEV-461791 make memcpy synchronous for D2D if src&dst ptrs have SYNC_MEMOPS attribute
Change-Id: I603081d21e5eb3c73111845e350d8fa2ba5a7733
2024-07-30 11:46:55 -04:00
Ioannis Assiouras 9b33db9b24 SWDEV-472309 - Ensure static maps are destroyed after __hipUnregisterFatBinary
hipDeviceSynchronize called from __hipUnregisterFatBinary
accesses static maps and monitors. This change ensures these ojects
are not destroyed before __hipUnregisterFatBinary  is called.
Additionally it disables the teardown process for static build.

Change-Id: I46b58641d60efcf6637a8e99cdd786ffe9e2c77d
2024-07-30 10:26:59 -04:00
Saleel Kudchadker cda4b7db1c 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
2024-07-25 19:38:23 -04:00