Skip to main content

validate_buffer_placement

Function validate_buffer_placement 

Source
pub fn validate_buffer_placement(
    desc: &QuantizationDescriptor,
    buffers: &[BufferHandle],
    data_buffer_index: u32,
) -> Result<()>
Expand description

Validates that all quantization-parameter buffer indices in desc are valid within the buffers table and do not alias the tensor data buffer.

For each parameter buffer index referenced by desc:

  1. The index MUST be less than buffers.len().
  2. The index MUST NOT equal data_buffer_index.
  3. The referenced buffer’s device_tag MUST match that of buffers[data_buffer_index].

§Errors

§Examples

use hurray_core::{
    BufferHandle, DeviceTag, Nf4, QuantizationDescriptor, SyncMode,
    validate_buffer_placement, MIN_BUFFER_ALIGNMENT,
};

let data = BufferHandle::new(1024, MIN_BUFFER_ALIGNMENT, DeviceTag::Cpu, SyncMode::ProducerSynced).unwrap();
let scale = BufferHandle::new(64, MIN_BUFFER_ALIGNMENT, DeviceTag::Cpu, SyncMode::ProducerSynced).unwrap();
let buffers = [data, scale];

let desc = QuantizationDescriptor::Nf4(Nf4::new(0, 64, 1).unwrap());
// scale buffer index 1 is valid: in range, != data index 0, same device.
assert!(validate_buffer_placement(&desc, &buffers, 0).is_ok());