module Futhark.CodeGen.ImpGen.CUDA
  ( compileProg
  ) where

import Futhark.IR.KernelsMem
import qualified Futhark.CodeGen.ImpCode.OpenCL as OpenCL
import qualified Futhark.CodeGen.ImpGen.Kernels as ImpGenKernels
import Futhark.CodeGen.ImpGen.Kernels.ToOpenCL
import Futhark.MonadFreshNames

compileProg :: MonadFreshNames m => Prog KernelsMem -> m OpenCL.Program
compileProg :: Prog KernelsMem -> m Program
compileProg Prog KernelsMem
prog = Program -> Program
kernelsToCUDA (Program -> Program) -> m Program -> m Program
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Prog KernelsMem -> m Program
forall (m :: * -> *).
MonadFreshNames m =>
Prog KernelsMem -> m Program
ImpGenKernels.compileProgCUDA Prog KernelsMem
prog