pub struct StateResourceList { /* private fields */ }Implementations§
Source§impl StateResourceList
impl StateResourceList
Sourcepub fn new() -> Option<Self>
pub fn new() -> Option<Self>
Examples found in repository?
examples/07_optimizer_and_state.rs (line 49)
36fn main() {
37 let device = MetalDevice::system_default().expect("no Metal device available");
38 let queue = device.new_command_queue().expect("command queue");
39
40 let command_buffer = queue.new_command_buffer().expect("command buffer");
41 let temporary_a = State::temporary_with_buffer_size(&command_buffer, 32).expect("temporary state a");
42 let temporary_b = State::temporary_with_buffer_size(&command_buffer, 64).expect("temporary state b");
43 let unique_count = state_batch_increment_read_count(&[&temporary_a, &temporary_a, &temporary_b], 1);
44 assert_eq!(unique_count, 2);
45 assert_eq!(temporary_a.resource_type_at_index(0), state_resource_type::BUFFER);
46 command_buffer.commit();
47 command_buffer.wait_until_completed();
48
49 let resource_list = StateResourceList::new().expect("resource list");
50 resource_list.append_buffer(16);
51 let persistent_state = State::new_with_resource_list(&device, &resource_list).expect("persistent state");
52 assert_eq!(persistent_state.resource_count(), 1);
53 assert_eq!(persistent_state.buffer_size_at_index(0), 16);
54
55 let (gradient_buffer, gradient_vector) = vector_with_values(&device, &[0.1, -0.2]);
56 let (values_buffer, values_vector) = vector_with_values(&device, &[1.0, -1.0]);
57 let (result_buffer, result_vector) = vector_with_values(&device, &[0.0, 0.0]);
58 let optimizer = NNOptimizerStochasticGradientDescent::new(&device, 0.5).expect("sgd");
59 let base = optimizer.as_optimizer().expect("optimizer base");
60 assert_eq!(base.regularization_type(), nn_regularization_type::NONE);
61
62 let command_buffer = queue.new_command_buffer().expect("command buffer");
63 optimizer.encode_vector(
64 &command_buffer,
65 &gradient_vector,
66 &values_vector,
67 None,
68 &result_vector,
69 );
70 command_buffer.commit();
71 command_buffer.wait_until_completed();
72
73 let _ = gradient_buffer;
74 let _ = values_buffer;
75 let output = read_f32_values(&result_buffer, 2);
76 println!("{output:?}");
77}Sourcepub fn append_buffer(&self, size: usize)
pub fn append_buffer(&self, size: usize)
Examples found in repository?
examples/07_optimizer_and_state.rs (line 50)
36fn main() {
37 let device = MetalDevice::system_default().expect("no Metal device available");
38 let queue = device.new_command_queue().expect("command queue");
39
40 let command_buffer = queue.new_command_buffer().expect("command buffer");
41 let temporary_a = State::temporary_with_buffer_size(&command_buffer, 32).expect("temporary state a");
42 let temporary_b = State::temporary_with_buffer_size(&command_buffer, 64).expect("temporary state b");
43 let unique_count = state_batch_increment_read_count(&[&temporary_a, &temporary_a, &temporary_b], 1);
44 assert_eq!(unique_count, 2);
45 assert_eq!(temporary_a.resource_type_at_index(0), state_resource_type::BUFFER);
46 command_buffer.commit();
47 command_buffer.wait_until_completed();
48
49 let resource_list = StateResourceList::new().expect("resource list");
50 resource_list.append_buffer(16);
51 let persistent_state = State::new_with_resource_list(&device, &resource_list).expect("persistent state");
52 assert_eq!(persistent_state.resource_count(), 1);
53 assert_eq!(persistent_state.buffer_size_at_index(0), 16);
54
55 let (gradient_buffer, gradient_vector) = vector_with_values(&device, &[0.1, -0.2]);
56 let (values_buffer, values_vector) = vector_with_values(&device, &[1.0, -1.0]);
57 let (result_buffer, result_vector) = vector_with_values(&device, &[0.0, 0.0]);
58 let optimizer = NNOptimizerStochasticGradientDescent::new(&device, 0.5).expect("sgd");
59 let base = optimizer.as_optimizer().expect("optimizer base");
60 assert_eq!(base.regularization_type(), nn_regularization_type::NONE);
61
62 let command_buffer = queue.new_command_buffer().expect("command buffer");
63 optimizer.encode_vector(
64 &command_buffer,
65 &gradient_vector,
66 &values_vector,
67 None,
68 &result_vector,
69 );
70 command_buffer.commit();
71 command_buffer.wait_until_completed();
72
73 let _ = gradient_buffer;
74 let _ = values_buffer;
75 let output = read_f32_values(&result_buffer, 2);
76 println!("{output:?}");
77}Trait Implementations§
Source§impl Drop for StateResourceList
impl Drop for StateResourceList
impl Send for StateResourceList
impl Sync for StateResourceList
Auto Trait Implementations§
impl Freeze for StateResourceList
impl RefUnwindSafe for StateResourceList
impl Unpin for StateResourceList
impl UnsafeUnpin for StateResourceList
impl UnwindSafe for StateResourceList
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more