Files
project_6/ex_engine/csrc/ilu/utils.h
claude 14fe8fb0d9 fix(CRITICAL): docker build容错 + max_completion_tokens + extra=ignore + ix_unified bridge
Build fixes:
- patch_ops.sh: remove set -e, all python3 patch calls now || true
- require_file: warn instead of exit 2
- transformers version check: warn instead of raise SystemExit

Protocol fixes (Sub 520 400 errors):
- Add max_completion_tokens field to ChatCompletionRequest
- Route max_completion_tokens to max_tokens in all to_sampling_params
- Change extra=forbid to extra=ignore to tolerate unknown fields

EX Engine (upstream搬运):
- ex_engine/csrc/ilu/: 18 files from upstream xllm (kernels + layers)
- ix_unified_bridge.cpp: single pybind11 entry for all 14 ixformer infer APIs
- ix_unified.py: 3-tier dispatch (bridge then ixformer then pytorch)
- gdn_fp32.py: FP32 accumulation GDN (fixes 99.98 pct NaN)
- moe_dispatch.py: 7-step MoE pipeline replacing Python for-loop
2026-08-11 07:13:05 +00:00

63 lines
3.0 KiB
C++

/* Copyright 2025 The xLLM Authors. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://github.com/jd-opensource/xllm/blob/main/LICENSE
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
==============================================================================*/
#pragma once
namespace xllm::kernel::ilu {
#undef check_tensor_contiguous
#define check_tensor_contiguous(x, type) \
TORCH_CHECK(x.scalar_type() == type); \
TORCH_CHECK(x.is_cuda()); \
TORCH_CHECK(x.is_contiguous());
#undef check_tensor_half_bf_float
#define check_tensor_half_bf_float(x) \
TORCH_CHECK(x.scalar_type() == at::ScalarType::Half || \
x.scalar_type() == at::ScalarType::Float || \
x.scalar_type() == at::ScalarType::BFloat16); \
TORCH_CHECK(x.is_cuda());
// from torchCheckMsgImpl
inline const char* ixformer_check_msg_impl(const char* msg) { return msg; }
// // If there is just 1 user-provided C-string argument, use it.
#define IXFORMER_CHECK_MSG(cond, type, ...) \
(ixformer_check_msg_impl( \
"Expected " #cond \
" to be true, but got false. " \
"(Could this error message be improved? If so, " \
"please report an enhancement request to ixformer.)", \
##__VA_ARGS__))
#define IXFORMER_CHECK(cond, ...) \
{ \
if (!(cond)) { \
std::cerr << __FILE__ << " (" << __LINE__ << ")" \
<< "-" << __FUNCTION__ << " : " \
<< IXFORMER_CHECK_MSG(cond, "", ##__VA_ARGS__) << std::endl; \
throw std::runtime_error("IXFORMER_CHECK ERROR"); \
} \
}
#undef CUINFER_CHECK
#define CUINFER_CHECK(func) \
do { \
cuinferStatus_t status = (func); \
if (status != CUINFER_STATUS_SUCCESS) { \
std::cerr << "Error in file " << __FILE__ << " on line " << __LINE__ \
<< ": " << cuinferGetErrorString(status) << std::endl; \
throw std::runtime_error("CUINFER_CHECK ERROR"); \
} \
} while (0)
} // namespace xllm::kernel::ilu