问题标签 [repa]

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 回答
316 浏览

haskell - repa 中的动态规划

两个相关的问题。

  • repa数组没有可变(ST monad)实现是否有原因?等效于Data.Vector.Mutable但具有形状。

  • 与此相关,应该如何在未装箱的表示中实现动态编程算法(从同一数组的其他元素计算的数组元素)?

0 投票
2 回答
361 浏览

haskell - 扩展 Repa 阵列形状

我正在编写一个生成图像的程序,我想将其带入 Repa 数组。我目前使用的类型:

来表示像素,我有一个(可能效率低下但功能强大)函数将 aColour转换为DIM1数组:

目前我程序中的图像只是一个[Colour]具有(Int, Int)代表尺寸的值。

我可以使用它来轻松构建一个Array V DIM2 Colour,但是有没有办法(使用colourToRepa或其他方式)将此数组扩展为一个Array U DIM3 Double

我可以使用列表,map但 Repa 的映射保留了数组的形状(我想从 aDIM2转到 a DIM3)。

0 投票
2 回答
680 浏览

performance - 如何在haskell中使用内联的相位控制?

文档

有时您想准确控制在 GHC 的管道中何时打开 INLINE pragma。

为什么我要这个?(除了当我也使用 RULES pragma 时,在这种情况下,我可能想推迟函数的内联,以便触发相关的规则。)什么样的函数只在简化过程的特定阶段内联更好?

0 投票
1 回答
195 浏览

haskell - Repa 是否指定其数据的内存布局?

我看不到 Repa 在其任何“清单表示”中为数据指定内存布局。这是在某处指定的吗?

当然我可以通过实验来了解,但我更想知道布局是官方的还是随时可能改变的。

编辑:澄清一下,我了解 aStorable Vector的布局方式,但我想知道Array U DIM2 Double(例如)是行优先、列优先还是某些疯狂的东西。

0 投票
2 回答
386 浏览

haskell - Creating images to use with repa-devil

I am using repa-devil to read and write images. Now I need to programmatically create images. However, the Image constructors (such as RGB) in Data.Array.Repa.IO.DevIL all require foreign memory buffer arrays. Do I have to go off and learn how to work with that foreign pointer stuff (which sounds scary)? Or can I convert an unboxed array to the type I need?

0 投票
1 回答
671 浏览

haskell - Repa和DPH之间的区别

我最近阅读了有关即将在和库中进行广义流融合的论文。这似乎是一个非常有趣的发展。我现在开始尝试(从 GHC 7.6 开始,并计划在它出现时升级到 7.8 SIMD 版本)。我还从库文档中看到它可以完成并行数组工作。与 GHC 7.4相比,它似乎是成熟的版本。现在这似乎已经成熟,我想知道从 GHC 7.6 开始,软件包之间的主要优缺点是什么。我搜索了 StackOverflow 和 google,但找不到 和 之间的比较。因此,这个问题。vectorDPHDPHRepaRepaDPHDPHRepaDPHRepaDPH

0 投票
1 回答
227 浏览

haskell - Repa: ZipWith'ing over Columns

我想知道是否有更快/更好的方法来编写以下 repa 函数

这是一些示例输出

0 投票
1 回答
254 浏览

haskell - 使用 repa-devil 读取的索引图像

我正在尝试检查图像中像素的 RGB 分量,但我不知道该怎么做。

我得到的错误是:

首先,我不明白这个信息。看起来编译器期望一个Array something DIM3 something,它得到一个Array F DIM3 Word8. 为什么这些类型不匹配?我已经阅读了Haskell wiki 上的Repa 教程,但我仍然不知道如何使它工作。

0 投票
1 回答
553 浏览

haskell - 并行 Repa 代码不会产生火花

我正在编写代码来做一个子集产品:它需要一个元素列表和一个指标变量列表(长度相同)。产品是在树中计算的,这对我们的应用程序至关重要。每个产品都很昂贵,所以我的目标是并行计算树的每个级别,按顺序评估连续的级别。因此没有任何嵌套的并行性正在发生。

我只有一个函数中的 repa 代码,靠近我的整体代码的顶层。请注意,subsetProd不是一元的。

步骤:

  1. 将列表分块成对(无并行性)
  2. 压缩分块列表(无并行性)
  3. 将乘积函数映射到此列表(使用 Repa 映射),创建延迟数组
  4. 调用 computeP 并行评估地图
  5. 将 Repa 结果转换回列表
  6. 进行递归调用(在输入大小一半的列表上)

编码:

整个程序是用

根据这些说明,在 GHC 7.6.2 x64 上。

我运行我的程序(子集)使用

8 秒后:

当我增加 -N 参数时,我的代码确实变慢了(-N1 为 7.628 秒,-N2 为 7.891 秒,-N4 为 8.659 秒)但我创建了 0 个火花,这似乎是为什么我没有得到任何并行性。此外,使用大量优化进行编译有助于运行时,但对并行性没有帮助。

Threadscope 确认没有对三个 HEC 进行任何认真的工作,但垃圾收集器似乎正在使用所有 4 个 HEC。

上面 -sstderr 块的线程范围

那么,为什么 Repa 不产生任何火花呢?我的产品树有 64 个叶子,所以即使 Repa 为每个内部节点制作了一个火花,也应该有大约 63 个火花。我觉得这可能与我使用封装并行性的 ST monad 有关,尽管我不太确定为什么这会导致问题。也许火花只能在 IO monad 中创建?

如果是这种情况,是否有人知道我如何执行这个树产品,其中每个级别都是并行完成的(不会导致嵌套并行,这对我的任务来说似乎是不必要的)。一般来说,也许有更好的方法来并行化树产品或更好地利用 Repa。

解释为什么运行时间随着我增加 -N 参数而增加的加分点,即使没有创建火花也是如此。

编辑 我将上面的代码示例更改为我的问题的编译示例。程序流程几乎与我的真实代码完美匹配:我随机选择一些输入,然后对它们进行子集乘积。我现在正在使用身份单子。我已经尝试对我的代码进行许多小的更改:是否内联,是否使用爆炸模式,使用两个 Repa 列表和一个 Repa zipWith 与按顺序压缩列表并使用 Repa 映射等的变化,等等,这些都没有帮助。

即使我在示例代码中遇到了这个问题,我的实际程序也要大得多

0 投票
1 回答
159 浏览

haskell - OS X 上 repa-devil 包的架构不匹配

我在使用 repa-devil 包时遇到问题,我是从 cabal 安装的cabal install repa-devil

例如,这是我的 ghci 成绩单的一部分:

在指定的 dylib 文件上运行 lipo:

任何帮助,将不胜感激。