Fix for kernel synchronization
The completion future of a particular kernel is lost if there are multiple kernels in the stream. This can cause a racing condition where the signal associated with the unreferenced completion_future might get released by hcc runtime.
This commit is contained in:
@@ -440,9 +440,13 @@ public:
|
||||
hc::accelerator_view _av;
|
||||
unsigned _flags;
|
||||
|
||||
private: // Critical Data. THis MUST be accessed through LockedAccessor_StreamCrit_t
|
||||
private:
|
||||
// Critical Data. THis MUST be accessed through LockedAccessor_StreamCrit_t
|
||||
ihipStreamCritical_t _criticalData;
|
||||
|
||||
// Array of dependency completion_future.
|
||||
std::vector<hc::completion_future> _depFutures;
|
||||
|
||||
private:
|
||||
void enqueueBarrier(hsa_queue_t* queue, ihipSignal_t *depSignal);
|
||||
void waitCopy(LockedAccessor_StreamCrit_t &crit, ihipSignal_t *signal);
|
||||
|
||||
Reference in New Issue
Block a user