← Back

Module metal

fn init() -> Result<(), GpuError>

Source: gpu/metal.joule:10

fn list_devices() -> Vec<GpuDevice>

Source: gpu/metal.joule:17

fn MTLCopyAllDevices() -> *mut std::ffi::c_void; // Returns NSArray

Source: gpu/metal.joule:19

fn mtl_array_count(array: *mut std::ffi::c_void) -> usize;

Source: gpu/metal.joule:20

fn mtl_array_object_at(array: *mut std::ffi::c_void, index: usize) -> *mut std::ffi::c_void;

Source: gpu/metal.joule:21

fn mtl_device_name(device: *mut std::ffi::c_void) -> *const i8;

Source: gpu/metal.joule:22

fn mtl_device_max_threads_per_threadgroup(device: *mut std::ffi::c_void) -> u64;

Source: gpu/metal.joule:23

fn mtl_device_max_buffer_length(device: *mut std::ffi::c_void) -> u64;

Source: gpu/metal.joule:24

fn mtl_device_supports_family(device: *mut std::ffi::c_void, family: i32) -> bool;

Source: gpu/metal.joule:25

fn mtl_device_is_low_power(device: *mut std::ffi::c_void) -> bool;

Source: gpu/metal.joule:26

fn mtl_device_is_headless(device: *mut std::ffi::c_void) -> bool;

Source: gpu/metal.joule:27

fn mtl_device_recommended_max_working_set_size(device: *mut std::ffi::c_void) -> u64;

Source: gpu/metal.joule:28

fn get_metal_version() -> String

Get Metal version string

Source: gpu/metal.joule:130

fn NSProcessInfo_operatingSystemVersionString() -> *const i8;

Source: gpu/metal.joule:135

fn default_device() -> Option<*mut std::ffi::c_void>

Get default Metal device

Source: gpu/metal.joule:148

fn MTLCreateSystemDefaultDevice() -> *mut std::ffi::c_void;

Source: gpu/metal.joule:150

fn create_command_queue(device: *mut std::ffi::c_void) -> Option<*mut std::ffi::c_void>

Create a new command queue for a device

Source: gpu/metal.joule:166

fn mtl_device_new_command_queue(

Source: gpu/metal.joule:168

fn create_command_buffer(

Create a new command buffer

Source: gpu/metal.joule:182

fn mtl_command_queue_command_buffer(

Source: gpu/metal.joule:186

fn commit_and_wait(buffer: *mut std::ffi::c_void)

Commit and wait for command buffer

Source: gpu/metal.joule:200

fn mtl_command_buffer_commit(buffer: *mut std::ffi::c_void);

Source: gpu/metal.joule:202

fn mtl_command_buffer_wait_until_completed(buffer: *mut std::ffi::c_void);

Source: gpu/metal.joule:203

fn create_compute_encoder(

Create compute encoder

Source: gpu/metal.joule:213

fn mtl_command_buffer_compute_command_encoder(

Source: gpu/metal.joule:217

fn set_pipeline(encoder: *mut std::ffi::c_void, pipeline: *mut std::ffi::c_void)

Set compute pipeline state

Source: gpu/metal.joule:231

fn mtl_compute_encoder_set_pipeline(

Source: gpu/metal.joule:233

fn set_buffer(

Set buffer at index

Source: gpu/metal.joule:243

fn mtl_compute_encoder_set_buffer(

Source: gpu/metal.joule:250

fn dispatch_threads(

Dispatch threads

Source: gpu/metal.joule:262

fn mtl_compute_encoder_dispatch_threadgroups(

Source: gpu/metal.joule:268

fn end_encoding(encoder: *mut std::ffi::c_void)

End encoding

Source: gpu/metal.joule:285

fn mtl_compute_encoder_end_encoding(encoder: *mut std::ffi::c_void);

Source: gpu/metal.joule:287

fn matrix_multiply(

Source: gpu/metal.joule:300

fn mps_matrix_multiplication_create(

Source: gpu/metal.joule:310

fn mps_matrix_multiplication_encode(

Source: gpu/metal.joule:321

fn convolution_2d(

Source: gpu/metal.joule:350

fn mps_cnn_convolution_create(

Source: gpu/metal.joule:358

fn compile(

Source: gpu/metal.joule:391

fn mtl_compile_library(

Source: gpu/metal.joule:396

fn get_function(

Get function from library

Source: gpu/metal.joule:418

fn mtl_library_new_function(

Source: gpu/metal.joule:423

fn create_pipeline(

Create compute pipeline state

Source: gpu/metal.joule:442

fn mtl_device_new_compute_pipeline(

Source: gpu/metal.joule:447