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