futhark-0.25.3: src/Futhark/CodeGen/Backends/SequentialPython.hs
-- | Code generation for sequential Python.
module Futhark.CodeGen.Backends.SequentialPython
( compileProg,
)
where
import Control.Monad
import Data.Text qualified as T
import Futhark.CodeGen.Backends.GenericPython qualified as GenericPython
import Futhark.CodeGen.Backends.GenericPython.AST
import Futhark.CodeGen.ImpCode.Sequential qualified as Imp
import Futhark.CodeGen.ImpGen.Sequential qualified as ImpGen
import Futhark.IR.SeqMem
import Futhark.MonadFreshNames
-- | Compile the program to Python.
compileProg ::
(MonadFreshNames m) =>
GenericPython.CompilerMode ->
String ->
Prog SeqMem ->
m (ImpGen.Warnings, T.Text)
compileProg mode class_name =
ImpGen.compileProg
>=> traverse
( GenericPython.compileProg
mode
class_name
GenericPython.emptyConstructor
imports
defines
operations
()
[]
[]
)
where
imports =
[ Import "sys" Nothing,
Import "numpy" $ Just "np",
Import "ctypes" $ Just "ct",
Import "time" Nothing
]
defines = []
operations :: GenericPython.Operations Imp.Sequential ()
operations =
GenericPython.defaultOperations
{ GenericPython.opsCompiler = const $ pure (),
GenericPython.opsCopy = copySequentialMemory
}
copySequentialMemory :: GenericPython.Copy Imp.Sequential ()
copySequentialMemory destmem destidx DefaultSpace srcmem srcidx DefaultSpace nbytes _bt =
GenericPython.copyMemoryDefaultSpace destmem destidx srcmem srcidx nbytes
copySequentialMemory _ _ destspace _ _ srcspace _ _ =
error $ "Cannot copy to " ++ show destspace ++ " from " ++ show srcspace