17 | module Compiler.Xla.PJRT.PjrtExecutable
19 | import Compiler.Xla.Client.ExecutableBuildOptions
22 | import Compiler.String
24 | ffi : String -> String
25 | ffi = libxla "c/xla/pjrt/pjrt_executable.h"
28 | data CompileOptions = MkCompileOptions GCAnyPtr
30 | %foreign (ffi "CompileOptions_delete")
31 | prim__deleteCompileOptions : AnyPtr -> PrimIO ()
33 | %foreign (ffi "CompileOptions_new")
34 | prim__mkCompileOptions : AnyPtr -> PrimIO AnyPtr
37 | mkCompileOptions : HasIO io => ExecutableBuildOptions -> io CompileOptions
38 | mkCompileOptions (MkExecutableBuildOptions executableBuildOptions) = do
39 | options <- primIO $
prim__mkCompileOptions executableBuildOptions
40 | options <- onCollectAny' options (primIO . prim__deleteCompileOptions)
41 | pure (MkCompileOptions options)
43 | %foreign (ffi "CompileOptions_SerializeAsString")
44 | prim__compileOptionsSerializeAsString : GCAnyPtr -> PrimIO AnyPtr
48 | serializeAsString : HasIO io => CompileOptions -> io CppString
49 | serializeAsString (MkCompileOptions options) = MkCppString <$> (
50 | primIO $
prim__compileOptionsSerializeAsString options