Summary:
Implementation of polling async net executor.
Notes:
- New net executor async_polling - schedules CPU and GPU ops asynchronously, uses single polling thread
- Events: update to Caffe2 events to support async CPU events, adding new methods:
Query() - non-blocking checking of event states: INITIALIZED -> RECORDED -> SUCCESS/FAILED
ErrorMessage() - when operation runs asynchronously and fails calling this on event will give error message
- Tasks: using existing DAGNet's algorithm to compute CPU and GPU chains, a separate task for each chain
- Polling: using single thread to query state of events - for CPU tasks atomically queries task state, for GPU task - uses cudaEventQuery; using Event
- Scheduling of CPU ops: using global thread pools
- Scheduling of GPU ops: using GPU thread pool per GPU device
Reviewed By: dzhulgakov
Differential Revision: D5985110
fbshipit-source-id: a9de7fcbb71d046a3aa1b573072b89a65dfeee8c
Summary: Use only MLP model and re-enable test
Reviewed By: bddppq, Yangqing
Differential Revision: D6013471
fbshipit-source-id: 0cb4a9346c62a739ee6259832181f71e60eef311
Summary: Adjust test thresholds and number of examples
Reviewed By: salexspb
Differential Revision: D5945588
fbshipit-source-id: 7aecb8c642d8775f51dd3c296a28f1faf7ae0c81
Summary:
Executor test that checks on different models that model params are the same
when using a given executor and simple net
Reviewed By: akyrola
Differential Revision: D5908769
fbshipit-source-id: b6f5a2cf89c5c67b68e8b9be3264f38d5740d897