gpt4 book ai didi

parallel-processing - 是否可以将 Rayon 和 Faster 结合起来?

转载 作者:行者123 更新时间:2023-11-29 07:55:32 24 4
gpt4 key购买 nike

Rayon 看起来非常适合集合的算法并行化,而 Faster 非常适合在 x86 平台上对 Vec<f32> 等集合进行矢量化 (SIMD)。我试图将它们结合起来,但迭代器似乎彼此不喜欢。有没有办法将这两个库用于可以同时受益于矢量化和并行化的算法?就像 Faster 示例中的这个:

let lots_of_3s = (&[-123.456f32; 128][..]).iter()
.map(|v| {
9.0 * v.abs().sqrt().sqrt().recip().ceil().sqrt() - 4.0 - 2.0
})
.collect::<Vec<f32>>();

最佳答案

您可以只使用 Rayon 的 par_chunks 并使用 Faster 处理每个 block 。

let lots_of_3s = (&[-123.456f32; 1000000][..])
.par_chunks(128)
.flat_map(|chunk| {
chunk
.simd_iter(f32s(0.0))
.simd_map(|v| {
f32s(9.0) * v.abs().sqrt().rsqrt().ceil().sqrt() - f32s(4.0) - f32s(2.0)
})
.scalar_collect()
})
.collect::<Vec<f32>>();

关于parallel-processing - 是否可以将 Rayon 和 Faster 结合起来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51253203/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com