diff options
author | Tom Smeding <tom@tomsmeding.com> | 2025-02-28 16:57:18 +0100 |
---|---|---|
committer | Tom Smeding <tom@tomsmeding.com> | 2025-02-28 16:59:40 +0100 |
commit | 1083b6016c427d7eb519f9238384b1ebe5395061 (patch) | |
tree | 85da8a27ddcc8e0c6ac69e90fb2e03e294ce4c24 | |
parent | e40e33bc16175b6a0180e3ef88d0a588819e6c37 (diff) |
Remove stupid old nonworking cuda stub
-rw-r--r-- | chad-fast.cabal | 2 | ||||
-rw-r--r-- | prelude.cu | 3 | ||||
-rw-r--r-- | src/CompileCu.hs | 114 | ||||
-rw-r--r-- | src/PreludeCu.hs | 9 |
4 files changed, 0 insertions, 128 deletions
diff --git a/chad-fast.cabal b/chad-fast.cabal index 8b212a5..c052a7d 100644 --- a/chad-fast.cabal +++ b/chad-fast.cabal @@ -28,7 +28,6 @@ library CHAD.Types Compile Compile.Exec - -- CompileCu Data Example Example.GMM @@ -42,7 +41,6 @@ library Language Language.AST Lemmas - -- PreludeCu Simplify Util.IdGen other-modules: diff --git a/prelude.cu b/prelude.cu deleted file mode 100644 index e63ccf8..0000000 --- a/prelude.cu +++ /dev/null @@ -1,3 +0,0 @@ -#include <utility> - -struct Nil {}; diff --git a/src/CompileCu.hs b/src/CompileCu.hs deleted file mode 100644 index 749368a..0000000 --- a/src/CompileCu.hs +++ /dev/null @@ -1,114 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE StandaloneKindSignatures #-} -{-# LANGUAGE DeriveFunctor #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -module Compile where - -import Control.Monad.Trans.Class (lift) -import Control.Monad.Trans.State.Strict -import Control.Monad.Trans.Writer.CPS -import Data.Kind (Type) - -import AST -import Data - - -data Body = Body [Stm] Inline -- body, return expr - deriving (Show) - -data Stm - = VarDef String String (Maybe Inline) -- type, name, initialiser - | Launch Inline Inline Body -- num blocks, block size, kernel function body - deriving (Show) - --- inline cuda expression -data Inline - = IOp Inline String Inline - | IUOp String Inline - | ILit String - | IVar String - | ICall Inline [Inline] - deriving (Show) - -data Target = Host | Device - deriving (Show) - -data FunDef = FunDef Target String [String] Body -- name, params (full declarations), body - deriving (Show) - -type Env :: [Ty] -> Type -> Type -data Env env v where - ETop :: Env '[] v - EPush :: v -> Env env v -> Env (t : env) v - -prj :: Env env v -> Idx env t -> v -prj = \env idx -> go idx env - where go :: Idx env t -> Env env v -> v - go IZ (EPush v _) = v - go (IS i) (EPush _ env) = go i env - -newtype M a = M (StateT Int -- ID generator - (WriterT [FunDef] -- generated global function definitions - (Writer [Stm])) -- generated local statements - a) - deriving newtype (Functor, Applicative, Monad) - -emitFun :: FunDef -> M () -emitFun fd = M (lift (tell [fd])) - -emitStm :: Stm -> M () -emitStm stm = M (lift (lift (tell [stm]))) - -captureStms :: M a -> M ([Stm], a) -captureStms (M m) = M (mapStateT (mapWriterT (mapWriter (\(((x, i), fds), stms) -> ((((stms, x), i), fds), [])))) m) - -genId :: M Int -genId = M (state (\i -> (i, i + 1))) - -genName :: String -> M String -genName s = (\i -> s ++ sep ++ show i ++ suf) <$> genId - where (sep, suf) = case reverse s of - [] -> ("x", "_") - c : _ | c `elem` "0123456789_" -> ("_", "") - | otherwise -> ("", "") - -compile :: Target -> Env env String -> Ex env t -> M Inline -compile tgt env = \case - EVar _ _ i -> pure $ IVar (prj env i) - ELet _ rhs e -> do - rhsi <- compile tgt env rhs - var <- genName "x" - rhsty <- writeType (typeOf rhs) - emitStm $ VarDef rhsty var (Just rhsi) - compile tgt (EPush var env) e - - EBuild1 x k e -> compile tgt env $ EBuild x (k :< VNil) e - EBuild _ VNil e -> _ - EBuild _ k e -> case tgt of - Host -> do - fname <- genName "buildfun" - let n' = fromSNat (vecLength k) - shapevars = ['s' : show i | i <- [0 .. n' - 1]] - _ = foldr (\a b -> EOp ext (OMul STI64) (EPair ext a b)) (EConst ext STI64 1) k - emitFun $ FunDef Device fname (map ("int " ++) shapevars) _ - emitStm $ Launch _ (ILit "32") _ - _ - Device -> _ - - _ -> undefined - -writeType :: STy t -> M String -writeType = \case - STArr _ t -> (++ "*") <$> writeType t - STNil -> pure "Nil" - STPair a b -> (\x y -> "std::pair<" ++ x ++ "," ++ y ++ ">") <$> writeType a <*> writeType b - STScal t -> case t of - STI32 -> pure "int32_t" - STI64 -> pure "int64_t" - STF32 -> pure "float" - STF64 -> pure "double" - STBool -> pure "bool" diff --git a/src/PreludeCu.hs b/src/PreludeCu.hs deleted file mode 100644 index 22909a9..0000000 --- a/src/PreludeCu.hs +++ /dev/null @@ -1,9 +0,0 @@ -{-# LANGUAGE TemplateHaskell #-} -module PreludeCu where - -import Control.Monad.IO.Class (liftIO) -import Language.Haskell.TH (Exp(LitE), Lit(StringL)) - - -prelude :: String -prelude = $(LitE . StringL <$> liftIO (readFile "prelude.cu")) |