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.


[ROCm/hip commit: df98fd8531]
This commit is contained in:
bwicakso
2016-04-20 15:51:39 -05:00
orang tua 182ce03846
melakukan d24ba1ecbb
2 mengubah file dengan 10 tambahan dan 1 penghapusan
+5 -1
Melihat File
@@ -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);