move launch/synchronization points to clarify task dependencies - Redmine #3082
The direct communication changes introduce new dependencies which are currently satisfied using function calls that lead to position dependent brittle code and as a side-effect suboptimal code essentially eliminating asynchrony.
Data dependencies should be reassessed after integration:
- data movement should be initiated as soon as a producer generates data (rather than right before the communication call invocation);
-
synchronization should be async whenever possible and when synchronous, done as late as possible, close to the consumer of the data rather than bundled with the data transfer function.This has been taken care of through the new GPU force reduction mechanism.
(from redmine: issue id 3082, created on 2019-09-09 by pszilard)
- Relations:
- relates #2890 (closed)
- parent #2915