module Futhark.CodeGen.ImpGen.CUDA ( compileProg, Warnings, ) where import Data.Bifunctor (second) import Futhark.CodeGen.ImpCode.OpenCL import Futhark.CodeGen.ImpGen.Kernels import Futhark.CodeGen.ImpGen.Kernels.ToOpenCL import Futhark.IR.KernelsMem import Futhark.MonadFreshNames compileProg :: MonadFreshNames m => Prog KernelsMem -> m (Warnings, Program) compileProg :: Prog KernelsMem -> m (Warnings, Program) compileProg Prog KernelsMem prog = (Program -> Program) -> (Warnings, Program) -> (Warnings, Program) forall (p :: * -> * -> *) b c a. Bifunctor p => (b -> c) -> p a b -> p a c second Program -> Program kernelsToCUDA ((Warnings, Program) -> (Warnings, Program)) -> m (Warnings, Program) -> m (Warnings, Program) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Prog KernelsMem -> m (Warnings, Program) forall (m :: * -> *). MonadFreshNames m => Prog KernelsMem -> m (Warnings, Program) compileProgCUDA Prog KernelsMem prog