问题标签 [rayon]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
145 浏览

multithreading - Rust 人造丝 tcp 阻塞

我正在编写一个程序,它使用 ssh 在服务器上执行命令并获取输出。

我不明白的部分在代码中较低。

如果函数等待然后返回一个字符串,它会按预期工作,但如果使用 TCP,它会开始表现得很糟糕。我希望在 100 台主机上使用 100 个线程的速度会提高 100 倍,因为会同时打开 100 个套接字。

在睡眠版本中,更改poolThreads直接影响执行时间。在带有 TCP 流的版本中,pool从 1 更改为 100 有 100 个主机只会将其从 90 加速到 67,因为某些主机处于脱机状态。

我阅读了文档,但找不到任何可以帮助我的东西。

0 投票
2 回答
681 浏览

rust - 如何获取 Rayon 的 par_chunks_mut 中的块索引

我有一些数据,我想处理它并用它来填充一个已经存在的数组。例如,假设我想将每个值重复 4 次(playground):

这几乎可以工作,但 Rayon 没有将块索引传递给我,所以我不能在input[?]. 有没有有效的解决方案?

0 投票
1 回答
1108 浏览

rust - 调用 iter().sum() 时出错:特征绑定 `f64: std::iter::Sum<&std::vec::Vec>` 不满意

我正在努力处理一个应该返回 anf64或 an的函数Error。我尝试了很多组合,但没有成功。

错误:

操场

0 投票
1 回答
44 浏览

rust - 我如何找到正确的组合器以使此代码与人造丝一起使用?

我想更改以下代码以避免使用 .unwrap 或 .expect :

我目前正在使用 crossbeam_utils::thread 并且正在考虑切换到人造丝。所以我需要将此代码更改为具有各种组合器的迭代器。我已经尝试了很多东西,但没有一个能正常工作。因此,如果有人可以帮助我,那就太好了。

0 投票
1 回答
1159 浏览

rust - 意外的“找不到方法”编译器错误

这个问题源于我对cartesian_productfromitertoolsinto_par_iterRayon 的使用(在一个学习 Rust 的玩具项目中)。我的问题不是关于这个特定的代码,而是关于阅读 rustc 错误消息和 Rust 库文档的问题。

这按预期工作:

但是下面的代码无法编译并显示错误。Product返回的文档cartesian_product包括 的实现Iterator,所以我希望into_par_iter方法调用会进行类型检查,但事实并非如此。

这是失败的代码和产生的错误消息:

0 投票
0 回答
56 浏览

rust - 并行运行循环组合

以下代码计算语料库中每对元素之间的距离矩阵。但是,对于大型语料库,该过程变得相当冗长。我怎样才能将它与人造丝并行化?

0 投票
2 回答
103 浏览

multithreading - 如何使用 self 中的方法使用函数?

在尝试编写一些并行代码时,我不断遇到如下错误。我找到了一些解决方案,但它们都涉及我不想做的锁定。有什么办法可以解决这个问题吗?

0 投票
2 回答
1735 浏览

linux - Rust`std::time::Instant`“惊慌失措'提供的瞬间比自己晚”

我正在尝试在 rust 中设置一个简单的计时器,它以一定的频率返回 true。

std::time::Instant出于某种原因,在任务内使用时,这似乎总是会出现恐慌rayon(如果重要的话,在 Legion ECS 中运行)。

这是唯一一篇包含相同信息的帖子,但归结为使用了不寻常的内核。我只是使用 Ubuntu 18.04,没有任何异常设置。

此外,我尝试了多台机器,但代码出现了同样的错误。

这与使用std::time::Instant和有关rayon吗?

0 投票
1 回答
279 浏览

memory-management - Rust 中 Rayon 和 Indicatif 的内存泄漏

所以,我正在尝试对哈希进行详尽的搜索。哈希本身在这里并不重要。由于我想使用 CPU 的所有处理能力,因此我使用 Rayon 来获取线程池和大量任务。搜索算法如下:

只是一个高级解释:随着任务完成他们的工作,他们将一对(密码,哈希)发送到主线程,主线程会将哈希与原始哈希(我试图为其查找密码的那个)进行比较)。如果它们匹配,很好,我返回 main 并返回一个表示成功的枚举值,以及产生原始哈希的密码。在所有迭代结束后,我将返回 main 并返回一个枚举值,该值指示未找到哈希,但使用最后一个密码,因此我可以在以后的某个运行中从这一点重试。

我正在尝试使用Indicatif来显示进度条,这样我就可以瞥见进度。

但我的问题是该程序正在增加它的内存使用量而没有明确的原因。如果我让它运行 10 亿次迭代,它会慢慢添加内存,直到填满所有可用的系统内存。

但是当我评论该行时bar.inc(1);,程序的行为与预期一样,内存使用正常。

我用 Rayon 和 Indicatif 创建了一个测试程序,但没有哈希计算,它可以正常工作,没有内存错误行为。

这让我觉得我的代码中的内存管理有问题,但我看不到任何明显的东西。

0 投票
1 回答
687 浏览

multithreading - 如何使用人造丝进行枚举迭代?

我可以迭代和处理索引和变量,例如:

现在有了人造丝,据我所知,并行迭代par_iter()不支持枚举,因为它具有ParallelIterator.

Rayon 似乎有IndexedParallelIterator,但我不确定如何使用它来产生与上面显示的简单 for 循环类似的结果。

无论如何在并行迭代时跟踪每个值的索引?简单的 for 循环会是什么样子?