用途:针对已有 MATLAB 函数,迭代优化以让 GPU Coder 生成更快的 GPU MEX 或 CUDA 代码。触发场景包括用户提到 GPU Coder、codegen、CUDA、gpuPerformanceAnalyzer,或希望降低 GPU 内存、提升内核并行度、修复性能分析器诊断。不适用于无代码生成的工作流、coder.gpuConfig("exe") 独立可执行文件、Simulink GPU 代码生成、从零编写新函数、优化被调用的辅助函数、硬件配置或 CUDA 工具包安装,以及不涉及 GPU 的通用 MATLAB 调优。
主要能力:在会话临时目录中先对未修改文件运行 codegen 获取基线(默认 coder.gpuConfig("mex"),支持 mex、lib、dll;lib/dll 需设置 cfg.VerificationMode = 'SIL'),用 benchmarkMex 做收敛式基准测试(禁止对 GPU 用 tic/toc)。随后迭代应用 MATLAB 层结构优化,例如把不依赖循环变量的数组表达式提升到循环外、用隐式扩展替代显式循环、用掩码选择替代发散分支,每轮都验证数值等价并重新基准测试,最多 5 轮结构迭代。再运行 gpuPerformanceAnalyzer 获取 mldatx 报告并用 extractDiagnostics 提取诊断,按诊断 ID 映射修复,如 NoKernelFunPragma 加 coder.gpu.kernelfun、UseGpuInput 转换输入为 gpuArray、并行度不足时增加独立迭代、循环内重复内存拷贝时外提分配等,诊断修复另计最多 5 轮。
使用方式:先建立会话目录并把技能 scripts/ 加入路径,运行 codegen -config cfg <designFile> -args {<inputs>},再依次执行基准测试、结构优化、性能分析和诊断修复。等价性验证基于最多 5 组输入,double 容差 1e-6、single 1e-3、half 1e-2,整型与逻辑需精确相等,并需校验 NaN 位置。最终输出最佳版本文件、所用输入说明与耗时报告。
限制:仅优化主设计文件;exe 目标无法基准测试或验证等价,需改用 mex 或 lib/dll;SIL 不可用时应停止并报告,不得跳过基准测试;所有产物必须写入会话目录。