小编kai*_*kai的帖子

为什么使用Repa比使用hmatrix更快的矩阵乘法?

有趣的是,Data.Array.Repa实际上比hmatrix更快,这是意外的,因为hmatrix是使用LAPACK实现的.这是因为Repa使用了未装箱的类型吗?

import Data.Array.Repa
import Data.Array.Repa.Algorithms.Matrix

main = do
    let
        a = fromListUnboxed (Z:.1000:.1000::DIM2) $ replicate (1000*1000) 1.0 :: Array U DIM2 Double
        b = fromListUnboxed (Z:.1000:.1000::DIM2) $ replicate (1000*1000) 1.0 :: Array U DIM2 Double
    m <- (a `mmultP` b)
    print $ m!(Z:.900:.900)
Run Code Online (Sandbox Code Playgroud)

运行时间为1核心:7.011s
运行时间,2核心:3.975s

import Numeric.LinearAlgebra
import Numeric.LinearAlgebra.LAPACK

main = do
    let
        a = (1000><1000) $ replicate (1000*1000) 1.0
        b = (1000><1000) $ replicate (1000*1000) 1.0
    print $ (a `multiplyR` b) @@> (900,900)
Run Code Online (Sandbox Code Playgroud)

运行时间:20.714秒

haskell matrix-multiplication

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

标签 统计

haskell ×1

matrix-multiplication ×1