Skip to content

Commit 53814b1

Browse files
committed
fix(quantization): remove incorrect query type conversion in ProcessQueryImpl
Query vectors are always FP32, do not reinterpret them as int8_t or uint16_t. Also fix clang-format issues in test_fp16_bf16.cpp. Signed-off-by: LHT129 <tianlan.lht@antgroup.com>
1 parent fde0cec commit 53814b1

2 files changed

Lines changed: 4 additions & 35 deletions

File tree

src/quantization/quantizer_adapter.cpp

Lines changed: 2 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -221,31 +221,8 @@ template <typename QuantT, typename DataT>
221221
void
222222
QuantizerAdapter<QuantT, DataT>::ProcessQueryImpl(
223223
const DataType* query, Computer<QuantizerAdapter<QuantT, DataT>>& computer) const {
224-
if constexpr (std::is_same_v<DataT, int8_t>) {
225-
const auto* query_int8 = reinterpret_cast<const int8_t*>(query);
226-
Vector<DataType> vec(this->dim_, this->allocator_);
227-
for (int64_t i = 0; i < this->dim_; i++) {
228-
vec[i] = static_cast<DataType>(query_int8[i]);
229-
}
230-
auto& inner_computer = reinterpret_cast<Computer<QuantT>&>(computer);
231-
this->inner_quantizer_->ProcessQueryImpl(vec.data(), inner_computer);
232-
} else if constexpr (std::is_same_v<DataT, uint16_t>) {
233-
const auto* query_fp16 = reinterpret_cast<const uint16_t*>(query);
234-
Vector<DataType> vec(this->dim_, this->allocator_);
235-
for (int64_t i = 0; i < this->dim_; i++) {
236-
if (data_type_ == DataTypes::DATA_TYPE_FP16) {
237-
vec[i] = FP16ToFloat(query_fp16[i]);
238-
} else {
239-
vec[i] = BF16ToFloat(query_fp16[i]);
240-
}
241-
}
242-
auto& inner_computer = reinterpret_cast<Computer<QuantT>&>(computer);
243-
this->inner_quantizer_->ProcessQueryImpl(vec.data(), inner_computer);
244-
} else {
245-
static_assert(
246-
std::is_same_v<DataT, int8_t> || std::is_same_v<DataT, uint16_t>,
247-
"QuantizerAdapter::ProcessQueryImpl only supports int8_t and uint16_t data types");
248-
}
224+
auto& inner_computer = reinterpret_cast<Computer<QuantT>&>(computer);
225+
this->inner_quantizer_->ProcessQueryImpl(query, inner_computer);
249226
}
250227

251228
template <typename QuantT, typename DataT>

tests/test_fp16_bf16.cpp

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,7 @@ CreateFP16Dataset(int64_t dim, int64_t count, const std::vector<float>& fp32_dat
3535
}
3636

3737
auto dataset = Dataset::Make();
38-
dataset->NumElements(count)
39-
->Dim(dim)
40-
->Ids(ids)
41-
->Float16Vectors(fp16_data)
42-
->Owner(true);
38+
dataset->NumElements(count)->Dim(dim)->Ids(ids)->Float16Vectors(fp16_data)->Owner(true);
4339
return dataset;
4440
}
4541

@@ -56,11 +52,7 @@ CreateBF16Dataset(int64_t dim, int64_t count, const std::vector<float>& fp32_dat
5652
}
5753

5854
auto dataset = Dataset::Make();
59-
dataset->NumElements(count)
60-
->Dim(dim)
61-
->Ids(ids)
62-
->Float16Vectors(bf16_data)
63-
->Owner(true);
55+
dataset->NumElements(count)->Dim(dim)->Ids(ids)->Float16Vectors(bf16_data)->Owner(true);
6456
return dataset;
6557
}
6658

0 commit comments

Comments
 (0)