问题标签 [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 投票
2 回答
4274 浏览

parallel-processing - 不能使用人造丝的`.par_iter()`

我有一个实现的结构,Iterator它可以作为迭代器正常工作。它产生值,并使用.map(),我从本地 HTTP 服务器下载每个项目并保存结果。我现在想并行化这个操作,Rayon看起来很友好。

尝试按照文档中的示例进行操作时出现编译器错误。

这是按顺序工作的代码。generate_values返回实现的结构Iteratordl下载值并保存它们(即它有副作用)。由于迭代器在 Rust 中是惰性的,所以我.count()在末尾放了 a 以便它实际运行它。

在人造丝示例之后,我尝试了这个:

并得到以下错误:

有趣的是,当我使用.iter()许多 Rust 东西使用的 时,我得到了一个类似的错误:

既然我实施了Iterator,我应该.iter()免费获得吧?这是为什么.par_iter()不起作用?

Rust 1.6 和 Rayon 0.3.1

0 投票
1 回答
1873 浏览

rust - 找不到“人造丝”的箱子

我正在尝试使用并行化查找 BST 的直径:

当我编译(rustc code.rs)时,它显示

我的 Rust 版本是rustc 1.8.0 (db2939409 2016-04-11)

0 投票
1 回答
4490 浏览

generics - 如何将人造丝的 .par_iter() 与泛型向量一起使用?

这是一个人为的例子,但我相信如果我能做到这一点,我可以将它应用到我的具体案例中。

此错误在编译时出现“方法par_iter存在但不满足以下特征界限:&std::vec::Vec<T> : rayon::par_iter::IntoParallelIterator”。如果我使用iter代替par_iter或切换到使用f32f64代替泛型,则代码可以正常工作。

我该怎么做才能par_iter在泛型向量上使用?该IntoParallelIterator特征是否打算由最终用户实现?我该怎么做呢?

0 投票
2 回答
1564 浏览

multithreading - Rayon 中的每线程初始化

我正在尝试使用 Rayon's 优化我的功能par_iter()

单线程版本类似于:

每个Store实例只能由一个线程使用,但Store可以同时使用多个实例,所以我可以通过clone-ing使这个多线程store

store但是,这会在每次迭代时克隆,这太慢了。我想每个线程使用一个商店实例。

人造丝可以吗?还是我应该求助于手动线程和工作队列?

0 投票
1 回答
1313 浏览

rust - 为了在这里使用 Rayon,如何满足 Iterator trait bound?

我正在尝试通过使用 Rayon'spar_iter而不是并行化 Ramer–Douglas-Peucker 线简化算法iter

我已经impldSendSyncfor Point<T>,但是当我切换到 时par_iter,我收到以下错误:

我不明白它在问什么。我在元组上操作的问题是什么?

0 投票
2 回答
1606 浏览

rust - 用 par_iter() 替换 iter():不能在“Fn”闭包中的捕获的外部变量中可变地借用数据

在这样一个相当简单的情况下,我希望iter()人造丝 par_iter()替换一个,但我没有这样做。

之前的代码:

这是人造丝修改的代码:

操场

虽然我知道以下错误消息告诉我该怎么做,但此时我无法这样做。

如果我知道indexes_to_increment向量 inadd_factor_indexes只包含唯一u8的 s 并且可以用一个集合替换,那会改变什么吗?

0 投票
2 回答
3582 浏览

rust - 如何将 Rayon 与现有的迭代器一起使用?

HashSet在进行一些过滤后,我将正则表达式变成了。我正在尝试将它与 Rayon 一起使用,但我无法弄清楚如何在不先将 Rayon 转换为向量的情况下使 Rayon 与现有迭代器一起使用。这可能吗?

0 投票
1 回答
1257 浏览

rust - 找不到名为“par_iter”的方法类型

我正在尝试使用 rayon crate 并行化以下 iter 调用

https://github.com/vishpat/stl/blob/master/src/lib.rs#L315

并用 par_iter 替换 iter 调用,但得到以下编译错误

我错过了什么?

0 投票
3 回答
1911 浏览

multithreading - 如何使用 Rayon 将一个大范围拆分为多个范围,并让每个线程在一个块中找到?

我正在制作一个通过并行化强制密码的程序。目前破解密码已经以纯文本形式提供,我只是试图暴力破解它。

我有一个名为的函数generate_char_array(),它基于整数种子,转换基数并返回一个u8字符片段来尝试检查。这首先通过字母表查找 1 个字符串,然后是 2 个,依此类推。

使用找到的字符串索引(或种子整数),我可以生成找到的字符串。

问题是 Rayon 对我来说并行化的方式是将任意大整数范围拆分为thread_count-large 切片(例如,对于 4 个线程,0..2.5e11、2.5e11..5e11 等)。这不好,因为范围的末端是任意超大密码长度(10+,我不知道),而大多数密码(包括我倾向于尝试的固定“zzzzz”)要短得多,因此我得到的是第一个线程完成所有工作,其余线程只是浪费时间测试太长的密码和同步;结果实际上比单线程性能慢。

我怎么能将任意大范围(实际上不必有结束)分成范围,并让每个线程在块中找到?这将使不同线程中的工作人员真正有用。

0 投票
1 回答
269 浏览

rust - 使用迭代器实现人造丝`as_parallel_slice`

我自己有一个小问题:

操场

基本上我想使用人造丝的per_chunk功能,它要求我必须实现ParallelSlicetrait。我想知道应该在as_parallel_slice函数中输入什么,以便我可以得到输出(顺序无关紧要):

另一个愚蠢的问题是as_parallel_slice限制 Trait 返回一个切片,根据我在这种情况下的理解,我需要事先获得完整的数据吗?由于我正在处理 DNA 序列(可能是大量数据),我想我应该回退到使用横梁和迭代器,而不是通过人造丝进行基于切片的并行化,或者它们是做同样事情的更好方法吗?