Crate aivm

source · []
Expand description

Artificial intelligence that embraces the hardware it runs on.

Instead of relying on huge matrix multiplications and non-linear activation functions, AIVM uses a virtual machine with trainable code to directly drive its decision making. The code can be compiled into native machine code, removing an expensive layer of abstraction from typical artificial intelligence agents.

Quick start

use aivm::{codegen, Compiler, Runner};

const LOWEST_FUNCTION_LEVEL: u32 = 1;
const MEMORY_SIZE: u32 = 4;
const INPUT_SIZE: u32 = 4;
const OUTPUT_SIZE: u32 = 4;

let gen = codegen::Interpreter::new();
let mut compiler = Compiler::new(gen);

// TODO: train code and memory to make it do something useful.
let code = [0; 16];
let mut runner = compiler.compile(
    &code,
    LOWEST_FUNCTION_LEVEL,
    MEMORY_SIZE,
    INPUT_SIZE,
    OUTPUT_SIZE,
);
let mut memory = [0; (MEMORY_SIZE + INPUT_SIZE + OUTPUT_SIZE) as usize];

runner.step(&mut memory);

Modules

The different code generators available.

Structs

Structure for compiling AIVM code.
The default implementation of InstructionFrequencies.

Traits

Constants controlling the frequency of different instructions in the VM code.
Returned by a code generator to run VM code.