mirror of
https://github.com/huggingface/candle.git
synced 2025-06-19 19:58:35 +00:00
Avoid some overflows on wasm32. (#968)
This commit is contained in:
@ -135,7 +135,13 @@ pub fn qtensor_from_ggml(
|
|||||||
dims: Vec<usize>,
|
dims: Vec<usize>,
|
||||||
) -> Result<super::QTensor> {
|
) -> Result<super::QTensor> {
|
||||||
let tensor_elems = dims.iter().product::<usize>();
|
let tensor_elems = dims.iter().product::<usize>();
|
||||||
let size_in_bytes = tensor_elems * ggml_dtype.type_size() / ggml_dtype.blck_size();
|
let blck_size = ggml_dtype.blck_size();
|
||||||
|
if tensor_elems % blck_size != 0 {
|
||||||
|
crate::bail!(
|
||||||
|
"the number of elements {tensor_elems} is not divisible by the block size {blck_size}"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
let size_in_bytes = tensor_elems / blck_size * ggml_dtype.type_size();
|
||||||
|
|
||||||
match ggml_dtype {
|
match ggml_dtype {
|
||||||
GgmlDType::F32 => from_raw_data::<f32>(raw_data, size_in_bytes, dims),
|
GgmlDType::F32 => from_raw_data::<f32>(raw_data, size_in_bytes, dims),
|
||||||
|
@ -59,8 +59,13 @@ impl TensorInfo {
|
|||||||
tensor_data_offset: u64,
|
tensor_data_offset: u64,
|
||||||
) -> Result<QTensor> {
|
) -> Result<QTensor> {
|
||||||
let tensor_elems = self.shape.elem_count();
|
let tensor_elems = self.shape.elem_count();
|
||||||
let size_in_bytes =
|
let blck_size = self.ggml_dtype.blck_size();
|
||||||
tensor_elems * self.ggml_dtype.type_size() / self.ggml_dtype.blck_size();
|
if tensor_elems % blck_size != 0 {
|
||||||
|
crate::bail!(
|
||||||
|
"the number of elements {tensor_elems} is not divisible by the block size {blck_size}"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
let size_in_bytes = tensor_elems / blck_size * self.ggml_dtype.type_size();
|
||||||
let mut raw_data = vec![0u8; size_in_bytes];
|
let mut raw_data = vec![0u8; size_in_bytes];
|
||||||
reader.seek(std::io::SeekFrom::Start(tensor_data_offset + self.offset))?;
|
reader.seek(std::io::SeekFrom::Start(tensor_data_offset + self.offset))?;
|
||||||
reader.read_exact(&mut raw_data)?;
|
reader.read_exact(&mut raw_data)?;
|
||||||
|
Reference in New Issue
Block a user