问题标签 [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 回答
59 浏览

haskell - GHC 7.10.2 Data.Vector.Unboxed 与 REPA 3.4.0.1 冲突

我已经安装了该Vector软件包并REPA使用 Cabal for GHC 7.10.2。运行这个程序:

我收到以下错误:

运行ghc-pkg list | grep vector时,我注意到了 2 个版本的矢量包:

我运行ghc-pkg hide vector-0.10.12.3并尝试重新编译,但错误仍然存​​在。似乎vector-0.10.12.3已经安装了(它是 Base 的一部分吗?),但它没有暴露Data.Vector.Unboxed. 我该如何解决这个问题?

0 投票
1 回答
130 浏览

haskell - Repa 中的嵌套并行

以下代码使用repa-3.4.0.1产生(可怕的)“嵌套并行”错误:

确切的错误是:

我正在编译ghc Main -threaded和运行Main +RTS -N2. 我试过deepSeqArray在定义中使用fmapT,但没有帮助。由于测试是独立的(除了对随机性进行排序),因此在此示例中甚至不清楚嵌套并行性是如何实现的。

有趣的是,如果我更改main为 just quickCheck prop_fmap,它会成功完成 100 次测试。因此,测试框架(可能是 monad 排序的更普遍问题)似乎与QuickCheck.

关于我为什么会收到此错误以及如何在仍然进行并行计算的同时避免它的任何想法?

注意:使用Identity单子:ref1ref2

0 投票
1 回答
62 浏览

haskell - BoundFixed的Haskell Repa含义?

在 Repa 包中,有一个Boundary数据类型:

我理解BoundConst(数组外的单元格被视为单个值)的含义,并且我理解BoundClamp(数组外的单元格与最近的数组单元格的值相同)的含义。

是什么意思BoundFixed?描述为对边界区域使用固定值。什么是“边区”?这些都是边缘细胞吗?

0 投票
1 回答
161 浏览

haskell - 如何将 Repa 数组折叠成任意值?

Repa的所有归约函数都折叠回与数组内容相同的类型。例如:

我想将 repa 数组折叠成一个数据结构,我可以将其传递给 GUI 库进行渲染,即任意值,但我在库中找不到执行此操作的函数。这个函数是否存在或者我必须使用迭代单元格[... | x <- [0..w-1], y <- [0..h-1]]

0 投票
1 回答
92 浏览

haskell - 将加速的 A 数组表示转换为 repa 的 U 数组表示

我想将加速数组转换为 repa 数组,然后使用writeImageToBMPfrom repa-io 将数组写入 BMP 文件。忽略加速 io 中存在这样一个功能的事实,我只是将其用作问题的示例。拿:

需要包加速、加速 io、repa 和 repa-io 来编译此代码。

这不会编译,因为writeImageToBmprepa-io 中的类型是:

whereU表示 repa 中的清单数组。GHC 错误是:

的类型repaArr是:

这就是为什么 GHC 抱怨它是writeImageToBMP.

问题:如何将加速数组表示转换A为 repa 清单数组表示U,以便我可以调用writeImageToBMP它?

0 投票
1 回答
1524 浏览

haskell - 如何解决在类型声明(Repa)中使用运算符?

我在玩 Repa,下面的代码可以编译运行。

我相信(通过检查 ghci)x 具有我声明 t 具有的类型签名,但是如果我取消注释与 t 相关的所有内容,我会收到此错误:

解决在类型声明中使用类型运算符/构造函数的正确方法是什么?(我会谷歌更多,但无论如何也想问一下了解更多)

0 投票
1 回答
49 浏览

haskell - 为什么在这种情况下使用 Data.Array.Repa.Algorithms.Matrix.mmultP 会出现类型错误?

我相信这归结为一个愚蠢的类型错误,但我无法弄清楚。我有以下代码:

这将创建一个具有 10 行和 3 列的 2D 数组的 Repa 表示,我想将(使用 M.mmultP)与列长度相等的 1D 随机数数组(在 0,1 之间)取点积到二维数组的行号。我得到了类似于在 ghci 中工作的东西,但这可能会产生这个错误;

这是一个类型错误,但我似乎无法弄清楚。有人可以帮我吗?

0 投票
2 回答
402 浏览

arrays - 如何从一维数组创建二维未装箱数组?

RepafromListUnboxed允许从值列表创建一维数组。但是,如何在给定一维未装箱列表(长度相等)的情况下创建一个二维呢?

0 投票
1 回答
508 浏览

haskell - Haskell / repa - 有没有办法漂亮地打印矩阵?

在haskell中使用repa,有没有办法打印矩阵,所以它们的格式很好,矩阵行在不同的行上(大多数数值计算环境,如R或matlab的默认设置)?

我可以写一个,但它似乎已经存在。

这种类型的输出很难与之交互:

0 投票
2 回答
163 浏览

haskell - 使用 generate 将值散布到单独的向量中

我试图Vector通过使用从索引创建自定义数据类型(或元组)值的函数来生成 s 的元组。这是一种达到预期结果的方法:

除了我想在每个向量中进行一次迭代之外,几乎就像下面显示的那样,但要避免对函数进行多次评估f

就像一个注释,我知道Vector库支持融合,第一个例子已经很有效了。我需要一个generate概念的解决方案,其他库有非常相似的构造函数(fromFunction例如 Repa),我在Vector这里使用 s 只是为了演示一个问题。

也许某种f函数调用的记忆会起作用,但我想不出任何东西。

编辑:

使用 Repa 的问题的另一个演示:

与向量相同,融合节省了性能,但仍然需要一个中间arr元组数组,我试图避免这种情况。

编辑2:(3年后)

在上面的 Repa 示例中,它不会创建中间数组,因为fromFunction会创建延迟数组。相反,它会更糟,它会f为每个索引计算两次,一个用于第一个数组,第二次用于第二个数组。必须计算延迟数组以避免这种重复工作。