问题标签 [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.
parallel-processing - 不能使用人造丝的`.par_iter()`
我有一个实现的结构,Iterator
它可以作为迭代器正常工作。它产生值,并使用.map()
,我从本地 HTTP 服务器下载每个项目并保存结果。我现在想并行化这个操作,Rayon看起来很友好。
尝试按照文档中的示例进行操作时出现编译器错误。
这是按顺序工作的代码。generate_values
返回实现的结构Iterator
。dl
下载值并保存它们(即它有副作用)。由于迭代器在 Rust 中是惰性的,所以我.count()
在末尾放了 a 以便它实际运行它。
在人造丝示例之后,我尝试了这个:
并得到以下错误:
有趣的是,当我使用.iter()
许多 Rust 东西使用的 时,我得到了一个类似的错误:
既然我实施了Iterator
,我应该.iter()
免费获得吧?这是为什么.par_iter()
不起作用?
Rust 1.6 和 Rayon 0.3.1
rust - 找不到“人造丝”的箱子
我正在尝试使用并行化查找 BST 的直径:
当我编译(rustc code.rs
)时,它显示
我的 Rust 版本是rustc 1.8.0 (db2939409 2016-04-11)
generics - 如何将人造丝的 .par_iter() 与泛型向量一起使用?
这是一个人为的例子,但我相信如果我能做到这一点,我可以将它应用到我的具体案例中。
此错误在编译时出现“方法par_iter
存在但不满足以下特征界限:&std::vec::Vec<T> : rayon::par_iter::IntoParallelIterator
”。如果我使用iter
代替par_iter
或切换到使用f32
或f64
代替泛型,则代码可以正常工作。
我该怎么做才能par_iter
在泛型向量上使用?该IntoParallelIterator
特征是否打算由最终用户实现?我该怎么做呢?
multithreading - Rayon 中的每线程初始化
我正在尝试使用 Rayon's 优化我的功能par_iter()
。
单线程版本类似于:
每个Store
实例只能由一个线程使用,但Store
可以同时使用多个实例,所以我可以通过clone
-ing使这个多线程store
:
store
但是,这会在每次迭代时克隆,这太慢了。我想每个线程使用一个商店实例。
人造丝可以吗?还是我应该求助于手动线程和工作队列?
rust - 为了在这里使用 Rayon,如何满足 Iterator trait bound?
我正在尝试通过使用 Rayon'spar_iter
而不是并行化 Ramer–Douglas-Peucker 线简化算法iter
:
我已经impl
dSend
和Sync
for Point<T>
,但是当我切换到 时par_iter
,我收到以下错误:
我不明白它在问什么。我在元组上操作的问题是什么?
rust - 如何将 Rayon 与现有的迭代器一起使用?
HashSet
在进行一些过滤后,我将正则表达式变成了。我正在尝试将它与 Rayon 一起使用,但我无法弄清楚如何在不先将 Rayon 转换为向量的情况下使 Rayon 与现有迭代器一起使用。这可能吗?
rust - 找不到名为“par_iter”的方法类型
我正在尝试使用 rayon crate 并行化以下 iter 调用
https://github.com/vishpat/stl/blob/master/src/lib.rs#L315
并用 par_iter 替换 iter 调用,但得到以下编译错误
我错过了什么?
multithreading - 如何使用 Rayon 将一个大范围拆分为多个范围,并让每个线程在一个块中找到?
我正在制作一个通过并行化强制密码的程序。目前破解密码已经以纯文本形式提供,我只是试图暴力破解它。
我有一个名为的函数generate_char_array()
,它基于整数种子,转换基数并返回一个u8
字符片段来尝试检查。这首先通过字母表查找 1 个字符串,然后是 2 个,依此类推。
使用找到的字符串索引(或种子整数),我可以生成找到的字符串。
问题是 Rayon 对我来说并行化的方式是将任意大整数范围拆分为thread_count
-large 切片(例如,对于 4 个线程,0..2.5e11、2.5e11..5e11 等)。这不好,因为范围的末端是任意超大密码长度(10+,我不知道),而大多数密码(包括我倾向于尝试的固定“zzzzz”)要短得多,因此我得到的是第一个线程完成所有工作,其余线程只是浪费时间测试太长的密码和同步;结果实际上比单线程性能慢。
我怎么能将任意大范围(实际上不必有结束)分成范围块,并让每个线程在块中找到?这将使不同线程中的工作人员真正有用。
rust - 使用迭代器实现人造丝`as_parallel_slice`
我自己有一个小问题:
基本上我想使用人造丝的per_chunk
功能,它要求我必须实现ParallelSlice
trait。我想知道应该在as_parallel_slice
函数中输入什么,以便我可以得到输出(顺序无关紧要):
另一个愚蠢的问题是as_parallel_slice
限制 Trait 返回一个切片,根据我在这种情况下的理解,我需要事先获得完整的数据吗?由于我正在处理 DNA 序列(可能是大量数据),我想我应该回退到使用横梁和迭代器,而不是通过人造丝进行基于切片的并行化,或者它们是做同样事情的更好方法吗?