Rust中的平行笛卡尔积评估

时间:2018-10-18 19:00:49

标签: parallel-processing rust itertools cartesian-product rayon

我想评估大型笛卡尔积的谓词,并收集通过的结果。我有两个矩阵(当前表示为Vec<Vec<f64>>,但我愿意接受建议)和一个f64 s的向量,因此我要对所有可能组合进行评估的谓词需要两个Vec<f64> s和f64作为输入。例如,结果将是Vec个传递索引三元组。

到目前为止,我已经查看了以下选项:

    来自itertools板条箱的
  • cartesian_product在笛卡尔乘积上创建顺序迭代器(至少对于两个向量),然后使用Rayon的par_bridge将其转换为并行的迭代器。由于不满足Sized特质约束,所以我无法完成这项工作。
  • 使用struct创建一个并行迭代器,该迭代器包含必要的限制和步长,并将索引三元组作为关联项。我没有完全遵循这一点,因为我认为为自己的结构实现IntoParallelIter太困难了。

任何建议都值得赞赏。如果进一步的阐述或代码示例有帮助,我也可以提供。谢谢!

0 个答案:

没有答案