Commit Graph

102 Commits

Author SHA1 Message Date
Godavarthy Surya, Anusha 2538d7f02b SWDEV-522841 - Graph nodes must be created/launched on device where they are captured/created (#108) 2025-04-29 22:20:39 +05:30
Sang, Tao 96cadbc9e9 SWDEV-520352 - Remove HostThread and legacy monitor (#230)
* SWDEV-520352 - Remove HostThread and legacy monitor

Remove HostThread, semaphore and  legacy monitor.
Make original logics of thread and command queue stricker.
Add more comments to make logics clearer.
Some other minor improvement.

Also part of SWDEV-458943.
2025-04-29 09:55:24 -04:00
Jayaprakash, Karthik b2388dfb88 SWDEV-506467 - Skip Abort in case of crash from the device. (#60)
Change-Id: I964b2f2647d068202e9c38fcddb1337da754df8d
2025-04-29 11:19:02 +05:30
Anusha GodavarthySurya 683a942364 SWDEV-480209 - Make internal callbacks non-blocking
Change-Id: Ic918d08f341abfd9a7c167d09f9c723cdc43157f
2025-01-10 02:16:11 -05:00
Marko Arandjelovic 78f62d3230 SWDEV-495609 - Change include path for rocclr/utils
- Header files inside rocclr/utils when included from hipamd or opencl should be included as #include "rocclr/utils/xxx.h" instead of "utils/xxx.h"

Change-Id: Ic0760c33b9d091f5620dec67e5482c9698d22093
2024-12-05 11:44:20 -05:00
German Andryeyev efd3ea4b30 SWDEV-501403 - Switch to std::shared_mutex for streamSetLock
Shared mutex allows to have access to the list of streams  from
multiple threads at the same time.

Change-Id: Ibee64b846cde03321d5b17dbee2829c0bab7e7d6
2024-12-04 12:06:51 -05:00
Saleel Kudchadker 6611cc015d SWDEV-494149 - Improve hipGet/Set Device
Change-Id: If8975687a3ba9caadafc48a0066f19a4ebaab9e2
2024-12-03 13:36:38 -05:00
Satyanvesh Dittakavi e3b8754448 SWDEV-477584 - Match hipGetLastError behavior with CUDA using env var
Change-Id: I4c5acff180ae904028f7c5fdf4e109ffd1f0c4ef
2024-11-28 01:33:52 -05:00
Anusha GodavarthySurya 17e7b7c2ef SWDEV-472840 SWDEV-461980 - Fix null stream sync performance
=> If null stream is not created during sync skip nullstrm creation
=> Do cpu wait on blocking & null stream if it exists

Change-Id: I90d6ced6a2dd1782ba58f3fed4e3608fc0efa55a
2024-11-27 10:29:15 -05:00
Saleel Kudchadker 582dc7dd6d SWDEV-446123 - Revert "Match hipGetLastError behavior with CUDA using env var"
This reverts commit 5f477900a3.

Reason for revert: <INSERT REASONING HERE>

Change-Id: I11a456655393bcf4b82d749ce7259bc1b78d1424
2024-11-08 20:35:13 -05:00
Satyanvesh Dittakavi 5f477900a3 SWDEV-446123 - Match hipGetLastError behavior with CUDA using env var
Change-Id: Iaec697c1304d746376ecf2bfe2ad683b15ee189f
2024-11-07 12:02:34 -05:00
Anusha GodavarthySurya f9f995c6d0 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
2024-10-22 12:30:46 -04:00
Vladana Stojiljkovic 6f2bad3998 SWDEV-489823 - Fix hipStreamEndCapture leak when capture is invalidated
Change-Id: If8f5163d70e04d34a75fd0a7ba6c0a15ea59bb8b
2024-10-10 04:38:06 -04:00
Anusha GodavarthySurya 742b0210d3 SWDEV-477324 - Capture Memcpy1D pinned H2D D2H
Change-Id: I1f4744f20a9caeed005ec68da44e5fde737e09f7
2024-09-30 01:01:30 -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
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
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
Julia Jiang e988e5e448 SWDEV-436608 - Un-deprecate hipHostAlloc()
Change-Id: I71393e6f536ba84b4e172acf54ba4f72350e2ae8
2024-08-01 11:45:20 -04:00
sdashmiz 7257f56c60 SWDEV-429053 - Add more check for hipStreamLegacy
Signed-off-by: sdashmiz <shadi.dashmiz@amd.com>
Change-Id: Iaf802372b160b09e5e8451074af1731e4f1d410a
2024-07-08 13:55:54 -04:00
Ioannis Assiouras 3edf1501cc SWDEV-463865 - namespace changes to prevent symbol conflicts in static builds
Change-Id: I09ceb5962b7aa19156909f47167c87d6887c9cd1
2024-06-12 16:22:27 -04:00
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
German Andryeyev c95a75a2bf SWDEV-444670 - Enable teardown class
Force implicit runtime teardown with a global destructor.

Change-Id: Iabe63dedf5b94fefc98668585c45a61607120669
2024-04-16 12:00:06 -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
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
German Andryeyev d808ae6782 SWDEV-311271 - Update mempool errors
Add extra validations for negative tests.

Change-Id: I7b2879b8840b5d1b6c5cb0d919a651cd868b7529
2024-02-28 17:13:49 -05:00
German Andryeyev 4f6b0da028 SWDEV-311271 - Fix Windows mempool management
Windows path still uses multi threading implementation. Hence, in graphs
all nodes are executed in a queue thread and that requires to manage
mempool in the queue thread. However, the spec allows to destory memory,
allocated in a graph, outside of the graph's execution. That may cause
mempool management to go out of sync.

Change-Id: I0ffb2244b3cb720455ed44d1b3e2487fa8959a77
2024-02-13 17:16:06 -05:00
Anusha GodavarthySurya e9957151f3 SWDEV-439628 - hipGraphExecKernelNodeSetParams to update graph kernel node params with graph performance optimizations.
During hipGraphExecKernelNodeSetParams kernel function can also be updated.
Hence size required for kernel parameters differs from what is allocated during graphInstantiation.
So, create new 128KB kernel pool and allocate kernel args from the pool.
If the pool is full create new 128KB pool. Release kernel pools when graph exec object is destroyed.

Change-Id: I9567946d63400c79cbfd4c5439c654c92557ceae
2024-02-05 05:08:11 +00: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
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
sdashmiz c089ef4a2b SWDEV-332969 - [ABI Break]Substitute hipArray* with hipArray_t
- hipArray will be an internal struct from rocm6.0

Signed-off-by: sdashmiz <shadi.dashmiz@amd.com>
Change-Id: Icf97fe96b87be8532098cd7f9ceaad099f99c9b9
2023-10-12 12:09:19 -04:00
Anusha GodavarthySurya c7e4e9c2f4 SWDEV-408701 - Avoid adding duplicates when no node is captured in cross stream
Change-Id: Iccbddaf9db73238aa938f8b3e8ec410f4a86d524
2023-10-09 13:15:47 -04: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
Anusha GodavarthySurya fd97dde1e6 SWDEV-407568 - Move graph implementation to hip namespace
Change-Id: I7023f202a7e3eb25b17db6d3e361205594ae81a5
2023-07-26 06:52:45 +00:00
sdashmiz 173de06658 SWDEV-408586 - set device active when malloc is called
Signed-off-by: sdashmiz <shadi.dashmiz@amd.com>
Change-Id: Ib930d997b7d544d8b6fb42d2fea01fa8a4418e98
2023-07-13 11:39:58 -04:00
Anusha GodavarthySurya 2f83719d12 SWDEV-399098 - Change hip_init lock to use std::call_once
Updating hip_init lock to use std::call_once fixed Performance
drops in TF benchmarks for FP16

Change-Id: Ib1125ac66806b232057ba183e296ea4d0642d08d
2023-06-01 02:04:29 -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
Ioannis Assiouras d88f0358b0 SWDEV-397356: Move HIP_API_PRINT after HIP_INIT so that the begin function call gets printed
Change-Id: I99b655596741c19bc483647794ae8b4f6e6f2843
2023-05-04 18:46:21 -04:00
German 31697779bb SWDEV-353281 - Don't add the same stream into the list
Change-Id: I7f41de68b669dc759bdb11657dd897ad57e368fc
2023-04-25 10:21:55 -04:00
Jaydeep Patel e8eb1772f2 SWDEV-391178 - Extern monitor to avoid copy in multithreading.
Defining monitor in header cause copy and hence it's moved to cpp.

Change-Id: Ib07bbde2808d9cb2af9349076f777e8a5b28d210
2023-04-19 00:58:49 -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
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
Jaydeep Patel 57fa5938fe SWDEV-383056 - Don't sync with dst device for hipMemcpyAsync.
Change-Id: I28530e6bd870d617507592576295fc9e7eed1475
2023-02-28 23:21:01 -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
Ioannis Assiouras 06927fd3c1 SWDEV-381402 - Remove unused getNullStream() from device. Make stream destructor private.
Change-Id: Idde30a8bfe97a525bd9f9fb50698a5cb14b798fc
2023-02-24 10:42:46 +00:00