Module Cuda_like_config.Make

Shared CUDA/HIP scalar semantics. Hardware MMA, asynchronous copies and conversions with different vendor overload contracts stay in the backend; the common operator table lives here so fixes to narrow arithmetic reach both consumers.

Parameters

module Dialect : sig ... end
module Input : sig ... end

Signature

include sig ... end
val procs : Low_level.t Base.array
val outline_part_weight : Base.unit -> Base.int Base.option
val buffer_prefix : Base.string
val buffer_suffix : pos:Base.int -> Base.string
val extra_args : Base.string Base.list
val supports_f64 : Base.bool
val ptr_param_style : [ `Per_param | `Pooled of Base.int ]
val float_log_style : Base.string
val styled_log_arg : PPrint.document -> PPrint.document
val uint4x32_log_lane : PPrint.document -> Base.int -> PPrint.document
val log_index_arg : PPrint.document -> Base.string * PPrint.document
val builtin_param_guards : Ir__C_syntax.param_guard_dialect Base.option
val convert_precision : from:Ops.prec -> to_:Ops.prec -> Base.string * Base.string
val compute_prec : Ops.prec -> Ops.prec
val accum_prec : Ops.prec -> Ops.prec
val vector_prec_ok : Ops.prec -> Base.bool
val async_copy : Ir__C_syntax.async_copy_syntax Base.option
val parallel_grid_syntax : [ `Dispatch | `None | `Openmp ]
val parallel_grid_chunks : Base.int
val volatile_serial_accumulation : Base.bool
val heap_local_arrays : Base.bool
val mma_syntax : (d_prec:Ops.prec -> a_prec:Ops.prec -> b_prec:Ops.prec -> ta:Base.bool -> tb:Base.bool -> m:Base.int -> n:Base.int -> k:Base.int -> d: (PPrint.document * Base.int * [ `Device | `Shared | `Thread | `Fragment of Base.string ] * [ `Plain | `Swizzled_b128 ]) -> a: (Base.int * [ `Device | `Shared | `Thread | `Fragment of Base.string ] * [ `Plain | `Swizzled_b128 ]) -> b: (Base.int * [ `Device | `Shared | `Thread | `Fragment of Base.string ] * [ `Plain | `Swizzled_b128 ]) -> (a_ptr:PPrint.document -> b_ptr:PPrint.document -> PPrint.document) Base.option) Base.option
val mma_operand_loads : a_prec:Ops.prec -> b_prec:Ops.prec -> d_prec:Ops.prec -> scope:Backend_intf.mma_emission_scope -> ta:Base.bool -> tb:Base.bool -> a:Backend_intf.mma_operand_place -> b:Backend_intf.mma_operand_place -> Base.bool * Base.bool
val mma_operand_fragments : a_prec:Ops.prec -> b_prec:Ops.prec -> d_prec:Ops.prec -> scope:Backend_intf.mma_emission_scope -> Backend_intf.mma_fragments Base.option
val mma_arm : a_prec:Ops.prec -> b_prec:Ops.prec -> d_prec:Ops.prec -> scope:Backend_intf.mma_emission_scope -> Backend_intf.mma_arm Base.option
val mma_fragment_syntax : (d_prec:Ops.prec -> a_prec:Ops.prec -> b_prec:Ops.prec -> m:Base.int -> n:Base.int -> k:Base.int -> fragment:Base.string -> target: (PPrint.document * Base.int * [ `Device | `Shared | `Thread | `Fragment of Base.string ] * [ `Plain | `Swizzled_b128 ]) -> a: (Base.int * [ `Device | `Shared | `Thread | `Fragment of Base.string ] * [ `Plain | `Swizzled_b128 ]) -> b: (Base.int * [ `Device | `Shared | `Thread | `Fragment of Base.string ] * [ `Plain | `Swizzled_b128 ]) -> body:(Base.unit -> PPrint.document) -> PPrint.document Base.option) Base.option
val mma_kernel_prologue : triples:(Ops.prec * Ops.prec * Ops.prec) Base.list -> Base.string Base.list
val mma_kernel_workgroup_bytes : triples:(Ops.prec * Ops.prec * Ops.prec) Base.list -> Base.int
val workgroup_allocation_alignment : Base.int
val for_log_trace_tree : Base.bool
val ident_blacklist : Base.string Base__List.t
val vendor_routine_idents : Base.string Base.list
val compiler_contraction_off : Base.unit -> Base.bool
val node_ident_prefix : Base.string
val fp8_from_float : PPrint.document -> PPrint.document
val main_kernel_prefix : string
val kernel_prep_line : string
val loop_index_type : string
val arg_int_prefix : string
val hardware_index : kind:[< `Grid | `Workgroup ] -> slot:int -> Base.String.t option
val barrier_syntax : string option
val shared_decl_prefix : string option
val restrict_keyword : string option
val warp_size : int
val vectorize_pragma : 'a list
val aligned_local_attr : 'a option
val vector_file : Vector_file.t
val vector_style : [> `Packed_struct ]
val typ_of_prec : Ops.prec -> Base.string
val vec_typ_of_prec : length:int -> Ops.prec -> Base.string
val binop_syntax : Ops.prec -> Ops.binop -> PPrint.document -> PPrint.document -> PPrint.document
val unop_syntax : Ops.prec -> Ops.unop -> PPrint.document -> PPrint.document
val vec_unop_syntax : Ops.prec -> Ops.vec_unop -> PPrint.document -> PPrint.document
val ternop_syntax : Ops.prec -> Ops.ternop -> PPrint.document -> PPrint.document -> PPrint.document -> PPrint.document
val select_blend_syntax : Ops.prec -> C_syntax.select_blend option
val kernel_log_param : (string * string) option
val log_involves_file_management : bool
val pp_log_statement : log_param_c_expr_doc:PPrint.document option -> base_message_literal:Base.String.t -> args_docs:PPrint.document list -> PPrint.document