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.