Commit 00b529b7 authored by Alp Mestanogullari's avatar Alp Mestanogullari

improve performance

parent 67a730e4
......@@ -16,8 +16,6 @@ import Prelude (String)
import Protolude
import qualified Data.IntMap as Dict
import qualified Data.List as List
import qualified Eigen.Matrix as Matrix
import qualified Eigen.SparseMatrix as SMatrix
import qualified Prelude as Prelude
import qualified Data.Graph.Inductive.PatriciaTree as DGIP
......@@ -31,9 +29,11 @@ setupEnv _ = getUnlabGraph Random
main :: IO ()
main = do
fp <- getArgs
withArgs [] $
defaultMain
[ env (snd <$> setupEnv fp) $ \ ~g ->
bench "bench" (nf (\ x -> withG x (parts . clusteringOptim 3 Conf)) g)
]
setupEnv fp >>= \(_, ~g) ->
evaluate $ withG g (clusteringOptim 3 Conf)
return ()
-- withArgs [] $
-- defaultMain
-- [ env (snd <$> setupEnv fp) $ \ ~g ->
-- bench "bench" (nf (\ x -> withG x (parts . clusteringOptim 3 Conf)) g)
-- ]
cabal-version: 1.12
-- This file has been generated from package.yaml by hpack version 0.33.0.
-- This file has been generated from package.yaml by hpack version 0.34.4.
--
-- see: https://github.com/sol/hpack
--
......@@ -9,8 +9,8 @@ cabal-version: 1.12
name: gargantext-graph
version: 0.1.0.0
description: Please see the README on GitHub at <https://github.com/githubuser/gargantext-graph#readme>
homepage: https://github.com/https://gitlab.iscpif.fr/gargantext/gargantext-graph#readme
bug-reports: https://github.com/https://gitlab.iscpif.fr/gargantext/gargantext-graph/issues
homepage: https://github.com/gargantext/gargantext-graph#readme
bug-reports: https://github.com/gargantext/gargantext-graph/issues
author: Alexandre Delanoë
maintainer: alexandre+dev@delanoe.org
copyright: 2021 CNRS / Alexandre Delanoë
......@@ -23,12 +23,12 @@ extra-source-files:
source-repository head
type: git
location: https://github.com/https://gitlab.iscpif.fr/gargantext/gargantext-graph
location: https://github.com/gargantext/gargantext-graph
library
exposed-modules:
Data.Array.Accelerate.Utils
Data.Eigen.Coeff
-- Data.Eigen.Coeff
Graph.BAC.Clustering
Graph.BAC.Proxemy
Graph.BAC.ProxemyOptim
......@@ -45,7 +45,10 @@ library
Paths_gargantext_graph
hs-source-dirs:
src
default-extensions: DataKinds FlexibleInstances OverloadedStrings
default-extensions:
DataKinds
FlexibleInstances
OverloadedStrings
build-depends:
accelerate
, accelerate-arithmetic
......@@ -55,14 +58,16 @@ library
, cassava
, cereal
, containers
, eigen
-- , eigen
, fgl
, haskell-igraph >=0.6.0
, hmatrix
, lens
, pretty-simple
, protolude
, reflection
, singletons
, singletons == 2.7
, sparse-linear
, string-conversions
, text
, vector
......@@ -86,7 +91,7 @@ executable gargantext-graph-exe
, cereal
, containers
, criterion
, eigen
-- , eigen
, fgl
, gargantext-graph
, haskell-igraph >=0.6.0
......@@ -107,7 +112,10 @@ test-suite gargantext-graph-test
Paths_gargantext_graph
hs-source-dirs:
test
default-extensions: DataKinds FlexibleInstances OverloadedStrings
default-extensions:
DataKinds
FlexibleInstances
OverloadedStrings
ghc-options: -threaded -rtsopts -with-rtsopts=-N
build-depends:
QuickCheck
......@@ -119,7 +127,7 @@ test-suite gargantext-graph-test
, cassava
, cereal
, containers
, eigen
-- , eigen
, fgl
, gargantext-graph
, haskell-igraph >=0.6.0
......
name: gargantext-graph
version: 0.1.0.0
github: "https://gitlab.iscpif.fr/gargantext/gargantext-graph"
github: gargantext/gargantext-graph
license: AGPL
author: "Alexandre Delanoë"
maintainer: "alexandre+dev@delanoe.org"
......
This diff is collapsed.
......@@ -22,7 +22,6 @@ import Data.Vector hiding (map, uniq)
import Prelude (read)
import Protolude
import Graph.Types
import qualified Eigen.SparseMatrix as SMatrix
import qualified Data.Map as Map
import qualified Data.ByteString.Lazy as BL
import qualified Data.Graph.Inductive as DGI
......
{-# LANGUAGE TypeApplications #-}
{-| Module : Graph.Tools
Description :
Copyright : (c) CNRS, Alexandre Delanoë
......@@ -25,7 +26,7 @@ import Graph.Types
import Graph.Tools.Random
import Graph.Tools.CSV
import Graph.FGL
import qualified Eigen.SparseMatrix as SMatrix
import qualified Data.Matrix.Sparse.Static as SMatrix
import qualified Data.IntMap as Dict
import qualified Data.Map as Map
import qualified Data.ByteString.Lazy as BL
......@@ -44,7 +45,7 @@ data GraphData = LightGraph { lightGraph :: Graph () () }
getGraph :: GetGraph -> IO GraphData
getGraph Random = randomAdjacency
getGraph Random = randomAdjacency @100
>>= \m -> pure $ LightGraph
$ mkGraphUfromEdges
$ List.map (\(x,y,_) -> (x,y))
......
......@@ -6,7 +6,6 @@ Maintainer : alexandre+dev@delanoe.org
Stability : experimental
Portability : POSIX
-}
{-# LANGUAGE ConstraintKinds #-}
......@@ -22,18 +21,21 @@ import Data.Vector hiding (map, uniq)
import Prelude (read)
import Protolude
import Graph.Types
import qualified Eigen.SparseMatrix as SMatrix
import qualified Eigen.Matrix as DMatrix
-- import qualified Eigen.SparseMatrix as SMatrix
-- import qualified Eigen.Matrix as DMatrix
import qualified Data.Graph.Inductive.PatriciaTree as DGIP
import qualified Data.Set as Set
import qualified Data.Vector as Vector
import qualified Data.Matrix.Sparse.Static as SMatrix
import qualified Numeric.LinearAlgebra.Static as DMatrix
-- Random Matrix
-- | Random Matrix && Graph
-- TODO random matrix of any size for the tests
randomMatrix :: IO (MatrixD 100)
randomMatrix = DMatrix.random
randomMatrix :: KnownNat n => IO (MatrixD n)
randomMatrix = DMatrix.rand
{-
matrix2graph :: forall n
......@@ -44,10 +46,12 @@ matrix2graph m = withG (mkGraphUfromEdges $ map (\(x,y,_) -> (x,y)) $ SMatrix.to
identity
-}
randomAdjacency :: IO (MatrixS 100)
randomAdjacency :: KnownNat n => IO (MatrixS n)
randomAdjacency = do
m1 <- randomMatrix
m2 <- randomMatrix
pure $ SMatrix.fromMatrix
$ DMatrix.imap (\i j v -> if i < j && v > 0.9 then 1 else 0)
pure $ SMatrix.sparsify (\(i, j) v -> if i < j && v > 0.9 then Just 1 else Nothing)
$ DMatrix.mul m1 m2
-- pure $ SMatrix.fromMatrix
-- $ DMatrix.imapL (\(i, j) v -> if i < j && v > 0.9 then 1 else 0)
-- $ DMatrix.mul m1 m2
......@@ -15,8 +15,12 @@ module Graph.Types where
import qualified Data.Graph.Inductive.PatriciaTree as DGIP
import Data.IntMap (IntMap)
import qualified Eigen.Matrix as DenseMatrix
import Eigen.SparseMatrix (SparseMatrix)
-- import qualified Eigen.Matrix as DenseMatrix
-- import Eigen.SparseMatrix (SparseMatrix)
import qualified Data.Matrix.Sparse.Static as Sparse
import qualified Data.Vector.Unboxed as VU
import qualified Numeric.LinearAlgebra.Static as Dense
-- | Main Types use in this libray
......@@ -26,8 +30,5 @@ type Dict = IntMap
type Graph a b = DGIP.Gr a b
-- | Type for Matrix computation optimizations (with Eigen)
type MatrixD n = DenseMatrix.Matrix n n Double
type MatrixS n = SparseMatrix n n Double
type MatrixD n = Dense.L n n
type MatrixS n = Sparse.Matrix n n Double
......@@ -44,8 +44,16 @@ extra-deps:
commit: f5c0e0071ec7b6532f9a9cd3eb33d14f340fbcc9
- git: https://gitlab.iscpif.fr/anoe/accelerate-utility.git
commit: 83ada76e78ac10d9559af8ed6bd4064ec81308e4
- git: https://github.com/alpmestan/sparse-linear.git
commit: 785f12c99615907b207f5499dd3b70a486a0249b
subdirs:
- sparse-linear
- git: https://github.com/alpmestan/hmatrix.git
commit: 39155c60c97ba8cd5c8ab9c202b428fec42faa3c
subdirs:
- packages/base
- accelerate-arithmetic-1.0.0.1@sha256:555639232aa5cad411e89247b27871d09352b987a754230a288c690b6de6d888,2096
- eigen-3.3.7.0@sha256:7c24a86426b238e02ba0ac2179cc44997518b443a13828ed7a791fe49a6dffa5,82060
# - eigen-3.3.7.0@sha256:7c24a86426b238e02ba0ac2179cc44997518b443a13828ed7a791fe49a6dffa5,82060
# Override default flag values for local packages and extra-deps
......@@ -64,7 +72,6 @@ extra-deps:
# Override the architecture used by stack, especially useful on Windows
# arch: i386
# arch: x86_64
#
# Extra directories used by stack for building
# extra-include-dirs: [/path/to/dir]
# extra-lib-dirs: [/path/to/dir]
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment