相关疑难解决方法(0)

术语"矢量化"在不同的背景下是否意味着不同的东西?

基于我之前读过的内容,矢量化是一种称为SIMD的并行化形式.它允许处理器同时在阵列上执行相同的指令(例如添加).

然而,在阅读关于Julia和R的矢量化性能的矢量化和非矢量化代码之间的关系时,我感到困惑.该帖子声称,Julia和R开发的Julia代码(通过循环)比矢量化代码更快,因为:

这使一些不熟悉R内部的人感到困惑.因此值得注意的是如何提高R代码的速度.性能改进的过程非常简单:首先从devectorized R代码开始,然后用向量化R代码替换它,然后最终在devectorized C代码中实现这个向量化R代码.遗憾的是,最后一步对于许多R用户是不可见的,因此他们认为向量化本身是提高性能的机制.矢量化本身无助于使代码更快.使R中的矢量化有效的原因在于它提供了一种将计算移动到C中的机制,其中一个隐藏的devectorization层可以发挥其神奇作用.

它声称R将用R编写的矢量化代码转换为C中的devectorized代码.如果矢量化更快(作为一种并行化形式),为什么R会驱动代码,为什么这是一个加号?

r vectorization julia

6
推荐指数
2
解决办法
364
查看次数

我可以创建一个没有 for 循环的逻辑地图函数版本吗?

我有一个 R 函数来使用 for 循环计算逻辑图,如下所示。但是有没有办法改变它(例如向量化它)以便它不使用循环?

logistic_map <- function(x,   # starting condition
                         r,   # rate parameter
                         N) { # number of iterations
    results <- numeric(length = N + 1)
    results[1] <- x
    for (i in seq_len(N)) {
        results[i + 1] <- r * results[i] * (1 - results[i])
    }

    data.frame(i = c(0, seq_len(N)), 
               x = results)
}
Run Code Online (Sandbox Code Playgroud)

我已经研究了apply()函数族和 中的函数purrr,但我正在努力确定这是否可能。我很想得出这样的结论:这是不可能的,因为每一步都完全依赖于前一步,但完全有可能有一个我无法找到的优雅解决方案。

我可以在不使用 for 循环的情况下执行此操作吗?

for-loop r vectorization

1
推荐指数
1
解决办法
198
查看次数

标签 统计

r ×2

vectorization ×2

for-loop ×1

julia ×1