futhark-0.25.32: An optimising compiler for a functional, array-oriented language.
Safe HaskellNone
LanguageGHC2021

Futhark.Test

Description

Facilities for reading Futhark test programs. A Futhark test program is an ordinary Futhark program where an initial comment block specifies input- and output-sets.

Synopsis

Documentation

valuesFromByteString :: String -> ByteString -> Either String [Value] Source #

Try to parse a several values from a byte string. The String parameter is used for error messages.

newtype FutharkExe Source #

The futhark executable we are using. This is merely a wrapper around the underlying file path, because we will be using a lot of different file paths here, and it is easy to mix them up.

Constructors

FutharkExe FilePath 

getValues :: (MonadFail m, MonadIO m) => FutharkExe -> FilePath -> Values -> m [Value] Source #

Get the actual core Futhark values corresponding to a Values specification. The first FilePath is the path of the futhark executable, and the second is the directory which file paths are read relative to.

getValuesBS :: (MonadFail m, MonadIO m) => FutharkExe -> FilePath -> Values -> m ByteString Source #

Extract a text representation of some Values. In the IO monad because this might involve reading from a file. There is no guarantee that the resulting byte string yields a readable value.

valuesAsVars :: (MonadError Text m, MonadIO m) => Server -> [(VarName, TypeName)] -> FutharkExe -> FilePath -> Values -> m () Source #

Make the provided Values available as server-side variables. This may involve arbitrary server-side computation. Error detection... dubious.

checkResult :: (MonadError Text m, MonadIO m) => FilePath -> [Value] -> [Value] -> m () Source #

Check that the result is as expected, and write files and throw an error if not.

testRunReferenceOutput :: FilePath -> Text -> TestRun -> FilePath Source #

When/if generating a reference output file for this run, what should it be called? Includes the "data/" folder.

getExpectedResult :: (MonadFail m, MonadIO m) => FutharkExe -> FilePath -> Text -> TestRun -> m (ExpectedResult [Value]) Source #

Get the values corresponding to an expected result, if any.

compileProgram :: (MonadIO m, MonadError Text m) => [String] -> FutharkExe -> String -> FilePath -> m (ByteString, ByteString) Source #

compileProgram extra_options futhark backend program compiles program with the command futhark backend extra-options..., and returns stdout and stderr of the compiler. Throws an IO exception containing stderr if compilation fails.

readResults :: (MonadIO m, MonadError Text m) => Server -> [VarName] -> m [Value] Source #

Read the given variables from a running server.

ensureReferenceOutput :: (MonadIO m, MonadError Text m) => Maybe Int -> FutharkExe -> String -> FilePath -> [InputOutputs] -> m () Source #

Ensure that any reference output files exist, or create them (by compiling the program with the reference compiler and running it on the input) if necessary.

determineTuning :: MonadIO m => Maybe FilePath -> FilePath -> m ([String], String) Source #

Determine the --tuning options to pass to the program. The first argument is the extension of the tuning file, or Nothing if none should be used.

determineCache :: Maybe FilePath -> FilePath -> [String] Source #

Determine the --cache-file options to pass to the program. The first argument is the extension of the cache file, or Nothing if none should be used.

binaryName :: FilePath -> FilePath Source #

The name we use for compiled programs.

futharkServerCfg :: FilePath -> [String] -> ServerCfg Source #

Create a Futhark server configuration suitable for use when testing/benchmarking Futhark programs.

data Mismatch #

Instances

Instances details
Show Mismatch 
Instance details

Defined in Futhark.Data.Compare

data Value #

Instances

Instances details
Binary Value 
Instance details

Defined in Futhark.Data

Show Value 
Instance details

Defined in Futhark.Data

Eq Value 
Instance details

Defined in Futhark.Data

Methods

(==) :: Value -> Value -> Bool Source #

(/=) :: Value -> Value -> Bool Source #

Pretty Value Source # 
Instance details

Defined in Futhark.Test.Values

Methods

pretty :: Value -> Doc ann #

prettyList :: [Value] -> Doc ann #

PutValue [Value] 
Instance details

Defined in Futhark.Data

Methods

putValue :: [Value] -> Maybe Value #