SuperAPI AI 工具集

matlab-diagnose-parfor

编程与开发

查看项目

更新于 10-16 02:02

技能介绍

用途

该技能用于诊断和修复 MATLAB 中 parfor 循环的变量分类错误。当用户遇到 parfor 相关问题(如“parfor loop has an error”“what's wrong with my parfor”“fix…”)时调用。

主要能力

  • 通过 MATLAB 代码分析器(checkcode / codeIssues / mcp__matlab__check_matlab_code)获取准确的 parfor 分类错误信息。
  • 根据错误消息识别错误类型,并套用对应的修复模式。
  • 覆盖常见分类错误,包括:
    • “Unable to classify variable 'X'”
    • “multiple sliced accesses...do not all have the same list of subscripts”
    • “Variable 'X' is indexed...but it is not a valid sliced output variable”
    • “accessed with an invalid combination of sliced indexing expressions and non-indexed reads”
    • “The temporary variable 'X' might be used after the PARFOR loop” / “Temporary variable 'X' must be set inside the parfor loop before it is used”
    • “When indexing a sliced variable with a nested for loop variable, the range...must be a row vector of positive constant numbers or variables”
    • “The entire array or structure 'X' is a broadcast variable”
  • 提供变量分类规则参考:Loop、Sliced、Broadcast、Reduction、Temporary,并强调变量必须恰好属于一个类别。
  • 提供多种修复模式,例如:结构体字段切片改为普通数组、多个切片下标改为单次赋值、无效切片下标预计算或重构、切片写入与整体读取冲突时提前提取常量信息、非标准归约改为整体变量归约、临时变量确保首次引用为完整赋值、条件更新改为切片输出加循环后归约。

使用方式

工作流程要求严格按顺序执行:

  1. 使用 mcp__matlab__check_matlab_code MCP 工具对包含 parfor 循环的文件运行代码分析器,不要通过 Bash 调用 MATLAB。读取确切错误消息。
  2. 根据消息识别错误类型。
  3. 套用匹配的修复模式。
  4. 对修复后的代码重新运行 mcp__matlab__check_matlab_code,确认没有 parfor 分类错误。

约定:始终先运行代码分析器再诊断;始终用分析器验证修复;不要运行代码(并行池可能慢或不可用);保持语义不变;尽量最小改动。

适用场景

  • 任何涉及 parfor 且用户报告问题或请求帮助的代码。
  • 用户遇到 parfor 分类错误(运行时或编辑器中)。
  • 用户想将 for 循环转换为 parfor。
  • 用户询问 parfor 为何报错、无法运行或因分类问题而变慢。
  • 准备对 parfor 代码提出修改建议之前。

限制

  • 不适用于 parfor 运行慢但属于性能/池选择问题而非分类错误的情况。
  • 不适用于工作进程需要设置/状态(路径、环境、工具箱)的情况。
  • 不适用于代码仅提及 parfor 但用户未提及任何问题的情况。
  • 不要凭记忆推断 parfor 分类规则,必须依赖代码分析器。
  • 不要运行代码,分析器可静态捕获所有分类错误。
  • 修复必须保持原 for 循环的语义,且尽量最小改动。

版权 2026 The MathWorks, Inc.