问题标签 [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.
haskell - repa 中的动态规划
两个相关的问题。
repa数组没有可变(ST monad)实现是否有原因?等效于Data.Vector.Mutable但具有形状。
与此相关,应该如何在未装箱的表示中实现动态编程算法(从同一数组的其他元素计算的数组元素)?
haskell - 扩展 Repa 阵列形状
我正在编写一个生成图像的程序,我想将其带入 Repa 数组。我目前使用的类型:
来表示像素,我有一个(可能效率低下但功能强大)函数将 aColour
转换为DIM1
数组:
目前我程序中的图像只是一个[Colour]
具有(Int, Int)
代表尺寸的值。
我可以使用它来轻松构建一个Array V DIM2 Colour
,但是有没有办法(使用colourToRepa
或其他方式)将此数组扩展为一个Array U DIM3 Double
?
我可以使用列表,map
但 Repa 的映射保留了数组的形状(我想从 aDIM2
转到 a DIM3
)。
performance - 如何在haskell中使用内联的相位控制?
文档说,
有时您想准确控制在 GHC 的管道中何时打开 INLINE pragma。
为什么我要这个?(除了当我也使用 RULES pragma 时,在这种情况下,我可能想推迟函数的内联,以便触发相关的规则。)什么样的函数只在简化过程的特定阶段内联更好?
haskell - Repa 是否指定其数据的内存布局?
我看不到 Repa 在其任何“清单表示”中为数据指定内存布局。这是在某处指定的吗?
当然我可以通过实验来了解,但我更想知道布局是官方的还是随时可能改变的。
编辑:澄清一下,我了解 aStorable
Vector
的布局方式,但我想知道Array U DIM2 Double
(例如)是行优先、列优先还是某些疯狂的东西。
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?
haskell - Repa和DPH之间的区别
我最近阅读了有关即将在和库中进行广义流融合的论文。这似乎是一个非常有趣的发展。我现在开始尝试(从 GHC 7.6 开始,并计划在它出现时升级到 7.8 SIMD 版本)。我还从库文档中看到它可以完成并行数组工作。与 GHC 7.4相比,它似乎是成熟的版本。现在这似乎已经成熟,我想知道从 GHC 7.6 开始,软件包之间的主要优缺点是什么。我搜索了 StackOverflow 和 google,但找不到 和 之间的比较。因此,这个问题。vector
DPH
DPH
Repa
Repa
DPH
DPH
Repa
DPH
Repa
DPH
haskell - Repa: ZipWith'ing over Columns
我想知道是否有更快/更好的方法来编写以下 repa 函数
这是一些示例输出
haskell - 使用 repa-devil 读取的索引图像
我正在尝试检查图像中像素的 RGB 分量,但我不知道该怎么做。
我得到的错误是:
首先,我不明白这个信息。看起来编译器期望一个Array something DIM3 something
,它得到一个Array F DIM3 Word8
. 为什么这些类型不匹配?我已经阅读了Haskell wiki 上的Repa 教程,但我仍然不知道如何使它工作。
haskell - 并行 Repa 代码不会产生火花
我正在编写代码来做一个子集产品:它需要一个元素列表和一个指标变量列表(长度相同)。产品是在树中计算的,这对我们的应用程序至关重要。每个产品都很昂贵,所以我的目标是并行计算树的每个级别,按顺序评估连续的级别。因此没有任何嵌套的并行性正在发生。
我只有一个函数中的 repa 代码,靠近我的整体代码的顶层。请注意,subsetProd不是一元的。
步骤:
- 将列表分块成对(无并行性)
- 压缩分块列表(无并行性)
- 将乘积函数映射到此列表(使用 Repa 映射),创建延迟数组
- 调用 computeP 并行评估地图
- 将 Repa 结果转换回列表
- 进行递归调用(在输入大小一半的列表上)
编码:
整个程序是用
根据这些说明,在 GHC 7.6.2 x64 上。
我运行我的程序(子集)使用
8 秒后:
当我增加 -N 参数时,我的代码确实变慢了(-N1 为 7.628 秒,-N2 为 7.891 秒,-N4 为 8.659 秒)但我创建了 0 个火花,这似乎是为什么我没有得到任何并行性。此外,使用大量优化进行编译有助于运行时,但对并行性没有帮助。
Threadscope 确认没有对三个 HEC 进行任何认真的工作,但垃圾收集器似乎正在使用所有 4 个 HEC。
那么,为什么 Repa 不产生任何火花呢?我的产品树有 64 个叶子,所以即使 Repa 为每个内部节点制作了一个火花,也应该有大约 63 个火花。我觉得这可能与我使用封装并行性的 ST monad 有关,尽管我不太确定为什么这会导致问题。也许火花只能在 IO monad 中创建?
如果是这种情况,是否有人知道我如何执行这个树产品,其中每个级别都是并行完成的(不会导致嵌套并行,这对我的任务来说似乎是不必要的)。一般来说,也许有更好的方法来并行化树产品或更好地利用 Repa。
解释为什么运行时间随着我增加 -N 参数而增加的加分点,即使没有创建火花也是如此。
编辑 我将上面的代码示例更改为我的问题的编译示例。程序流程几乎与我的真实代码完美匹配:我随机选择一些输入,然后对它们进行子集乘积。我现在正在使用身份单子。我已经尝试对我的代码进行许多小的更改:是否内联,是否使用爆炸模式,使用两个 Repa 列表和一个 Repa zipWith 与按顺序压缩列表并使用 Repa 映射等的变化,等等,这些都没有帮助。
即使我在示例代码中遇到了这个问题,我的实际程序也要大得多。
haskell - OS X 上 repa-devil 包的架构不匹配
我在使用 repa-devil 包时遇到问题,我是从 cabal 安装的cabal install repa-devil
。
例如,这是我的 ghci 成绩单的一部分:
在指定的 dylib 文件上运行 lipo:
和
任何帮助,将不胜感激。