use crate::fixed_point_batch::FixedPointBatch;
impl<'a, F> FixedPointBatch<'a, F>
where
F: Fn(&vyre::ir::Program, &[&[u8]], Option<[u32; 3]>, &mut Vec<Vec<u8>>) -> Result<(), String>,
{
pub fn ifds_prepared(
&mut self,
prepared: &crate::ifds_gpu::PreparedIfdsCsr,
seed_facts: &[(u32, u32, u32)],
max_iterations: u32,
) -> Result<Vec<u32>, String> {
crate::ifds_gpu::solve_prepared_borrowed_with_scratch_via(
self.dispatch,
prepared,
seed_facts,
max_iterations,
&mut self.ifds_scratch,
)
}
pub fn ifds_prepared_into(
&mut self,
prepared: &crate::ifds_gpu::PreparedIfdsCsr,
seed_facts: &[(u32, u32, u32)],
max_iterations: u32,
result: &mut Vec<u32>,
) -> Result<(), String> {
crate::ifds_gpu::solve_prepared_borrowed_with_scratch_into_via(
self.dispatch,
prepared,
seed_facts,
max_iterations,
&mut self.ifds_scratch,
result,
)
}
pub fn ifds_prepared_many(
&mut self,
prepared: &crate::ifds_gpu::PreparedIfdsCsr,
seed_sets: &[&[(u32, u32, u32)]],
max_iterations: u32,
) -> Result<Vec<Vec<u32>>, String> {
crate::ifds_gpu::solve_prepared_borrowed_many_with_scratch_via(
self.dispatch,
prepared,
seed_sets,
max_iterations,
&mut self.ifds_scratch,
)
}
pub fn ifds_prepared_many_into(
&mut self,
prepared: &crate::ifds_gpu::PreparedIfdsCsr,
seed_sets: &[&[(u32, u32, u32)]],
max_iterations: u32,
results: &mut Vec<Vec<u32>>,
) -> Result<(), String> {
crate::ifds_gpu::solve_prepared_borrowed_many_with_scratch_into_via(
self.dispatch,
prepared,
seed_sets,
max_iterations,
&mut self.ifds_scratch,
results,
)
}
}