module Main (
main
) where
import Control.Monad.Trans.Except
import qualified Multilinear.Generic.MultiCore as MultiCore
import qualified Multilinear.Generic.Sequential as Sequential
import qualified Multilinear.Matrix as Matrix
import qualified Multilinear.Vector as Vector
import System.Directory
import Test.MultiCore
import Test.Sequential
matrixSeq :: Sequential.Tensor Double
matrixSeq = Matrix.fromIndices "ij" 50 50 $ \i j -> cos (fromIntegral i) + sin (fromIntegral j)
vectorSeq :: Sequential.Tensor Double
vectorSeq = Vector.fromIndices "i" 50 $ \i -> cos (fromIntegral i)
formSeq :: Sequential.Tensor Double
formSeq = Vector.fromIndices "i" 50 $ \i -> cos (fromIntegral i)
scalarSeq :: Sequential.Tensor Double
scalarSeq = Sequential.Scalar 5.0
matrixMC :: MultiCore.Tensor Double
matrixMC = Matrix.fromIndices "ij" 50 50 $ \i j -> cos (fromIntegral i) + sin (fromIntegral j)
vectorMC :: MultiCore.Tensor Double
vectorMC = Vector.fromIndices "i" 50 $ \i -> cos (fromIntegral i)
formMC :: MultiCore.Tensor Double
formMC = Vector.fromIndices "i" 50 $ \i -> cos (fromIntegral i)
scalarMC :: MultiCore.Tensor Double
scalarMC = MultiCore.Scalar 5.0
-- ENTRY POINT
main :: IO ()
main = do
-- TEST MULTICORE
putStrLn "Testing MultiCore..."
-- Scalar CSV read/write
Test.MultiCore.writeScalarCSV scalarMC "test/s1"
runExceptT $ Test.MultiCore.readScalarCSV scalarMC "test/s1"
-- Vector CSV read/write
Test.MultiCore.writeVectorCSV vectorMC "test/v1"
runExceptT $ Test.MultiCore.readVectorCSV vectorMC "test/v1"
-- Form CSV read/write
Test.MultiCore.writeFormCSV formMC "test/f1"
runExceptT $ Test.MultiCore.readFormCSV formMC "test/f1"
-- Matrix CSV read/write
Test.MultiCore.writeMatrixCSV matrixMC "test/m1"
runExceptT $ Test.MultiCore.readMatrixCSV matrixMC "test/m1"
-- Remove test file
removeFile "test/s1.csv"
removeFile "test/v1.csv"
removeFile "test/f1.csv"
removeFile "test/m1.csv"
-- TEST SEQUENTIAL
putStrLn "Testing Sequential..."
-- Scalar CSV read/write
Test.Sequential.writeScalarCSV scalarSeq "test/s1"
runExceptT $ Test.Sequential.readScalarCSV scalarSeq "test/s1"
-- Vector CSV read/write
Test.Sequential.writeVectorCSV vectorSeq "test/v1"
runExceptT $ Test.Sequential.readVectorCSV vectorSeq "test/v1"
-- Form CSV read/write
Test.Sequential.writeFormCSV formSeq "test/f1"
runExceptT $ Test.Sequential.readFormCSV formSeq "test/f1"
-- Matrix CSV read/write
Test.Sequential.writeMatrixCSV matrixSeq "test/m1"
runExceptT $ Test.Sequential.readMatrixCSV matrixSeq "test/m1"
-- Remove test file
removeFile "test/s1.csv"
removeFile "test/v1.csv"
removeFile "test/f1.csv"
removeFile "test/m1.csv"
return ()