summaryrefslogtreecommitdiff
path: root/testsuite/tests/dph/smvm
diff options
context:
space:
mode:
Diffstat (limited to 'testsuite/tests/dph/smvm')
-rw-r--r--testsuite/tests/dph/smvm/Main.hs65
-rw-r--r--testsuite/tests/dph/smvm/Makefile3
-rw-r--r--testsuite/tests/dph/smvm/SMVMVect.hs17
-rw-r--r--testsuite/tests/dph/smvm/dph-smvm.T30
-rw-r--r--testsuite/tests/dph/smvm/dph-smvm.stdout1
-rw-r--r--testsuite/tests/dph/smvm/result-i386.txt101
-rw-r--r--testsuite/tests/dph/smvm/result-sparc.txt101
-rw-r--r--testsuite/tests/dph/smvm/result-x86_64.txt101
-rw-r--r--testsuite/tests/dph/smvm/test-i386.datbin0 -> 22384 bytes
-rw-r--r--testsuite/tests/dph/smvm/test-sparc.datbin0 -> 11632 bytes
-rw-r--r--testsuite/tests/dph/smvm/test-x86_64.datbin0 -> 16416 bytes
11 files changed, 419 insertions, 0 deletions
diff --git a/testsuite/tests/dph/smvm/Main.hs b/testsuite/tests/dph/smvm/Main.hs
new file mode 100644
index 0000000000..e30938bc21
--- /dev/null
+++ b/testsuite/tests/dph/smvm/Main.hs
@@ -0,0 +1,65 @@
+{-# LANGUAGE TypeOperators #-}
+
+import SMVMVect (smvm)
+
+import Control.Exception (evaluate)
+import System.IO
+import System.Environment
+
+import qualified Data.Array.Parallel.Unlifted as U
+import Data.Array.Parallel.Prelude
+import Data.Array.Parallel.PArray as P
+
+
+-- Load sparse matrix from a file
+loadSM :: String
+ -> IO (PArray (PArray (Int, Double)), PArray Double)
+
+loadSM s
+ = do
+ (segd, m, v) <- loadSM' s
+ return $ (nestUSegdPA' segd (fromUArrPA_2' m), fromUArrPA' v)
+
+
+loadSM' :: String
+ -> IO ( U.Segd
+ , U.Array (Int, Double)
+ , U.Array Double)
+loadSM' fname =
+ do
+ h <- openBinaryFile fname ReadMode
+ lengths <- U.hGet h
+ indices <- U.hGet h
+ values <- U.hGet h
+ dv <- U.hGet h
+ let segd = U.lengthsToSegd lengths
+ m = U.zip indices values
+ evaluate lengths
+ evaluate indices
+ evaluate values
+ evaluate dv
+ return (segd, m, dv)
+
+main
+ = do [inFile, outFile] <- getArgs
+ (m, v) <- loadSM inFile
+ let result = smvm m v
+
+ -- ignore wibbles in low-order bits
+ let output
+ = (unlines
+ $ map (take 12)
+ $ map show
+ $ P.toList result)
+ ++ ("SUM = "
+ ++ (take 12 $ show $ sum $ P.toList result)
+ ++ "\n")
+
+ -- check our result against the provided outFile
+ outputCheck <- readFile outFile
+ print $ output == outputCheck
+
+
+
+
+
diff --git a/testsuite/tests/dph/smvm/Makefile b/testsuite/tests/dph/smvm/Makefile
new file mode 100644
index 0000000000..9101fbd40a
--- /dev/null
+++ b/testsuite/tests/dph/smvm/Makefile
@@ -0,0 +1,3 @@
+TOP=../../..
+include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/test.mk
diff --git a/testsuite/tests/dph/smvm/SMVMVect.hs b/testsuite/tests/dph/smvm/SMVMVect.hs
new file mode 100644
index 0000000000..93f3775741
--- /dev/null
+++ b/testsuite/tests/dph/smvm/SMVMVect.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE ParallelArrays #-}
+{-# OPTIONS -fvectorise #-}
+module SMVMVect (smvm) where
+
+import Data.Array.Parallel
+import Data.Array.Parallel.Prelude.Double as D
+import Data.Array.Parallel.Prelude.Int as I
+
+import qualified Prelude as P
+
+smvm :: PArray (PArray (Int, Double)) -> PArray Double -> PArray Double
+{-# NOINLINE smvm #-}
+smvm m v = toPArrayP (smvm' (fromNestedPArrayP m) (fromPArrayP v))
+
+smvm' :: [:[: (Int, Double) :]:] -> [:Double:] -> [:Double:]
+smvm' m v = [: D.sumP [: x D.* (v !: i) | (i,x) <- row :] | row <- m :]
+
diff --git a/testsuite/tests/dph/smvm/dph-smvm.T b/testsuite/tests/dph/smvm/dph-smvm.T
new file mode 100644
index 0000000000..d0a940a7c1
--- /dev/null
+++ b/testsuite/tests/dph/smvm/dph-smvm.T
@@ -0,0 +1,30 @@
+
+
+testFile = 'nothing'
+if config.platform.startswith('i386-'):
+ testFile = 'test-i386.dat'
+ outFile = 'result-i386.txt'
+
+elif config.platform.startswith('x86_64-'):
+ testFile = 'test-x86_64.dat'
+ outFile = 'result-x86_64.txt'
+
+elif config.platform.startswith('sparc-'):
+ testFile = 'test-sparc.dat'
+ outFile = 'result-sparc.txt'
+
+
+if testFile != 'nothing':
+ test ('dph-smvm'
+ , [ alone
+ , skip_if_fast
+ , reqlib('dph-par')
+ , reqlib('dph-prim-par')
+ , only_ways(['normal', 'threaded1', 'threaded2'])
+ , extra_run_opts(testFile + " " + outFile)
+ ]
+ , multimod_compile_and_run
+ , [ 'Main'
+ , '-Odph -fdph-par'])
+
+
diff --git a/testsuite/tests/dph/smvm/dph-smvm.stdout b/testsuite/tests/dph/smvm/dph-smvm.stdout
new file mode 100644
index 0000000000..0ca95142bb
--- /dev/null
+++ b/testsuite/tests/dph/smvm/dph-smvm.stdout
@@ -0,0 +1 @@
+True
diff --git a/testsuite/tests/dph/smvm/result-i386.txt b/testsuite/tests/dph/smvm/result-i386.txt
new file mode 100644
index 0000000000..bf279482ef
--- /dev/null
+++ b/testsuite/tests/dph/smvm/result-i386.txt
@@ -0,0 +1,101 @@
+70.911036010
+6.2813390683
+22.790766463
+138.15513262
+52.633427554
+23.459671609
+39.794269586
+37.387466366
+16.666309389
+86.252836326
+2.0045195528
+89.578046705
+15.195705417
+14.397637033
+9.9571970137
+12.966919776
+314.12848526
+106.92515769
+53.308659874
+187.71842503
+19.814258245
+3.5465802997
+26.462654791
+39.989634289
+27.636953710
+14.238025227
+43.040256543
+2.1571625382
+67.541648911
+24.912387408
+7.6904324146
+2.9650091269
+48.668083695
+56.313556473
+285.31615184
+25.595785904
+49.488178849
+25.310153120
+10.706428715
+80.585871589
+225.85945599
+27.813502732
+36.745192736
+157.41617010
+51.501091484
+30.457678049
+254.13030691
+17.469473192
+60.702335620
+52.376229564
+26.517446882
+46.939308590
+19.961999016
+226.11502829
+69.361878263
+206.34127990
+59.002071706
+23.815778535
+101.90955813
+0.3802732664
+41.728371059
+12.021386376
+20.282213202
+17.500045961
+19.148201048
+73.983800195
+7.6944408324
+20.993610043
+58.350721826
+67.038534218
+31.260033960
+14.283638817
+140.68179300
+31.766861701
+46.639106640
+5.2416016510
+175.49192085
+6.1624941117
+3.0550277985
+51.818892673
+7.8677940322
+22.311195092
+258.22325771
+47.475395836
+104.78223912
+38.825154663
+1.6611687222
+63.278567845
+139.86840253
+72.273773546
+71.487712807
+46.823777361
+125.50127870
+3.7203037750
+48.211248191
+79.659040149
+59.672472372
+73.220258924
+63.910310588
+23.405170831
+SUM = 6054.6294998
diff --git a/testsuite/tests/dph/smvm/result-sparc.txt b/testsuite/tests/dph/smvm/result-sparc.txt
new file mode 100644
index 0000000000..8c85795cbc
--- /dev/null
+++ b/testsuite/tests/dph/smvm/result-sparc.txt
@@ -0,0 +1,101 @@
+31.171134675
+136.96399669
+99.558688941
+2.3944559306
+132.07457337
+64.316928783
+17.141482371
+363.11345177
+12.350699032
+62.403552077
+25.836846192
+488.62415222
+90.786181827
+2650.5823673
+28.153073045
+29.698154931
+280.42051630
+264.68315963
+0.0
+17.241401450
+103.44167214
+120.25222269
+0.6481556022
+3.8143291874
+57.942419415
+0.9485226158
+11.722857133
+80.685346313
+497.97232376
+7.3021493591
+0.0
+4.9013220836
+61.582851534
+104.83102162
+12.196177619
+16.799924219
+8.8828491057
+20.672947720
+0.0
+8.9693097972
+66.272730332
+145.39838263
+2.6011327691
+80.289657428
+17.075494290
+0.5897431148
+26.250003553
+114.75531349
+57.010466242
+38.222004332
+5.6130133753
+120.90679901
+106.19820538
+0.0
+22.471060597
+50.616335208
+0.7352665245
+13.632854738
+72.201368578
+54.552907983
+3.2165935380
+31.048444965
+3.3117670262
+224.93467543
+110.02973746
+2.0467456318
+0.0
+7.2930317411
+8.6809940997
+41.756667327
+118.07161086
+358.47370477
+8.1013874742
+9.1189573118
+35.367265915
+10.245691446
+25.785856741
+55.679020534
+83.594437531
+34.102347192
+0.2950061972
+16.641363479
+0.0
+29.534024840
+0.0
+26.338163918
+149.17642877
+0.1698288578
+24.176530881
+57.626923103
+33.976034955
+15.977447399
+0.0
+893.79869661
+117.52170252
+60.450794548
+0.5763239875
+4.9690229931
+14.014097678
+275.53547442
+SUM = 9808.1107603
diff --git a/testsuite/tests/dph/smvm/result-x86_64.txt b/testsuite/tests/dph/smvm/result-x86_64.txt
new file mode 100644
index 0000000000..ebad60a2b0
--- /dev/null
+++ b/testsuite/tests/dph/smvm/result-x86_64.txt
@@ -0,0 +1,101 @@
+2.3160849869
+26.283679649
+76.729994661
+405.68040155
+55.723673494
+33.938026665
+26.505926115
+52.261424813
+33.397325696
+1.1328178441
+5.3697979892
+9.4419428065
+28.678826876
+61.019008268
+4.5301894841
+43.464645691
+0.0
+34.335714653
+20.798359422
+16.561984995
+17.581964787
+23.948149350
+19.120544306
+30.215710069
+0.7009196726
+51.297030554
+4.4591823094
+209.96809687
+47.289681980
+32.498492600
+13.196267290
+0.9989265108
+1.0341069617
+38.917182375
+7.9955088012
+10.355804741
+20.095073245
+36.647037472
+18.786308469
+14.370553796
+6.3265152208
+28.117268967
+65.265404040
+898.53639610
+2.1015959321
+188.65890412
+31.810545943
+14.182075117
+16.239269064
+27.309800346
+126.26472539
+32.948733352
+20.290181336
+0.0
+40.083403468
+81.626718007
+141.59574874
+8.5797914307
+37.726704414
+0.5807127190
+6.3771256902
+6.3486182511
+5.8655193980
+8.1395223932
+32.695645766
+16.964781766
+5.2863815777
+31.967858939
+21.161490986
+61.257464383
+4.1240057418
+18.099623432
+2.1851562467
+3.7220913984
+55.452918211
+10.289474473
+46.276301220
+23.201718136
+7.6338488432
+45.868472148
+12.976885901
+18.483762115
+143.50458515
+24.999794955
+12.121764180
+6.7194800847
+1.8693415211
+23.848562170
+1092.0362340
+67.588787350
+248.07913042
+0.0
+38.838570262
+13.800391661
+1277.9084108
+53.491216504
+14.325720303
+10.152650478
+17.439312837
+40.696348267
+SUM = 6837.6898296
diff --git a/testsuite/tests/dph/smvm/test-i386.dat b/testsuite/tests/dph/smvm/test-i386.dat
new file mode 100644
index 0000000000..4db8d62620
--- /dev/null
+++ b/testsuite/tests/dph/smvm/test-i386.dat
Binary files differ
diff --git a/testsuite/tests/dph/smvm/test-sparc.dat b/testsuite/tests/dph/smvm/test-sparc.dat
new file mode 100644
index 0000000000..73d2c201cd
--- /dev/null
+++ b/testsuite/tests/dph/smvm/test-sparc.dat
Binary files differ
diff --git a/testsuite/tests/dph/smvm/test-x86_64.dat b/testsuite/tests/dph/smvm/test-x86_64.dat
new file mode 100644
index 0000000000..08a91f5ab1
--- /dev/null
+++ b/testsuite/tests/dph/smvm/test-x86_64.dat
Binary files differ