# FlagPerf **Repository Path**: dillonfzw/FlagPerf ## Basic Information - **Project Name**: FlagPerf - **Description**: No description available - **Primary Language**: Python - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2025-06-14 - **Last Updated**: 2025-06-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ![img_v3_02ge_ae47c9ed-de00-4ea1-aac3-bbca933f242g](https://github.com/user-attachments/assets/7802da86-1cc2-4d1b-96d4-b9bf501dda94) ![FlagAI](assets/imgs/logo.png) ---------- ## FlagPerf是什么 [![Lint Code Base](https://github.com/FlagOpen/FlagPerf/actions/workflows/super-linter.yml/badge.svg)](https://github.com/FlagOpen/FlagPerf/actions/workflows/super-linter.yml) **FlagPerf是智源研究院联合AI硬件厂商共建的一体化AI硬件评测引擎,旨在建立以产业实践为导向的指标体系,评测AI硬件在软件栈组合(模型+框架+编译器)下的实际能力。** ## 📣 FlagPerf评测亮点 ![cooperation](assets/imgs/overview.png) 1. **构建多维度评测指标体系,不止关注“耗时”:** FlagPerf 指标体系除了衡量“芯片能否支持特定模型训练”的功能正确性指标之外,还包含更多维度的性能指标、资源使用指标以及生态适配能力指标等。 > 指标详细介绍见 [这篇文章](https://mp.weixin.qq.com/s/rwTFsthioBty5W2P-Lg9iw) 2. **支持多样例场景及任务,覆盖大模型训练推理场景** FlagPerf 已经涵盖计算机视觉、自然语言处理、语音、多模态等领域的**30余个经典模型,80余个训练样例,**支持评测AI硬件的训练和推理能力,以及大模型场景的推理任务评测。 3. **支持多训练框架及推理引擎,灵活连接AI硬件与软件生态** **在训练任务场景中**,除了支持 PyTorch、TensorFlow,FlagPerf 还在积极与 PaddlePaddle、MindSpore 研发团队密切配合。作为国产训练框架的领军者,百度 Paddle团队、华为昇思MindSpore 团队正在将 Llama、GPT3 等明星模型集成至 FlagPerf 测试样例集。 **在推理任务场景中**,FlagPerf 适配了多家芯片厂商和训练框架研发团队的推理加速引擎,以更灵活地连接AI硬件与软件生态,拓宽评测的边界和效率,如英伟达TensorRT、昆仑芯XTCL(XPU Tensor Compilation Library)、天数智芯IxRT(Iluvatar CoreX RunTime)、PyTorch TorchInductor。 4. **支持多测试环境,综合考察单卡、单机、多机性能** 为全面评估国产AI芯片多样性、可扩展性、实际应用模拟情况,FlagPerf 设定了单卡、单机(通常是8卡)、多机三个测试环境,为不同的测试环境匹配了不同测试样例场景和任务。 > 注:当前FlagPerf在保证测试环境除芯片外其他条件一致的情况下,进行芯片本身的离线批处理评测,暂不支持集群和客户端的性能评估。 5. **严格审核参评代码,关注“结果公平”,更关注“过程公正”** 测试由智源研究院与众多芯片厂商联合展开。总体原则是确保客观、公平地评估芯片的通用性能,限制厂商开展有针对性的定制优化。在确定测试模型之后,首先由芯片厂商进行模型适配,这个过程中**只允许厂商进行分布式通信、批数据量(batch size)等和硬件执行强相关的方面的代码修改**,以确保模型能够在芯片上高效运行。其次由智源研究院依托基准测试平台FlagPerf对芯片能力开展测试,并确保测试过程顺利,芯片性能和稳定性得到最佳发挥。同时,**所有测试代码均已开源,测试过程、数据可复现。** 🎯 未来智源及众多AI硬件、框架团队还将共同拓展FlagPerf的评测场景,如开展集群性能的整体评估,以更全面的评估国产软硬件的性能。 ## News - [4 Jun 2024]支持算子评测板块. [#562](https://github.com/FlagOpen/FlagPerf/pull/562) - [20 May 2024]支持FlagPerf在容器内启动评测. [#542](https://github.com/FlagOpen/FlagPerf/pull/542) - [6 May 2024]支持LLaMA3-8B megatron-core预训练. [#526](https://github.com/FlagOpen/FlagPerf/pull/526) - [1 Apr 2024]支持基础规格评测板块. [#496](https://github.com/FlagOpen/FlagPerf/pull/496) - [15 Jan 2024]支持megatron-Llama 70B预训练. [#389](https://github.com/FlagOpen/FlagPerf/pull/389) - [27 Oct 2023]支持Torch-llama2 7B预训练,[#289](https://github.com/FlagOpen/FlagPerf/pull/289) - [7 Oct 2023]支持Paddle-GPT3 预训练,[#233](https://github.com/FlagOpen/FlagPerf/pull/233) - [27 Sep 2023]发布v1.0版本,支持20余个经典模型,50余个训练样例,支持多家芯片厂商的训练或推理评测 [#v1.0](https://github.com/FlagOpen/FlagPerf/releases/tag/1.0) - [3 Aug 2023]支持推理框架, 支持常见基础模型的离线批推理评测 [#136](https://github.com/FlagOpen/FlagPerf/pull/136)
Full News - [31 Oct 2023]支持Torch-Aquila 7B预训练,[#299](https://github.com/FlagOpen/FlagPerf/pull/299) - [8 Feb 2023]支持Tensorflow框架[#7](https://github.com/FlagOpen/FlagPerf/pull/7) - [6 Feb 2023]昆仑芯作为合作厂商进入共建生态 [#6](https://github.com/FlagOpen/FlagPerf/pull/6) - [Dec 2022]天数智芯、百度PaddlePaddle作为最早一批厂商参与初版共建开发
## 支持列表 基础规格列表:
编号 规格名称 规格类型 英伟达 沐曦 昇腾
1 FP64算力 算力 算子或原语,
厂商专用工具
N/A N/A
2 FP32算力 算力 算子或原语,
厂商专用工具
算子或原语 厂商专用工具
3 TF32算力 算力 算子或原语,
厂商专用工具
算子或原语 N/A
4 FP16算力 算力 算子或原语,
厂商专用工具
算子或原语 厂商专用工具
5 BF16算力 算力 算子或原语,
厂商专用工具
算子或原语 厂商专用工具
6 INT8算力 算力 厂商专用工具 厂商专用工具 厂商专用工具
7 主存储带宽 存储 算子或原语,
厂商专用工具
算子或原语 N/A
8 主存储容量 存储 算子或原语,
厂商专用工具
算子或原语 N/A
9 CPU-芯片互连 互联 算子或原语,
厂商专用工具
N/A 厂商专用工具
10 服务器内P2P直连 互联 算子或原语,
厂商专用工具
N/A 厂商专用工具
11 服务器内MPI直连 互联 算子或原语,
厂商专用工具
N/A N/A
12 跨服务器P2P直连 互联 算子或原语,
厂商专用工具
N/A N/A
13 跨服务器MPI直连 互联 算子或原语,
厂商专用工具
N/A N/A
算子列表:
编号 规格名称 算子库 英伟达
1 mm-FP16 nativetorch
flaggems
A100_40_SXM
2 sum-FP32 nativetorch
flaggems
A100_40_SXM
3 linear-FP16 nativetorch
flaggems
A100_40_SXM
... ... ... ...
训练列表: > [!TIP] > **请在表格下方向右滑动查看更多厂商**
编号模型名称模型类型英伟达沐曦昆仑芯天数智芯摩尔线程昇腾海光
1LLaMA3-70BLLMmegatronN/AN/AN/AN/AN/AN/A
2LLaMA3-8BLLMmegatronN/AN/AN/AN/AN/AN/A
3llava1.5-7BLMMdeep
speed
N/AN/AN/AN/AN/AN/A
4llama2_70bLLMmegatronmegatronmegatronN/AN/AN/AN/A
5Mixtral-8x7BmoeLLMmegatronN/AN/AN/AN/AN/AN/A
6Qwen1.5-moemoeLLMPAI-
megatron
N/AN/AN/AN/AN/AN/A
7llava1.5-13BLMMdeep
speed
N/AN/AN/AN/AN/AN/A
8llama2_7bLLMdeep
speed
,
megatron-
deep
speed
megatron-deep
speed
deep
speed
deep
speed
deep
speed
N/AN/A
9aquila2_70bLLMflagscale
megatron
N/AN/Aflagscale
megatron
flagscale
megatron
flagscale
megatron
flagscale
megatron
10aquila2_7b
(finetune)
LLMflagscale
megatron
N/AN/AN/AN/AN/AN/A
11chatglm3_6bLLMdeep
speed
N/AN/AN/AN/AN/AN/A
12aquila2_7bLLMflagscale
megatron
flagscale
megatron
flagscale
megatron
flagscale
megatron
flagscale
megatron
flagscale
megatron
flagscale
megatron
13aquila2_34bLLMflagscale
megatron
N/AN/Aflagscale
megatron
flagscale
megatron
flagscale
megatron
flagscale
megatron
14baichuan2
13b
LLMdeep
speed
deep
speed
deep
speed
deep
speed
N/AN/AN/A
15glmNLPpytorchpytorchpytorchpytorchN/AN/Apytorch
16resnet50CVpytorch,
tensorflow2
pytorchpytorchpytorchpytorchN/AN/A
17retinanetCVpytorchpytorchpytorchpytorchpytorchN/AN/A
18bert_hfNLPpytorchpytorchN/ApytorchpytorchN/AN/A
19bigtransferCVpytorchpytorchpytorchpytorchN/AN/AN/A
20cpmNLPpytorchpytorchpytorchpytorchN/AN/AN/A
21efficientnetCVpytorchpytorchpytorchpytorchN/AN/AN/A
22faster_rcnnCVpytorchpytorchpytorchpytorchN/AN/AN/A
23mask_rcnnCVpytorchpytorchpytorchpytorchN/AN/AN/A
24mobilenetv2CVpytorchpytorchpytorchpytorchN/AN/AN/A
25swin
transformer
CVpytorchpytorchpytorchpytorchN/AN/AN/A
26t5_smallNLPpytorchpytorchpytorchpytorchN/AN/AN/A
27transformerNLPpytorchpytorchpytorchpytorchN/AN/AN/A
28bertNLPpaddle,
pytorch
N/Apaddle, pytorchpaddle, pytorchN/AN/AN/A
29detrCVpytorchpytorchpytorchN/AN/AN/AN/A
30distilbertNLPpytorchpytorchpytorchN/AN/AN/AN/A
31gpt2LLMpytorchpytorchpytorchN/AN/AN/AN/A
32longformerNLPpytorchpytorchpytorchN/AN/AN/AN/A
33tacotron2AudiopytorchN/ApytorchpytorchN/AN/AN/A
34transformer
xl
NLPpytorchpytorchpytorchN/AN/AN/AN/A
35vitCVpytorchpytorchpytorchpytorchN/AN/AN/A
36wav2vec2AudiopytorchpytorchpytorchN/AN/AN/AN/A
37WaveGlowAudiopytorchpytorchN/AN/AN/AN/AN/A
38DLRMRSpytorchN/AN/AN/AN/AN/AN/A
39gpt3_13BLLMpaddlepaddleN/AN/AN/AN/AN/A
40gpt3_6.7BLLMpaddlepaddleN/AN/AN/AN/AN/A
41llama1_13BLLMpaddleN/AN/AN/AN/AN/AN/A
42llama1_7BLLMpaddlepaddleN/AN/AN/AN/AN/A
43llama2_7b
finetune
LLMpytorchN/AN/AN/AN/AN/AN/A
44MOFlowAI4scipytorchN/AN/AN/AN/AN/AN/A
推理列表:
编号 模型名称 模型类型 英伟达 昆仑芯 天数智芯 腾讯九霄 沐曦 海飞科
1 resnet50 CV f32/f16 f32/f16 f16 f16 f32/f16 N/A
2 BertLarge NLP f32/f16 W32A16 f16 N/A f32/f16 N/A
3 VisionTransformer CV f32/f16 W32A16 N/A N/A f32/f16 N/A
4 Yolov5_large CV f32/f16 f32 f16 N/A f32/f16 N/A
5 Stable Diffusion v1.4 MultiModal f32/f16 f32 N/A N/A f32/f16 N/A
6 SwinTransformer CV f32/f16 W32A16 N/A N/A f32/f16 N/A
7 Llama2-7B-mmlu NLP f32/f16 N/A N/A N/A f32/f16 f32/f16
8 Aquila-7B-mmlu LLM fp16 N/A N/A N/A f16 N/A
9 SegmentAnything MultiModal fp16 W32A16 N/A N/A f32/f16 N/A
10 DeepSeek-7B MMLU LLM fp16 N/A N/A N/A N/A N/A
11 LLaMA3-8B MMLU LLM fp16 N/A N/A N/A N/A N/A
## 如何使用FlagPerf进行AI硬件评测 ### 基础环境确认 #### 物理机器内启动[默认] 1. 安装docker,python 2. 确保硬件驱动、网络、硬件虚拟化等服务器基础配置齐全 1. 确保可连中国大陆可访问网站,速率正常 2. 确保可在容器内找到硬件 3. 确保各服务器间root帐号的ssh信任关系和sudo免密 4. 确保monitor相关工具已安装:包括cpu(sysstat)、内存(free)、功耗(ipmitool)、系统信息(加速卡状态查看命令)。例如ubuntu系统中,使用apt install [sysstat/ipmitool]安装 #### 容器内启动 1. 设置环境变量 ```bash export EXEC_IN_CONTAINER=True ``` 2. 确保容器内硬件驱动、网络、硬件虚拟化等服务器基础配置齐全 1. 确保可连中国大陆可访问网站,速率正常 2. 确保容器镜像、容器内软件包对应版本安装正确 3. 确保可在容器内找到硬件 4. 确保各服务器间root帐号的ssh信任关系和sudo免密 5. 确保monitor相关工具已安装:包括cpu(sysstat)、内存(free)、功耗(ipmitool)、系统信息(加速卡状态查看命令)。例如ubuntu系统中,使用apt install [sysstat/ipmitool]安装 更多阅读: 1. [容器内启动评测简述](./docs/utils/definitions/IN_CONTAINER_LAUNCH.md) ## 基础规格评测启动说明 1. **下载FlagPerf并部署** ```bash # 先各服务器间root帐号的ssh信任关系和sudo免密配置 git clone https://github.com/FlagOpen/FlagPerf.git cd FlagPerf/base/ ``` 2. **修改机器配置文件** ```bash cd FlagPerf/base/ vim configs/host.yaml ``` 具体项修改方式及原则见[基础规格文档](https://github.com/FlagOpen/FlagPerf/blob/main/docs/base/base-case-doc.md)中的**运行时流程**章节 3. **启动测试** ```bash cd FlagPerf/base/ sudo python3 run.py ``` ### 算子评测启动说明 1. 同基础规格评测 ### 训练评测启动说明 1. **下载FlagPerf并部署** ```Bash # 先各服务器间root帐号的ssh信任关系和sudo免密配置 git clone https://github.com/FlagOpen/FlagPerf.git cd FlagPerf/training/ pip3 install -r requirements.txt ``` 2. **修改机器配置文件** ```Bash cd Flagperf/training/ vim run_benchmarks/config/cluster_conf.py ``` 集群配置文件主要包括集群主机列表和SSH端口,修改`HOSTS`和`SSH_PORT`为机器实际地址 ```Bash '''Cluster configs''' #Hosts to run the benchmark. Each item is an IP address or a hostname. HOSTS = ["10.1.2.3", "10.1.2.4", "10.1.2.5", "10.1.2.6"] #ssh connection port SSH_PORT = "22" ``` 3. **修改模型配置文件** ```Bash cd Flagperf/training/ vim run_benchmarks/config/test_conf.py ``` 必改项: ```Bash VENDOR = "nvidia" #选择本次运行的硬件 FLAGPERF_PATH="" # FlagPerf项目路径,如"/home/FlagPerf/training" CASES={} # 本次运行的测例,按照对应模型readme准备好数据,修改模型对应的地址 #如运行"bert:pytorch_1.8:A100:1:8:1": "/raid/home_datasets_ckpt/bert/train/",需要把:后面的路径替换为本地路径 ``` 4. **启动测试** ```Bash python3 ./run_benchmarks/run.py sudo python3 ./run_benchmarks/run.py ``` 5. **查看日志** ```Bash cd result/run2023XXXX/运行模型/ # ls round1 # ls round1/ 10.1.2.2_noderank0 # cd 10.1.2.2_noderank0/ # ls cpu_monitor.log pwr_monitor.log rank2.out.log rank5.out.log start_pytorch_task.log mem_monitor.log rank0.out.log rank3.out.log rank6.out.log nvidia_monitor.log rank1.out.log rank4.out.log rank7.out.log # tail -n 6 rank0.out.log [PerfLog] {"event": "STEP_END", "value": {"loss": 2.679504871368408, "embedding_average": 0.916015625, "epoch": 1, "end_training": true, "global_steps": 3397, "num_trained_samples": 869632, "learning_rate": 0.000175375, "seq/s": 822.455385237589}, "metadata": {"file": "/workspace/flagperf/training/benchmarks/cpm/pytorch/run_pretraining.py", "lineno": 127, "time_ms": 1669034171032, "rank": 0}} [PerfLog] {"event": "EVALUATE", "metadata": {"file": "/workspace/flagperf/training/benchmarks/cpm/pytorch/run_pretraining.py", "lineno": 127, "time_ms": 1669034171032, "rank": 0}} [PerfLog] {"event": "EPOCH_END", "metadata": {"file": "/workspace/flagperf/training/benchmarks/cpm/pytorch/run_pretraining.py", "lineno": 127, "time_ms": 1669034171159, "rank": 0}} [PerfLog] {"event": "TRAIN_END", "metadata": {"file": "/workspace/flagperf/training/benchmarks/cpm/pytorch/run_pretraining.py", "lineno": 136, "time_ms": 1669034171159, "rank": 0}} [PerfLog] {"event": "FINISHED", "value": {"e2e_time": 1661.6114165782928, "training_sequences_per_second": 579.0933420700227, "converged": true, "final_loss": 3.066718101501465, "final_mlm_accuracy": 0.920166015625, "raw_train_time": 1501.713, "init_time": 148.937}, "metadata": {"file": "/workspace/flagperf/training/benchmarks/cpm/pytorch/run_pretraining.py", "lineno": 158, "time_ms": 1669034171646, "rank": 0}} ``` ### 推理评测启动说明 1. **下载FlagPerf并部署** ```Bash # 先各服务器间root帐号的ssh信任关系和sudo免密配置 git clone https://github.com/FlagOpen/FlagPerf.git cd FlagPerf/inference/ pip3 install -r requirements.txt ``` 2. **修改机器配置文件** ```Bash cd Flagperf/inference/ vim configs/host.yaml ``` 集群配置文件主要包括集群主机列表和SSH端口,修改`HOSTS`和`SSH_PORT`为机器实际地址 ```Bash #必须修改项 FLAGPERF_PATH: "/home/FlagPerf/inference" #FlagPerf inference 路径 HOSTS: ["127.0.0.1"] # 机器地址 VENDOR = "nvidia" #测试机器对象,nvidia/kunlunxin/iluvatar CASES: #待测case,记得修改数据地址 "resnet50:pytorch_1.13": "/raid/dataset/ImageNet/imagenet/val" ``` 3. **用户需要根据评测对象,配置configs//configuration.yaml,如不修改可用默认配置** ```Bash batch_size: 256 # 1 item(like 1 sequence, 1 image) flops # Attention! For transformer decoder like bert, 1 token cause 2*param flops, so we need 2*length*params like 2*512*0.33B here # format: a_1*a*2*...*a_nea_0,like 2*512*0.33e9(bert) or 4.12e9(resnet50) flops: 4.12e9 fp16: true compiler: tensorrt num_workers: 8 log_freq: 30 repeat: 5 # skip validation(will also skip create_model, export onnx). Assert exist_onnx_path != null no_validation: false # set a real onnx_path to use exist, or set it to anything but null to avoid export onnx manually(like torch-tensorrt) exist_onnx_path: null # set a exist path of engine file like resnet50.trt/resnet50.plan/resnet50.engine exist_compiler_path: null ``` 必改项: ```Bash VENDOR = "nvidia" #选择本次运行的硬件 FLAGPERF_PATH="" # FlagPerf项目路径,如"/home/FlagPerf/training" CASES={} # 本次运行的测例,按照对应模型readme准备好数据,修改模型对应的地址 #如运行"bert:pytorch_1.8:A100:1:8:1": "/raid/home_datasets_ckpt/bert/train/",需要把:后面的路径替换为本地路径 ``` 4. **启动测试** ```Bash sudo python inference/run.py ``` ### 生成式推理评测启动说明 1. **下载FlagPerf并部署** ```Bash # 按照FlagPerf/inference中安装相关环境 git clone https://github.com/FlagOpen/FlagPerf.git cd FlagPerf/inference/ pip3 install -r requirements.txt ``` 2. **修改机器配置文件** ```Bash cd Flagperf/generate/ vim host.yaml ``` ```Bash #必须修改项 data_path: "/Xsum.csv" #数据路径 model_path: "/llama3_70b_hf"#模型路径,该测量的标程应选用Llama3 70b进行测量 VENDOR :"nvidia" #测试机器对象,nvidia/kunlunxin engine :"hf" #推理框架类型,现支持vllm、huggingface。推理框架需自己本地配置 log_path :"/log" #日志路径 config_path :"./host.yaml" #host.yaml文件所在路径 nproc_per_node: 8 #参与推理评测的GPU数量 chip:"A100_40_SXM" #芯片名称 ``` 3. **用户需要根据评测对象,配置tasks///task.yaml** ```Bash # 必改项 GPU_NAME: "A100_40_SXM" #Theoretical FLOPs peak of the GPU for different precision computations (measured in TFLOPs) TFLOPS_FP16:312 ``` ```Bash # 若不修改则采用默认任务数量配置,需要保证总推理评测时间在5-15分钟内完成且并发数不应高于256 task_nums: 256 ``` 4. **启动测试** ```Bash sudo python generate/main.py ``` - 更多基础规格/训练/推理说明见[基础规格文档](https://github.com/FlagOpen/FlagPerf/blob/main/docs/base/base-case-doc.md),[训练文档](https://github.com/FlagOpen/FlagPerf/blob/main/training/README.md)和[推理文档](https://github.com/FlagOpen/FlagPerf/blob/main/docs/inference/inference-case-doc.md) [生成式推理文档](https://github.com/FlagOpen/FlagPerf/blob/main/docs/generate/generate-case-doc.md) ## 参与共建FlagPerf 如需参与共建FlagPerf基础规格、训练、推理评测,请参考详细文档,依次位于[基础规格文档目录](https://github.com/shh2000/FlagPerf/tree/ud0401/docs/base)、[训练文档目录](https://github.com/shh2000/FlagPerf/tree/ud0401/docs/training)、[推理文档目录](https://github.com/shh2000/FlagPerf/tree/ud0401/docs/inference)。 为了更直观的展示厂商参与共建的实际工作量,下面给出6个已经合并进FlagPerf,面向不同特征厂商的Pull Request。 1. 模型训练适配适配 - **第一次参与训练**适配工作的内容较多。除了适配模型case外,还需要适配厂商的dockerfile、monitor等,如[#246](https://github.com/FlagOpen/FlagPerf/pull/246) - **后续参与训练**适配工作量较小: - 如厂商以**cuda兼容**路线设计软硬件,典型适配case [#170](https://github.com/FlagOpen/FlagPerf/pull/170) - 如厂商**不兼容cuda**,则需要额外修改后端通信方案等等,典型适配case [#288](https://github.com/FlagOpen/FlagPerf/pull/288)。当case较复杂时,可能需要重写部分计算方式、半精度接口等,如[#158](https://github.com/FlagOpen/FlagPerf/pull/158)。 2. 模型推理适配 - **第一次参与推理**适配的工作内容较多。除了适配case外,还包括厂商的dockerfile、编译器实现方式、monitor等,如 [#256](https://github.com/FlagOpen/FlagPerf/pull/256) - **后续参与推理**适配时,通常不需要适配工作量、仅需运行软件完成测试。如 [#227](https://github.com/FlagOpen/FlagPerf/pull/227) ## FlagPerf合作伙伴 ![cooperation](assets/imgs/coop.png) ## 许可证 本项目基于Apache 2.0 license。
本项目的代码来源于不同的代码仓库,关于各模型测试Case的情况,请参考各模型测试Case目录的文档。 ## 联系我们 如有疑问,可以发送邮件至flagperf@baai.ac.cn,或在[issue](https://github.com/FlagOpen/FlagPerf/issues)中说明情况