如题,假设有如下自定义矩阵乘法的代码:
impl<'a, 'b> Mul<&'b Vector> for &'a Matrix {
type Output = Vector;
fn mul(self, other: &'b Vector) -> Self::Output {
let len = self.r;
let mut par_iter = (0..len).into_par_iter().map(|i| mul_helper(self, other, i));
let res: Vec<f64> = par_iter.collect();
Vector { r: other.r, data: res }
}
}
fn mul_helper(matrix: &Matrix, vector: &Vector, i: usize) -> f64 {
// ...一些代码
}
那么这个时候rayon能自动识别出我的不可修改的def,从而保证能并发读取matrix和vector吗?还是说需要把数据用rwlock包裹一下,试了下,直接rayon好像反而比自己遍历要慢。(但是手头上目前只有个双核的surface,不好说是不是核心不够的问题)。
PS:这个矩阵乘向量是自定义的,不能使用现成的矩阵库或者稀疏矩阵计算库。
1
共 0 条评论, 1 页
评论区
写评论还没有评论