summaryrefslogtreecommitdiff
path: root/src/solvers/gpu/mod.rs
diff options
context:
space:
mode:
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);
+ }
+}