18 Star 46 Fork 703

Ascend/op-plugin

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
.gitee
ci
codegen
examples/cpp_extension
op_plugin
config
include
ops
aclops
atb
opapi
sparse
AdaptiveAvgPool2dKernelNpuOpApi.cpp
AdaptiveMaxPool3dBackwardKernelNpuOpApi.cpp
AdaptiveMaxPool3dKernelNpuOpApi.cpp
AddKernelNpuOpApi.cpp
AddLayerNormBackwardKernelNpuOpApi.cpp
AddLayerNormKernelNpuOpApi.cpp
AddbmmKernelNpuOpApi.cpp
AddcdivKernelNpuOpApi.cpp
AddcmulKernelNpuOpApi.cpp
AddmmKernelNpuOpApi.cpp
AddmvKernelNpuOpApi.cpp
AffineGridGeneratorKernelNpuOpApi.cpp
AllGatherBaseMatmulKernelNpuOpApi.cpp
AllKernelNpuOpApi.cpp
AllToAllvGmmNpuOpApi.cpp
AminmaxKernelNpuOpApi.cpp
AmpForeachNonFiniteCheckAndUnscaleKernelNpuOpApi.cpp
AmpUpdateScaleKernelNpuOpApi.cpp
AntiQuantKernelNpuOpApi.cpp
AnyKernelNpuOpApi.cpp
ApplyRotaryPosEmbNpuOpApi.cpp
ArangeKernelNpuOpApi.cpp
ArgSortKernelNpuOpApi.cpp
ArgmaxKernelNpuOpApi.cpp
ArgminKernelNpuOpApi.cpp
Atan2KernelNpuOpApi.cpp
AttnSoftMaxBackwardKernelNpuOpApi.cpp
AvgPool2dBackwardKernelNpuOpApi.cpp
AvgPool2dKernelNpuOpApi.cpp
AvgPool3dBackwardKernelNpuOpApi.cpp
AvgPool3dKernelNpuOpApi.cpp
BaddbmmKernelNpuOpApi.cpp
BatchGatherMatmulKernelNpuOpApi.cpp
BatchNormBackwardKernelNpuOpApi.cpp
BatchNormBackwardReduceKernelNpuOpApi.cpp
BatchNormElemtKernelNpuOpApi.cpp
BatchNormKernelOpApi.cpp
BernoulliKernelNpuOpApi.cpp
BincountKernelNpuOpApi.cpp
BitwiseAndKernelNpuOpApi.cpp
BitwiseOrKernelNpuOpApi.cpp
BitwiseXorKernelNpuOpApi.cpp
BmmKernelNpuOpApi.cpp
BucketizeKernelNpuOpApi.cpp
CastKernelNpuOpApi.cpp
CatKernelNpuOpApi.cpp
ComplexKernelNpuOpApi.cpp
ConstantPadNdKernelNpuOpApi.cpp
ConvDepthwise2dKernelNpuOpApi.cpp
ConvertWeightToINT4PackKernelNpuOpApi.cpp
ConvolutionBackwardKernelNpuOpApi.cpp
ConvolutionKernelNpuOpApi.cpp
CountNonZeroKernelNpuOpApi.cpp
CtcLossKernelNpuOpApi.cpp
CummaxKernelNpuOpApi.cpp
CumminKernelNpuOpApi.cpp
CumsumKernelNpuOpApi.cpp
DeepNormBackwardKernelOpApi.cpp
DeepNormKernelOpApi.cpp
DequantBiasNpuOpApi.cpp
DequantRopeQuantKVCacheKernelNpuOpApi.cpp
DequantSwigluQuantOpApi.cpp
DequantizeKernelNpuOpApi.cpp
DistributeBarrierOpApi.cpp
DivKernelNpuOpApi.cpp
DropoutGenMaskKernelNpuOpApi.cpp
DropoutKernelNpuOpApi.cpp
DynamicQuantKernelNpuOpApi.cpp
EmbeddingBagNpuOpApi.cpp
EmbeddingKernelNpuOpApi.cpp
EmbeddingRenormKernelNpuOpApi.cpp
EqKernelNpuOpApi.cpp
EqualKernelNpuOpApi.cpp
ExponentialKernelNpuOpApi.cpp
EyeKernelNpuOpApi.cpp
FFNKernelNpuOpApi.cpp
FFTShiftKernelNpuOpApi.cpp
FFTc2cKernelNpuOpApi.cpp
FFTc2rKernelNpuOpApi.cpp
FFTr2cKernelNpuOpApi.cpp
FakeQuantizeKernelNpuOpApi.cpp
FftRfftKernelNpuOpApi.cpp
FillKernelNpuOpApi.cpp
FlashAttentionKernelNpuOpApi.cpp
FlashAttentionV2KernelNpuOpApi.cpp
FloorDivideKernelNpuOpApi.cpp
ForeachAbsKernelOpApi.cpp
ForeachAcosKernelNpuOpApi.cpp
ForeachAddKernelNpuOpApi.cpp
ForeachAddScalarKernelNpuOpApi.cpp
ForeachAddcdivScalarKernelNpuOpApi.cpp
ForeachAddcdivScalarListKernelNpuOpApi.cpp
ForeachAddcdivTensorKernelNpuOpApi.cpp
ForeachAddcmulScalarKernelNpuOpApi.cpp
ForeachAddcmulScalarListKernelNpuOpApi.cpp
ForeachAddcmulTensorKernelNpuOpApi.cpp
ForeachAsinKernelNpuOpApi.cpp
ForeachAtanKernelNpuOpApi.cpp
ForeachClampMaxKernelNpuOpApi.cpp
ForeachCopyKernelOpApi.cpp
ForeachCosKernelNpuOpApi.cpp
ForeachCoshKernelNpuOpApi.cpp
ForeachDivKernelNpuOpApi.cpp
ForeachErfKernelNpuOpApi.cpp
ForeachErfcKernelNpuOpApi.cpp
ForeachExpKernelNpuOpApi.cpp
ForeachExpm1KernelNpuOpApi.cpp
ForeachLerpListKernelNpuOpApi.cpp
ForeachLerpScalarKernelNpuOpApi.cpp
ForeachLog10KernelNpuOpApi.cpp
ForeachLog1pKernelNpuOpApi.cpp
ForeachLog2KernelNpuOpApi.cpp
ForeachLogKernelNpuOpApi.cpp
ForeachMaximumKernelNpuOpApi.cpp
ForeachMinimumKernelNpuOpApi.cpp
ForeachMulKernelNpuOpApi.cpp
ForeachMulScalarKernelOpApi.cpp
ForeachNegKernelNpuOpApi.cpp
ForeachNormKernelOpApi.cpp
ForeachPowKernelNpuOpApi.cpp
ForeachPowScalarAndTensorKernelNpuOpApi.cpp
ForeachPowScalarKernelNpuOpApi.cpp
ForeachReciprocalKernelNpuOpApi.cpp
ForeachRoundOffNumberKernelNpuOpApi.cpp
ForeachSigmoidKernelOpApi.cpp
ForeachSignKernelNpuOpApi.cpp
ForeachSinKernelNpuOpApi.cpp
ForeachSinhKernelNpuOpApi.cpp
ForeachSqrtKernelNpuOpApi.cpp
ForeachSubKernelNpuOpApi.cpp
ForeachSubScalarInplaceKernelOpApi.cpp
ForeachTanKernelNpuOpApi.cpp
ForeachTanhKernelNpuOpApi.cpp
ForeachZeroInplaceKernelNpuOpApi.cpp
FusedAdamWKernelNpuOpApi.cpp
FusedInferAttentionScoreKernelNpuOpApi.cpp
GatherBackwardKernelNpuOpApi.cpp
GatherKernelNpuOpApi.cpp
GeGluKernelNpuOpApi.cpp
GeKernelNpuOpApi.cpp
GemmaRmsNormKernelOpApi.cpp
GmmAllToAllvNpuOpApi.cpp
GridSampler3dBackwardKernelNpuOpApi.cpp
GroupNormBackwardKernelNpuOpApi.cpp
GroupedMatmulFinalizeRoutingKernelNpuOpApi.cpp
GroupedMatmulKernelNpuOpApi.cpp
GroupedMatmulSwigluQuantNpuOpapi.cpp
GtKernelNpuOpApi.cpp
Im2colKernelNpuOpApi.cpp
IndexAddKernelNpuOpApi.cpp
IndexFillKernelNpuOpApi.cpp
IndexKernelNpuOpApi.cpp
IndexPutKernelNpuOpApi.cpp
IndexSelectKernelNpuOpApi.cpp
InterleaveRopeNpuOpApi.cpp
IsInKernelNpuOpApi.cpp
KthvalueKernelNpuOpApi.cpp
KvRmsNormRopeCacheNpuOpApi.cpp
L1LossKernelNpuOpApi.cpp
LayerNormBackwardKernelNpuOpApi.cpp
LayerNormKernelNpuOpApi.cpp
LeKernelNpuOpApi.cpp
LinalgNormKernelNpuOpApi.cpp
LinalgQrKernelNpuOpApi.cpp
LinalgSolveTriangularKernelNpuOpApi.cpp
LinearKernelNpuOpApi.cpp
LinspaceKernelNpuOpApi.cpp
LogKernelNpuOpApi.cpp
LogSigmoidNpuOpApi.cpp
LogSumExpKernelNpuOpApi.cpp
LogdetKernelNpuOpApi.cpp
LogicalOrKernelNpuOpApi.cpp
LogitBackwardKernelOpApi.cpp
LogitKernelNpuOpApi.cpp
LtKernelNpuOpApi.cpp
MaskedFillKernelNpuOpApi.cpp
MaskedScatterKernelNpuOpApi.cpp
MaskedSelectKernelNpuOpApi.cpp
MaskedSoftMaxKernelNpuOpApi.cpp
MatmulAllReduceBaseKernelNpuOpApi.cpp
MatmulBackwardKernelNpuOpApi.cpp
MatmulDoubleBackwardKernelNpuOpApi.cpp
MatmulKernelNpuOpApi.cpp
MatmulReduceScatterBaseKernelNpuOpApi.cpp
MaxKernelNpuOpApi.cpp
MaxPool2dWithIndicesKernelNpuOpApi.cpp
MaxPool3dWithIndicesBackwardKernelNpuOpApi.cpp
MaxPool3dWithIndicesKernelNpuOpApi.cpp
MeanKernelNpuOpApi.cpp
MinKernelNpuOpApi.cpp
MishKernelNpuOpApi.cpp
MlaPrologV2KernelNpuOpApi.cpp
MmKernelNpuOpApi.cpp
MoeDistributeCombineAddRmsNormKernelOpApi.cpp
MoeDistributeCombineKernelOpApi.cpp
MoeDistributeDispatchKernelOpApi.cpp
MoeFinalizeRoutingV2KernelNpuOpApi.cpp
MoeGatingTopKKernelNpuOpApi.cpp
MoeGatingTopKSoftmaxKernelNpuOpApi.cpp
MoeInitRoutingKernelNpuOpApi.cpp
MoeInitRoutingV2KernelNpuOpApi.cpp
MoeReRoutingOpApi.cpp
MseLossKernelNpuOpApi.cpp
MulKernelNpuOpApi.cpp
MultiHeadAttentionV2KernelNpuOpApi.cpp
MultilabelMarginLossKernelNpuOpApi.cpp
MultinomialKernelNpuOpApi.cpp
MvKernelNpuOpApi.cpp
NLLLoss2dBackwardKernelNpuOpApi.cpp
NLLLoss2dKernelNpuOpApi.cpp
NLLLossBackwardKernelNpuOpApi.cpp
NLLLossKernelNpuOpApi.cpp
NanToNumKernelNpuOpApi.cpp
NansumKernelNpuOpApi.cpp
NativeDropoutKernelNpuOpApi.cpp
NativeMultiHeadAttentionKernelNpuOpApi.cpp
NeKernelNpuOpApi.cpp
NonzeroKernelNpuOpApi.cpp
NormKernelNpuOpApi.cpp
NormalKernelNpuOpApi.cpp
OneHotKernelNpuOpApi.cpp
OnesKernelNpuOpApi.cpp
OnesLikeKernelNpuOpApi.cpp
PdistKernelNpuOpApi.cpp
PrefetchKernelNpuOpApi.cpp
PreluBackwardKernelNpuOpApi.cpp
ProdKernelNpuOpApi.cpp
PutKernelNpuOpApi.cpp
QuantMatmulKernelNpuOpApi.cpp
QuantScatterKernelNpuOpApi.cpp
QuantizeKernelNpuOpApi.cpp
RReluWithNoiseKernelNpuOpApi.cpp
RandomKernelNpuOpApi.cpp
RandpermKernelNpuOpApi.cpp
RangeKernelNpuOpApi.cpp
RemainderKernelNpuOpApi.cpp
RenormKernelNpuOpApi.cpp
RepeatInterLeaveKernelNpuOpApi.cpp
RepeatInterleaveBackwardKernelOpApi.cpp
RmsNormBackwardKernelOpApi.cpp
RmsNormKernelOpApi.cpp
RoiAlignBackwardKernelNpuOpApi.cpp
RoiAlignKernelNpuOpApi.cpp
RopeQuantKVCacheKernelNpuOpApi.cpp
RotaryMulBackwardKernelNpuOpApi.cpp
RotaryMulKernelNpuOpApi.cpp
RoundDecimalsKernelNpuOpApi.cpp
ScaledDotProductAttentionKernelNpuOpApi.cpp
ScatterAddKernelNpuOpApi.cpp
ScatterKernelNpuOpApi.cpp
ScatterListKernelNpuOpApi.cpp
ScatterNdUpdateKernelNpuOpApi.cpp
ScatterUpdateKernelNpuOpApi.cpp
SignKernelNpuOpApi.cpp
SilentCheckV2KernelNpuOpApi.cpp
SilentCheckV3KernelNpuOpApi.cpp
SlogdetKernelNpuOpApi.cpp
SmoothL1LossBackwrdKernelNpuOpApi.cpp
SmoothL1LossKernelNpuOpApi.cpp
SoftmaxKernelNpuOpApi.cpp
SortKernelNpuOpApi.cpp
SquareKernelNpuOpApi.cpp
StdKernelNpuOpApi.cpp
StdMeanKernelNpuOpApi.cpp
StftKernelNpuOpApi.cpp
SubKernelNpuOpApi.cpp
SumKernelNpuOpApi.cpp
TanhKernelNpuOpApi.cpp
ThresholdKernelNpuOpApi.cpp
TopKKernelNpuOpApi.cpp
TransQuantParamKernelNpuOpApi.cpp
TransfromBiasRescaleQKVKernelNpuOpApi.cpp
TransposeBatchMatmulKernelNPUOpApi.cpp
TrueDivideKernelNpuOpApi.cpp
UniformKernelNpuOpApi.cpp
Unique2KernelNpuOpApi.cpp
UniqueConsecutiveKernelNpuOpApi.cpp
UniqueDimKernelNpuOpApi.cpp
UpsampleBicubic2dAABackwardKernelNpuOpApi.cpp
UpsampleBicubic2dAAKernelNpuOpApi.cpp
UpsampleBicubic2dBackwardKernelNpuOpApi.cpp
UpsampleBicubic2dKernelNpuOpApi.cpp
UpsampleBilinear2dAABackwardKernelNpuOpApi.cpp
UpsampleBilinear2dAAKernelNpuOpApi.cpp
UpsampleBilinear2dBackwardKernelNpuOpApi.cpp
UpsampleBilinear2dKernelNpuOpApi.cpp
UpsampleLinear1dBackwardKernelNpuOpApi.cpp
UpsampleLinear1dKernelNpuOpApi.cpp
UpsampleNearest1dBackwardKernelNpuOpApi.cpp
UpsampleNearest1dKernelNpuOpApi.cpp
UpsampleNearest2dBackwardKernelNpuOpApi.cpp
UpsampleNearest2dKernelOpApi.cpp
UpsampleNearest3dBackwardKernelNpuOpApi.cpp
UpsampleNearest3dKernelOpApi.cpp
UpsampleNearestExact1dBackwardKernelNpuOpApi.cpp
UpsampleNearestExact1dKernelOpApi.cpp
UpsampleNearestExact2dBackwardKernelNpuOpApi.cpp
UpsampleNearestExact2dKernelOpApi.cpp
UpsampleNearestExact3dBackwardKernelOpApi.cpp
UpsampleNearestExact3dKernelOpApi.cpp
UpsampleTrilinear3dBackwardKernelNpuOpApi.cpp
UpsampleTrilinear3dKernelNpuOpApi.cpp
VarKernelNpuOpApi.cpp
WeightQuantBatchMatmulV2KernelNpuOpApi.cpp
WhereKernelNpuOpApi.cpp
ZerosKernelNpuOpApi.cpp
ZerosLikeKernelNpuOpApi.cpp
_UniqueKernelNpuOpApi.cpp
__Ior__KernelNpuOpApi.cpp
python
third_party
utils
CMakeLists.txt
test
.gitignore
LICENSE
OWNERS
README.md
SECURITYNOTE.md
Third_Party_Open_Source_Software_Notice
gencode.sh
克隆/下载
GmmAllToAllvNpuOpApi.cpp 3.11 KB
一键复制 编辑 原始数据 按行查看 历史
// Copyright (c) 2025 Huawei Technologies Co., Ltd
// All rights reserved.
//
// Licensed under the BSD 3-Clause License (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// https://opensource.org/licenses/BSD-3-Clause
//
// 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.
#include "op_plugin/AclOpsInterface.h"
#include "op_plugin/OpApiInterface.h"
#include "op_plugin/utils/op_api_common.h"
namespace op_api {
std::tuple<at::Tensor, at::Tensor> npu_gmm_alltoallv(const at::Tensor &gmm_x, const at::Tensor &gmm_weight,
c10::string_view hcom, int64_t ep_world_size, at::IntArrayRef send_counts, at::IntArrayRef recv_counts,
const c10::optional<at::Tensor> &send_counts_tensor,
const c10::optional<at::Tensor> &recv_counts_tensor, const c10::optional<at::Tensor> &mm_x,
const c10::optional<at::Tensor> &mm_weight, bool trans_gmm_weight, bool trans_mm_weight)
{
at::Tensor mm_y{nullptr};
int64_t bsk = 0;
for (auto &i : recv_counts) {
bsk += i;
}
int64_t n1 = trans_gmm_weight ? gmm_weight.size(1) : gmm_weight.size(2);
if (mm_x.has_value() && mm_weight.has_value()) {
const at::Tensor &mm_x_value = mm_x.value();
const at::Tensor &mm_weight_value = mm_weight.value();
int64_t bs = mm_x_value.size(0);
int64_t n2 = trans_mm_weight ? mm_weight_value.size(0) : mm_weight_value.size(1);
mm_y = at_npu::native::OpPreparation::apply_tensor_without_format({bs, n2}, mm_x_value.options());
}
auto y = at_npu::native::OpPreparation::apply_tensor_without_format({bsk, n1}, gmm_x.options());
const at::Tensor &mm_x_real = mm_x.value_or(at::Tensor());
const at::Tensor &mm_weight_real = mm_weight.value_or(at::Tensor());
const at::Tensor &send_count_tensor_real = send_counts_tensor.value_or(at::Tensor());
const at::Tensor &recv_count_tensor_real = recv_counts_tensor.value_or(at::Tensor());
const char *hcom_ptr = (char *)hcom.data();
EXEC_NPU_CMD(aclnnGroupedMatMulAlltoAllv,
gmm_x,
gmm_weight,
send_count_tensor_real,
recv_count_tensor_real,
mm_x_real,
mm_weight_real,
hcom_ptr,
ep_world_size,
send_counts,
recv_counts,
trans_gmm_weight,
trans_mm_weight,
y,
mm_y);
return std::tie(y, mm_y);
}
} // namespace op_api
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/ascend/op-plugin.git
git@gitee.com:ascend/op-plugin.git
ascend
op-plugin
op-plugin
master

搜索帮助