DeepSeek’s two Huawei Ascend-specific libraries have separate jobs: DeepGEMM-Ascend provides matrix-multiplication kernels, while DeepEP-Ascend handles communication for machine-learning training and inference, including expert dispatch and combine in mixture-of-experts (MoE) models. Both target Ascend 950 hardware, and their published measurements describe specific Ascend workloads—not a head-to-head comparison with NVIDIA systems.
NeoTeo’s earlier coverage of the DeepSeek–Huawei collaboration covered the broader effort. These two libraries show how its software work divides between calculation and moving data.
Two libraries, two different jobs
DeepGEMM-Ascend is an Ascend implementation of DeepGEMM, a library for matrix multiplication. Its documented operations include BF16, FP8 and FP4 GEMM (general matrix multiplication), MQA logits and MegaMoE. The project says its API is compatible with DeepGEMM.
DeepEP-Ascend is a communication library. Its expert-parallel operations move data for MoE dispatch and combine: dispatch routes work to experts, and combine gathers the results. Its public buffer APIs align with those of DeepEP.
Hardware and software requirements
The libraries share an Ascend 950 target, but their documented prerequisites differ. DeepEP-Ascend also specifies inter-device connectivity requirements, so installing the code alone does not satisfy its hardware setup.
| Library | Function | Accelerator and connectivity | Documented software requirements |
| DeepGEMM-Ascend | Matrix-multiplication kernels, including BF16, FP8 and FP4 GEMM | Ascend 950 series | CANN 9.20, torch_npu, Python 3.10 or later, and C++20 support for <format> |
| DeepEP-Ascend | Communication for training and inference, including MoE dispatch and combine | Ascend 950 (A5), UBMEM connectivity, and UBC_CTP/URMA channels between participating ranks | Linux Ascend host, supported drivers and firmware, CANN, Python 3.10 or later, and matching PyTorch/torch_npu |
What the reported measurements cover
For one BF16×BF16 dense matrix-multiplication case, DeepSeek reports 431 TFLOPS on Ascend 950DT—99.8% of the stated 432 TFLOPS hardware limit. The case uses M=4096, N=7168 and K=16384, with CANN 9.20, bench_msprof and cold-L2 profiling. That is a result for a specified kernel workload, not an end-to-end model speed measurement.
DeepEP-Ascend reports bandwidth for dispatch and combine at two expert-parallel configurations. Its measurements used Ascend 950DT, CANN 9.2.0 and netlayer 1, with 16,384 tokens per rank, hidden size 7,168 and top-6 routing across 256 experts. The test setup used 10 warmups and 50 samples per rank with cache flushing, on a manually configured proof-of-concept HDK supplied to DeepSeek; that configuration was not publicly distributed.
| Operation | Configuration | Reported bandwidth |
| Dispatch | EP8 | 373–375 GB/s |
| Dispatch | EP128 | 313–320 GB/s |
| Combine | EP8 | 345–347 GB/s |
| Combine | EP128 | 272–278 GB/s |
The figures describe Ascend-specific tests. They do not provide a same-workload, same-methodology NVIDIA comparison, and the matrix-multiplication result does not establish whole-model speed.
API alignment is not a CUDA migration
API compatibility can make it easier to work with the named libraries, but it does not make arbitrary CUDA workloads run unchanged on Ascend. The documented tools still depend on Ascend hardware and Huawei’s software stack; developers must account for those platform-specific requirements when evaluating a move.
DeepEP-Ascend’s unfinished edges
DeepEP-Ascend labels its pipeline-parallel (PP), Engram and Bucket interfaces experimental or in progress. Its repository also lists reduce-scatter and all-reduce kernels, expert-load-balancing communication kernels, hybrid communication, CPU-backed Engram storage and graph capture as unfinished or unsupported. Those qualifications matter if a workload depends on those functions.