package rune
Automatic differentiation and JIT compilation for OCaml
Install
dune-project
Dependency
Authors
Maintainers
Sources
raven-1.0.0.alpha1.tbz
sha256=8e277ed56615d388bc69c4333e43d1acd112b5f2d5d352e2453aef223ff59867
sha512=369eda6df6b84b08f92c8957954d107058fb8d3d8374082e074b56f3a139351b3ae6e3a99f2d4a4a2930dd950fd609593467e502368a13ad6217b571382da28c
doc/rune.jit/Rune_jit/Ir/Scheduled/index.html
Module Ir.Scheduled
Source
Source
type layout = {
shape : int array;
strides : int array;
alignment : int;
vector_width : int;
contiguous_axes : int list;
}
Source
type allocation = {
scope : memory_scope;
size_bytes : int;
lifetime : int * int;
alias_group : int option;
}
Source
type buffer_info = {
buf_var : Var.t;
dtype : Dtype.any;
layout : layout;
alloc : allocation;
is_input : bool;
is_output : bool;
}
Source
type loop_hint =
| Vectorize of {
}
| Unroll of {
}
| Prefetch of {
var : Var.t;
into : memory_scope;
distance : int;
}
| Pipeline of {
}
Source
type reduction_plan = {
axes : int list;
intra_thread : [ `Tree | `Welford | `Shfl | `None ];
inter_thread : [ `SharedTree | `Atomic | `GridReduce ];
}
Source
type scheduled_op =
| S_Kernel of {
kernel_id : int;
kernel_name : string;
ops : any_node list;
inputs : buffer_info list;
outputs : buffer_info list;
iter : iter_space;
reduce : reduction_plan option;
hints : loop_hint list;
context : schedule_context;
}
| S_Memory_Transfer of {
transfer_id : int;
src_var : Var.t;
dst_var : Var.t;
src_device : string;
dst_device : string;
dims : int array;
src_strides : int array option;
dst_strides : int array option;
size_bytes : int;
is_async : bool;
stream : int option;
}
| S_Synchronization of {
sync_id : int;
sync_type : [ `Barrier | `Fence | `Event of int ];
scope : [ `Threadgroup | `Device | `System ];
devices : string list;
stream : int option;
}
| S_Host_Callback of {
}
Source
type schedule_item = {
item_id : int;
operation : scheduled_op;
depends_on : int list;
dependents : int list;
}
Source
type fusion_opportunity = {
kernel_a : int;
kernel_b : int;
fusion_type : [ `Elementwise | `Reduction | `Mixed ];
benefit_score : float;
memory_saved : int;
}
Source
type item_analysis = {
item_id : int;
flops : int;
bytes_read : int;
bytes_written : int;
regs_per_thread : int;
smem_bytes : int;
occupancy : float;
est_ns : int;
}
Source
type graph_t = {
schedule_items : schedule_item array;
dependencies : dependency list;
fusion_opportunities : fusion_opportunity list;
analysis : item_analysis array;
critical_path : int list;
total_memory_usage : int;
estimated_runtime_ns : int;
vars_metadata : (Var.t, var_metadata) Hashtbl.t;
symbolic_vars : SymVar.t list;
}
Source
val default_alloc :
scope:memory_scope ->
dtype:Dtype.any ->
layout:layout ->
lifetime:(int * int) ->
allocation
Source
val make_iter_space :
axes:axis array ->
mapping:mapping ->
tiles:int list array ->
iter_space
Source
val make_buffer_info :
buf_var:Var.t ->
dtype:Dtype.any ->
shape:int array ->
scope:memory_scope ->
is_input:bool ->
is_output:bool ->
lifetime:(int * int) ->
buffer_info
Source
val create_kernel :
kernel_id:int ->
kernel_name:string ->
ops:any_node list ->
inputs:buffer_info list ->
outputs:buffer_info list ->
iter:iter_space ->
reduce:reduction_plan option ->
hints:loop_hint list ->
context:schedule_context ->
scheduled_op
Source
val create_memory_transfer :
transfer_id:int ->
src_var:Var.t ->
dst_var:Var.t ->
src_device:string ->
dst_device:string ->
dims:int array ->
?src_strides:int array ->
?dst_strides:int array ->
size_bytes:int ->
is_async:bool ->
stream:int option ->
unit ->
scheduled_op
Source
val create_synchronization :
sync_id:int ->
sync_type:[ `Barrier | `Event of int | `Fence ] ->
scope:[ `Device | `System | `Threadgroup ] ->
devices:string list ->
stream:int option ->
scheduled_op
Source
val create_host_callback :
callback_id:int ->
callback_name:string ->
input_vars:Var.t list ->
output_vars:Var.t list ->
scheduled_op
Source
val create_schedule_item :
item_id:int ->
operation:scheduled_op ->
depends_on:int list ->
schedule_item
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>