Beaver.MLIR.ExecutionEngine (beaver v0.4.8)

Copy Markdown

This module defines functions working with MLIR ExecutionEngine.

Summary

Functions

Create a MLIR JIT engine for a module and check if successful. Usually this module should be of LLVM dialect.

Write the object captured by an engine created with object_dump: true.

Initialize the JIT runtime.

Look up a symbol in an execution engine.

Register a native pointer under a symbol name.

Get the paths to the runtime libraries provided by MLIR.

Types

dirty()

@type dirty() :: nil | :io_bound | :cpu_bound

enable_pic()

@type enable_pic() :: boolean()

invoke_opts()

@type invoke_opts() :: [{:dirty, dirty()}]

object_dump()

@type object_dump() :: boolean()

opt_level()

@type opt_level() :: 0 | 1 | 2 | 3

opts()

@type opts() :: [
  shared_lib_paths: [shared_lib_path()],
  opt_level: opt_level(),
  object_dump: object_dump(),
  enable_pic: enable_pic(),
  dirty: dirty(),
  telemetry: ([atom()], map(), map() -> any())
]

shared_lib_path()

@type shared_lib_path() :: String.t()

t()

@type t() :: %Beaver.MLIR.ExecutionEngine{ref: term()}

Functions

create!(composer_or_op)

Create a MLIR JIT engine for a module and check if successful. Usually this module should be of LLVM dialect.

create!(module, opts \\ [])

@spec create!(Beaver.MLIR.Module.t(), opts()) :: t()

destroy(jit)

See Beaver.MLIR.CAPI.mlirExecutionEngineDestroy/1.

emit_object!(jit, path)

@spec emit_object!(t(), Path.t()) :: Path.t()

Write the object captured by an engine created with object_dump: true.

init(jit)

Initialize the JIT runtime.

If not already initialized, this will be called implicitly when first invocation happens.

invoke!(jit, symbol, args \\ [], return \\ nil, opts \\ [])

@spec invoke!(
  t(),
  String.t() | Beaver.MLIR.StringRef.t(),
  list(),
  any(),
  invoke_opts()
) :: :ok

invoke a function by symbol name.

lookup(jit, symbol, opts \\ [])

Look up a symbol in an execution engine.

make(value)

register_symbol(jit, symbol, pointer)

@spec register_symbol(
  t(),
  String.t() | Beaver.MLIR.StringRef.t(),
  Beaver.Native.OpaquePtr.t()
) :: t()

Register a native pointer under a symbol name.

runtime_libs()

Get the paths to the runtime libraries provided by MLIR.