问题标签 [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 回答
353 浏览

rust - Rayon find_any,并返回找到的项目的值

假设我有一个f带有签名的函数

现在我有一个Vec<u8>,我希望找出这个 Vec 中是否有任何元素的值为fOk(b)并且在这种情况下,返回该值b(并停止计算fVec 的其余部分)。我希望有一个带有签名的功能

这是我的第一个实现:

但我f最后做了一个无用的计算。我如何重构代码以避免这种额外的f调用?

Rayon's map, filter,reduce不起作用,因为它们会通过整个 Vec,我想避免。

0 投票
1 回答
290 浏览

parallel-processing - 为什么基于人造丝的并行处理比串行处理需要更多时间?

学习Rayon,我想比较一下斐波那契数列的并行计算和串行计算的性能。这是我的代码:

在 Rust 游乐场奔跑

我预计并行计算的经过时间会小于串行计算的经过时间,但结果相反:

我的串行/并行计算实现会有缺陷。但如果不是,为什么我会看到这些结果?

0 投票
1 回答
642 浏览

parallel-processing - 程序仍然使用 par_iter 和 par_extend 在一个线程上运行

我正在尝试并行化我的一部分代码,尽管它使用rayon和并行迭代器par_iter()and par_extend(),但它看起来仍然像在单个线程上运行。

我只是创建一个 的向量i32,用很多值填充它,然后将这些值移动到collections::HashSet整数中。

我的单线程代码:

运行时间大约8.86 s是平均水平。这是使用并行迭代器的代码:

8.62 s“并行”版本的 平均运行时间几乎相同(

你知道我做错了什么,或者不明白吗?

0 投票
1 回答
510 浏览

file-io - rayon::str::Lines<'_'> 不是迭代器

我正在尝试在 Rust 中逐行处理文件并使用 Rayon 将其并行化。它抱怨以下内容

到目前为止,这就是代码的样子

我是否缺少特征定义?我该如何解决这个错误?

0 投票
0 回答
471 浏览

rust - 实现一个 rayon::iter::ParallelIterator

我对 Rust 比较陌生,但成功地使用Rayon并行处理数据。至少只要我正在处理现有的数据结构并且par_iter()开箱即用。现在我已经实现了我自己的struct,它也实现了Iterator

该代码适用于普通for item in queue_instance {...}循环。我希望这足以让 Rayon 使用我的代码,但事实并非如此。我必须实现一个ParallelIterator。根据我尝试过的文档

编译器告诉我

<C as rayon::iter::plumbing::Consumer<QueueItem>>::Result 由于返回类型而预期

带有以下提示:

注意:预期类型<C as rayon::iter::plumbing::Consumer<QueueItem>>::Result找到类型QueueItem

注意:考虑将关联类型约束<C as rayon::iter::plumbing::Consumer<QueueItem>>::ResultQueueItem或调用返回的方法<C as rayon::iter::plumbing::Consumer<QueueItem>>::Result

注意:有关更多信息,请访问https://doc.rust-lang.org/book/ch19-03-advanced-traits.html

就我的理解而言::Result,应该是QueueItem,而且我(还)不能从关于高级特征的章节中理解。我必须如何实现该drive_unindexed功能才能使我的代码与 Rayon 一起使用?

0 投票
2 回答
377 浏览

rust - 我如何从 Rayon 的`par_iter()` 中捕捉到恐慌?

我正试图从内部捕捉恐慌par_iter()并继续我在par_iter封锁后所拥有的东西。

如果我有这个,我会正确地得到所有东西并且没有恐慌:

我得到总和后par_iter

当我尝试访问超过向量长度的索引时,我仍然打印我所拥有的任何内容,包括恐慌,但不要到达sum

结果:

我试图检查如果我实现了我能做什么panic_handler

它不起作用,甚至没有使用:

操场

我真正的问题不是超出向量的范围,而是在par_iter我不知道它是否会恐慌时捕捉恐慌。我的目标是收集结果并继续处理没有恐慌的事情。

0 投票
1 回答
234 浏览

rust - 如何更改函数以与 Rayon 并行运行?

我有一个函数,它获取一个数组、开始索引和结束索引。我想返回这个数组的最大元素。依次它工作正常。但我不知道如何将其转换为并行工作。所以你能告诉我怎么做吗?我一直在尝试 Rayon 的 for_each() 但总是遇到一些错误。转换后的函数会是什么样子?

0 投票
1 回答
658 浏览

rust - 使用带有自定义结构的 Rayon into_par_iter().sum()

我正在尝试使用 Rayon::prelude::into_par_iter 来总结一堆结构实例。我已经std::iter::Sum为结构实现了,但仍然遇到错误。这是我的示例代码;

我被告知the trait 'std::iter::Sum' is not implemented for 'TestStruct',但我认为我正在实施它。我在这里错过了什么吗?

0 投票
2 回答
2508 浏览

multithreading - 如何更改 Rayon 使用的线程数?

我正在使用人造丝库:

我想使用不同数量的线程运行此代码:1、2、3 和 4。

我已阅读有关Rayon 将产生多少线程的文档?其中说:

默认情况下,Rayon 使用与可用 CPU 数量相同的线程数。请注意,在启用了超线程的系统上,这等于逻辑内核的数量,而不是物理内核的数量。

如果要更改产生的线程数,可以将环境变量设置RAYON_NUM_THREADS为所需的线程数或使用ThreadPoolBuilder::build_global函数方法。

但是,这些步骤对我来说并不清楚。如何在我的 Windows 10 PC 上执行此操作?

0 投票
1 回答
294 浏览

multithreading - 如何使用 Rayon 并行计算 PI

我的代码可以在没有 Rayon 的情况下使用 Ramanujan 公式计算 Pi,我想为并行线程实现 Rayon,因为这是我的项目。

我知道我需要使用这个

但我仍然不明白该怎么做。

这是我的代码

操场