summaryrefslogtreecommitdiff
path: root/src/solvers/gpu/manager.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/solvers/gpu/manager.rs')
-rw-r--r--src/solvers/gpu/manager.rs19
1 files changed, 18 insertions, 1 deletions
diff --git a/src/solvers/gpu/manager.rs b/src/solvers/gpu/manager.rs
index ede6a85..42af314 100644
--- a/src/solvers/gpu/manager.rs
+++ b/src/solvers/gpu/manager.rs
@@ -27,6 +27,9 @@ impl RequestBuffer {
}
None
}
+ fn flush(&mut self) {
+ while self.read(CheckRequest::new(vec![], 0, 0)).is_none() {}
+ }
}
pub struct OclManager {
@@ -118,7 +121,21 @@ impl OclManager {
}
}
Message::CpuDone => {
- //TODO panic!("flush buffers");
+ for (i, b) in self.buffers.iter_mut().enumerate() {
+ b.flush();
+ self.host_sender
+ .send(Message::HostMessage((
+ self.job_id,
+ i as u32,
+ b.mask_buff.clone(),
+ )))
+ .unwrap();
+ self.output_sender
+ .send(Message::OutputMessage((self.job_id, b.row_buff.clone())))
+ .unwrap();
+ self.job_id += 1;
+ }
+ println!("flushing buffers");
self.host_sender.send(Message::CpuDone);
self.host_handle.take().unwrap().join();
}