diff options
Diffstat (limited to 'testsuite/tests/dph/smvm')
-rw-r--r-- | testsuite/tests/dph/smvm/Main.hs | 65 | ||||
-rw-r--r-- | testsuite/tests/dph/smvm/Makefile | 3 | ||||
-rw-r--r-- | testsuite/tests/dph/smvm/SMVMVect.hs | 17 | ||||
-rw-r--r-- | testsuite/tests/dph/smvm/dph-smvm.T | 30 | ||||
-rw-r--r-- | testsuite/tests/dph/smvm/dph-smvm.stdout | 1 | ||||
-rw-r--r-- | testsuite/tests/dph/smvm/result-i386.txt | 101 | ||||
-rw-r--r-- | testsuite/tests/dph/smvm/result-sparc.txt | 101 | ||||
-rw-r--r-- | testsuite/tests/dph/smvm/result-x86_64.txt | 101 | ||||
-rw-r--r-- | testsuite/tests/dph/smvm/test-i386.dat | bin | 0 -> 22384 bytes | |||
-rw-r--r-- | testsuite/tests/dph/smvm/test-sparc.dat | bin | 0 -> 11632 bytes | |||
-rw-r--r-- | testsuite/tests/dph/smvm/test-x86_64.dat | bin | 0 -> 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 Binary files differnew file mode 100644 index 0000000000..4db8d62620 --- /dev/null +++ b/testsuite/tests/dph/smvm/test-i386.dat diff --git a/testsuite/tests/dph/smvm/test-sparc.dat b/testsuite/tests/dph/smvm/test-sparc.dat Binary files differnew file mode 100644 index 0000000000..73d2c201cd --- /dev/null +++ b/testsuite/tests/dph/smvm/test-sparc.dat diff --git a/testsuite/tests/dph/smvm/test-x86_64.dat b/testsuite/tests/dph/smvm/test-x86_64.dat Binary files differnew file mode 100644 index 0000000000..08a91f5ab1 --- /dev/null +++ b/testsuite/tests/dph/smvm/test-x86_64.dat |