summaryrefslogtreecommitdiff
path: root/src/solvers/gpu/mod.rs
diff options
context:
space:
mode:
authorDennis Kobert <dennis@kobert.dev>2020-01-12 09:51:22 +0100
committerDennis Kobert <dennis@kobert.dev>2020-01-12 09:51:22 +0100
commit8708a172ebe59d3189b8b9d756abd9da8dc509a3 (patch)
treed2fb58525e4773a509016850cad55c27540de736 /src/solvers/gpu/mod.rs
parent3a0d646ade02a6ca006a0d8cf6c0f60a1ece8272 (diff)
Allow to use teh iterator for results
Diffstat (limited to 'src/solvers/gpu/mod.rs')
-rw-r--r--src/solvers/gpu/mod.rs22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/solvers/gpu/mod.rs b/src/solvers/gpu/mod.rs
index 2c7f69d..e89f033 100644
--- a/src/solvers/gpu/mod.rs
+++ b/src/solvers/gpu/mod.rs
@@ -7,14 +7,19 @@ pub use manager::*;
type MaskMessage = (u64, u32, Vec<u64>);
type RowMessage = (u64, Vec<Vec<u32>>);
+#[derive(Debug)]
pub enum Message {
CheckRequest(CheckRequest),
HostMessage(MaskMessage),
OutputMessage(RowMessage),
ResultMessage(ResultMessage),
+ RowResult(RowResult),
Terminate,
+ CpuDone,
+ GpuDone,
}
+#[derive(Debug)]
pub struct ResultMessage {
data: Vec<u64>,
offset: usize,
@@ -48,6 +53,7 @@ impl ResultMessage {
}
}
+#[derive(Debug)]
pub struct CheckRequest {
rows: Vec<u32>,
bitmask: u64,
@@ -63,3 +69,19 @@ impl CheckRequest {
}
}
}
+
+#[derive(Clone, PartialEq, Eq, Hash, Debug)]
+pub struct RowResult {
+ rows: Vec<u32>,
+}
+
+impl RowResult {
+ fn new(mut rows: Vec<u32>) -> Self {
+ rows.push(0);
+ rows.sort();
+ Self { rows }
+ }
+ fn output(&self) {
+ println!("{:?}", self.rows);
+ }
+}