Commit Graph

138 Commits

Author SHA1 Message Date
sdashmiz 627ccfa502 SWDEV-429053 - Add check for StreamLegacy
Signed-off-by: sdashmiz <shadi.dashmiz@amd.com>
Change-Id: I402185a3b81935aaa1c8c4963407b8de21c72d8a
2024-05-28 06:31:10 +00:00
Anusha GodavarthySurya bf4d10ff61 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
2024-05-28 06:28:17 +00:00
Rakesh Roy 880f1f0049 SWDEV-450361 - Add nullptr validation for waitStream
- Application is passing null for parameter stream in API hipStreamWaitEvent
- When event stream isn't capturing and event is not recorded, causes segfault because we are accessing deviceId() from waitStream

Change-Id: I8b87ffd6f234677f68b66dcb7ef44b2ff04a7c91
2024-04-04 02:07:18 -04:00
Anusha GodavarthySurya 19b4660cbb SWDEV-443567 - SWDEV-436126 - Fix Prohibited and Unhandled Operations during capture
=> hipDeviceSynchronize is not allowed during capture.
=> hipEventSynchronize during capture should return hipErrorCapturedEvent error
=> hipEventQuery during capture should return hipErrorCapturedEvent error
hipStreamSynchronize, hipEventSynchronize, hipStreamWaitEvent, hipStreamQuery
For Side Stream(Stream that is not currently under capture):
=> If current thread is capturing in relaxed mode, calls are allowed
=> If any stream in current/concurrent thread is capturing in global mode, calls are not allowed
=> If any stream in current thread is capturing in ThreadLocal mode, calls are not allowed
For Stream that is currently under capture
=> calls are not allowed
=> Any call that is not allowed during capture invalidates the capture sequence
=> It is invalid to call synchronous APIs during capture. Synchronous APIs,
such as hipMemcpy(), enqueue work to the legacy stream and synchronize it before returning.

Change-Id: I201c6e63e1a5d93fd416a3b520264c0fdbe31237
2024-03-28 22:10:31 -04:00
Ioannis Assiouras be2bdabb76 SWDEV-430437,SWDEV-434702 - Split the streamset per device
Change-Id: If1bcca45825c9899462bb95ed6f637f5af806cc8
2024-03-18 19:08:52 -04:00
Anusha GodavarthySurya 476dc4c87c SWDEV-436126 - hipStreamDestroy to remove stream from capture list
Change-Id: Ie735f27b9c5df4faf39bd4be10fbe4401fd88cdb
2024-03-14 11:32:10 -04:00
German Andryeyev 17d0c166d2 SWDEV-311271 - Add dependency tracking for streams
Mempool has capability to track dependency between streams for
faster memory reuse. Enable that capability.

Change-Id: I28266a7e38d0fc4c5d027b9542d3719653840821
2024-03-05 12:53:09 -05:00
Saleel Kudchadker 0b0df605d4 SWDEV-301667 - Remove resetFenceDirty
Dont track the status of fence_dirty_ flag on the host, instead clear it
when we submit a barrier on the respective stream.

Change-Id: I4d98dbf20c81379c9c5da9f5b67629a8f9f6dfcd
2024-01-15 15:43:14 -05:00
Jatin Chaudhary 2cfb8bc3c1 SWDEV-438181 - check stream associated with event
...before we dereference it. It might have been deleted.

Change-Id: Ief832ee0907658a40ca42b9d78d19658153a05dd
2024-01-12 10:39:20 -05:00
Saleel Kudchadker 4b3c4709ff SWDEV-301667 - Missing marker for hipExtLaunch* optimization
- Use isFenceDirty() check in hipStreamQuery.
In case if there is a stopEvent for hipExtLaunch* API we avoid system
scope if there are consecutive hipExtLaunch* and replace them with agent
scope, but then if one uses hipStreamQuery it should detect we need a
barrier with system scope.

Change-Id: I539810f659d4e1c49104e3a0da6ff2803c6b3dee
2024-01-11 18:19:30 -05:00
German Andryeyev 3fa4e31180 SWDEV-311271 - Release freed memory from MemPools
Runtime has to release extra memory, held by the pools,
in synchronization points for event, stream or device.

Change-Id: Id533a5e1d137812aa72bdfe101b4b333c6a43d66
2023-12-19 13:47:04 -05:00
Saleel Kudchadker 058b2702db SWDEV-301667 - Logging refactor
- Remove newline from logging as log function internally inserts a new
line

Change-Id: I25eb2242a1f1e87cf811bcc373d1d485b2e027a8
2023-12-07 12:12:57 -05:00
Saleel Kudchadker 59a6a6c12e SWDEV-433634 - Check Relaxed capture interaction mode for the thread
- Allow capture to be less rectrictive if we set the global thread
interaction mode for the thread.

Change-Id: I84f65d9418ac26ada0477c85a45a3831c2351ce4
2023-12-06 22:35:20 +00:00
Ioannis Assiouras 3c6505c2d5 SWDEV-435715 - Acquire the streamSetLock prior to iterating the set in WaitActiveStreams
Change-Id: I0a9721dcde1a3716192d532e290d8a7afc8ac9fc
2023-12-05 04:12:24 -05:00
Ioannis Assiouras 8bdda90071 SWDEV-434702 - get the nullstream in constant time in iHipWaitActiveStreams
Change-Id: Ib92cc4d2ca1b725cf30b24cdd711c873fd513d95
2023-12-03 19:05:18 -05:00
Anusha GodavarthySurya 5e21f0c6bd SWDEV-351966 - Dispatch table for hip runtime
Change-Id: Ie4a44fa8cf1ff9c152146070bbbf6b0636d4e325
2023-11-22 01:11:19 -05:00
German Andryeyev fbea58ba11 SWDEV-423317 - Enable GPU wait for hip sync calls
hipStreamSynchronize and hipDeviceSynchronize won't longer wait
for CPU commands in DD mode

Change-Id: I079c8bbfc34ddc6d3e2d74c92a34665877e512a5
2023-09-22 13:04:27 -04:00
Sourabh Betigeri 3f88fe850b SWDEV-326798 - [ABI Break] Fixes null stream sync behavior
Change-Id: I84ad21f61779145c198dc68bf0fe02a57d34bf64
2023-09-21 11:57:58 -04:00
Saleel Kudchadker e1e5d071ba SWDEV-301667 - Port optimization to save extra packet to graphs
Change-Id: Ibaf64a4efe070c42620e6e153c1862a4a0b15664
2023-08-23 16:58:21 -04:00
sdashmiz 41bbdfca94 SWDEV-405485 - fix the error to match cuda
Signed-off-by: sdashmiz <shadi.dashmiz@amd.com>
Change-Id: Ia03a50e437c8eb189bc6578170b5ef20b470541c
2023-06-27 15:01:14 -04:00
sdashmiz 2cdaf7e80f SWDEV-405485 - move the param validation
Signed-off-by: sdashmiz <shadi.dashmiz@amd.com>
Change-Id: Ic3a27c47a88954da866a91494bcfb8721f33ad2b
2023-06-22 23:33:48 -04:00
sdashmiz 1e9dfdfe99 SWDEV-360031 - Event record clean up
Signed-off-by: sdashmiz <shadi.dashmiz@amd.com>
Change-Id: Ic7b5edd501c5f61b2bce87252ac040cbc4083006
2023-05-29 11:42:16 -04:00
sdashmiz 544318fffe SWDEV-360031 - Correct APIs behaviour
- correct error for hipStreamWaitEvent when event recorded before
  capture
- correct hipEventSync when event is synced during capture

Signed-off-by: sdashmiz <shadi.dashmiz@amd.com>
Change-Id: I7ecbed5621eaf323846d4ccb20ec112aaa8a5757
2023-05-01 13:38:59 -04:00
Jaydeep Patel 09a081235c SWDEV-391731 - Check thread local list too.
With global flag, In addition to global vector, we need to check
thread local vector too. If both of them are empty then only
return false.

Change-Id: I3a24d16a35c702b34b9a8867dc410ebd80108f25
2023-04-19 01:00:09 -04:00
German 1e88d2c52f SWDEV-380703 - sync all streams individually
Avoid syncing blocking streams with the default stream,
since that introduces extra command dependencies and
doesn't allow to destroy memory after last submission

Change-Id: I618e9bd2091c4cf9157125612d8c4759030c5a80
2023-04-05 16:37:49 +00:00
Jaydeep Patel 4ac87c051d SWDEV-362372 - Correct error code.
Change-Id: Ife4f6e3481d0e804e676fe076f0928870c6bae57
2023-04-05 16:37:18 +00:00
Christophe Paquot 6e86d29a58 SWDEV-301667 - Optimize lock for graph global capture mode
Remove unneeded lock and add smaller scope

Change-Id: I03a437057d54ce2d72c07a080bb872693b7f3f6c
2023-04-05 10:58:14 +00:00
Sourabh Betigeri 7809d2846b SWDEV-387810 - Fixes to verify if the current stream matches the capture stream
- invalid to synchronize or query the execution status of a capturing stream but non-capturing streams can.

- If any local thread has an ongoing or concurrent capture sequence initiated with hipStreamCaptureModeGlobal, it is prohibited from unsafe calls

Change-Id: Ifa641e807216d3b7c3e8c2fb1be2f7a50bd641df
2023-04-05 10:53:33 +00:00
Ioannis Assiouras e6520ddf8a SWDEV-388278 - Fix return HIP_RETURN(x)
Change-Id: I940ee3660a2427eade8690a9318966fb04a1fbe8
2023-03-13 13:32:55 +00:00
Jatin Chaudhary a7049bf7a0 SWDEV-372153 - Add hipStreamGetDevice Implementation
Change-Id: Ifd1f13e311e8221ca6d94cf27f9131eb97678067
2023-03-01 04:35:49 -05:00
Sourabh Betigeri 08c8972d97 SWDEV-326798 - Revert "SWDEV-326798 - Changes in stream sync behavior"
This reverts commit 51adec2730.

Reason for revert: HIP tests on windows fails

Change-Id: I795ed19d76a41e2fd9971414cefa5bd3be45d4bc
2023-02-28 02:28:12 -05:00
Sourabh Betigeri 51adec2730 SWDEV-326798 - Changes in stream sync behavior
Change-Id: If6d0b3876a9bf197c7e49273eaa5ca5bfae46d0b
2023-02-27 16:48:14 -05:00
sdashmiz ea5838320e SWDEV-379388 - remove check for all streams done
- cuda shows  a different behaviour and different error need more
  investigation

Signed-off-by: sdashmiz <shadi.dashmiz@amd.com>
Change-Id: I68771102ba4dff6157bca34a4135cb245f023d08
2023-02-23 22:56:23 -05:00
Saleel Kudchadker 7fc5ae2226 SWDEV-364604 - Add support for hipEventDisableSystemFence
Change-Id: I1a6451c873fb22729ac61e4e80f8531251e990f0
2023-02-21 23:11:40 -05:00
Ioannis Assiouras e3633dc8f4 SWDEV-381402 - Derive hip::Stream from amd::HostQueue
Change-Id: I6c1aca5eb350c32d974ae4ffcc725705355956d8
2023-02-21 18:12:03 -05:00
Ajay GunaShekar 1f4176062b SWDEV-372757 - Don't destroy null queue in MT
This reverts commit f39655c0c8.

Reason for revert: patch does not fix all stream hangs. So another patch was merged which fixes all issues.

Change-Id: I332d1ea29c23747b46b7667fe3e34e0ceefd2b23
2023-01-25 23:41:16 -05:00
sdashmiz a4dd362a1d SWDEV-379151 - correct error status
- if the stream is null ptr and there is capture ongoing return an error

Signed-off-by: sdashmiz <shadi.dashmiz@amd.com>
Change-Id: Iff33e4aebc253fb7bb56daf5c455722d726c6705
2023-01-25 15:06:38 -05:00
sdashmiz be966acb0c SWDEV-360031 - check for stream capture finish.
- stream capture should be done before any sync APIs.

Signed-off-by: sdashmiz <shadi.dashmiz@amd.com>
Change-Id: I3d65f67ee68777be71f97f48d460ccaefdd4e1af
2023-01-16 13:09:24 -05:00
sdashmiz 338307ef2c SWDEV-374390 - add correct error
- null stream should return error on host function

Signed-off-by: sdashmiz <shadi.dashmiz@amd.com>
Change-Id: I17659ad7af0814091dbf6cb4a2cb2644514551f0
2023-01-16 13:08:23 -05:00
German f39655c0c8 SWDEV-372757 - Don't destroy null queue in MT
Skip destruction of the null queue for MT. Windows can destroy worker
thread on exit during the stream destruction, causing a race condition.

Change-Id: I3e4bc3ab2b477d38c0aec1fc59e6f1af0f8f6b0f
2023-01-09 00:03:09 -05:00
German Andryeyev 38ad6234f9 SWDEV-360031 - Erase destroyed stream from capture
Parallel streams can be destroyed during capture. Make sure runtime
removes the destoryed streams from the list of parallel captured streams

Change-Id: I46b6cbb951e8711f0bf02f2826c3b890b2541ffe
2023-01-03 13:34:07 -05:00
sdashmiz c5e7b56463 SWDEV-366974 - add proper error
- Null stream correct error when blocing stream is being captured

Signed-off-by: sdashmiz <shadi.dashmiz@amd.com>
Change-Id: I0d902a4f4ef02736a6db60ba7bffa7c20011bc84
2022-11-21 10:39:21 -05:00
Jaydeep Patel e7a34f9efe SWDEV-365048 - extra marker is required for HW event check, which is done before the callback is finished.
Change-Id: Ib46bfc4e060a60fb14aa782688d35b34534cca65
2022-11-04 00:34:14 -04:00
German 413cc757af SWDEV-363602 - Notify cmd queue about callback wait
Remove extra barrier, since ROCR backend in DD mode blocks HW queue now when a callback is injected
Add a notificaiton for MT mode about possible waiter for a callback

Change-Id: Ifd70ce5597e1ba868e4197ad1850ace11a4f90ae
2022-10-24 10:56:20 -04:00
Saleel Kudchadker da88091ba4 SWDEV-359548 - Enqueue marker if fence is dirty
The marker would flush any caches.

Change-Id: I5f990285fb3c3a3e8d5d0b2a2d5a9f1fdcea435c
2022-10-13 07:53:01 -04:00
Rakesh Roy 8b391ef18c SWDEV-351969 - TLS Optimization
- Aggregate all TLS(Thread Local Storage) variables into a single class
- This is to improve cache accesses per thread

Change-Id: Ic8361eaeae290fff00254684e309471958365eb9
2022-10-09 22:08:14 -04:00
Laurent Morichetti 82bce811ee SWDEV-351980 - Consolidate registration tables in the roctracer library
Remove the api_callbacks_table_t that was holding the API activities and
user callbacks. Instead use a single roctracer callback (TracerCallback)
used to report both API activities and callbacks.

Remove the hipInitActivityCallback that was setting the ROCtracer
callback and memory pool for asynchronous activities as it did not
allow disctinct pools to be used for each activity.  Instead, use
hipRegisterTracerCallback to set the single roctracer callback.

Change-Id: I4c10f04f29a6e4cce8caf15db3016c3f72c86b04
2022-09-21 02:41:39 -04:00
Anusha Godavarthy Surya 52a22a1263 SWDEV-350025 - Added hipLaunchHostFunc functionality
Change-Id: I6b9d547f7ddf84e617e35ff5d5a490ff458272ef
2022-09-07 17:53:26 +00:00
Jason Tang 97741fe5d4 SWDEV-333471 - Remove HIP_FORCE_QUEUE_PROFILING
HIP_FORCE_QUEUE_PROFILING has been replaced by GPU_FORCE_QUEUE_PROFILING.

Change-Id: Ic8dec4407ef79c27094cb3954e48869075b4732f
2022-08-24 11:53:16 -04:00
Sarbojit Sarkar e9961fedd8 SWDEV-323441 - Phase-II : per thread default stream
Change-Id: I3c796ddaebcf0223d7faf50c425c1674de215f9d
2022-07-11 12:22:23 -04:00