文档

记忆功能的代码替换

这个话题向您展示如何开发一个代码替换库优化记忆功能的性能。这个具体的例子显示了如何定义代码代替memcpy函数。

交互开发代码替换库

  1. 开放的环境。笔了代码替换工具(crtool),在MATLAB命令行,输入:

    > > crtool
  2. 创建一个表。

    1. 从crtool菜单中,选择文件>新表

    2. 在右窗格中,命名表crl_table_memcpy。点击应用

  3. 创建一个条目。从crtool菜单中,选择文件>新条目>函数

  4. 创建输入参数。在函数下拉列表中,选择memcpy。出现在crtool算法信息。对于这个示例,把参数不明。

  5. 创建概念表示。概念描述函数的签名表示你想取代。在概念功能分段的crtool,指定返回参数,与日元数据类型无效的参数类型的指针,输入参数,u1和u2数据类型无效的参数类型和u3的指针数据类型无符号积分和参数类型的标量。

  6. 创建实现表示。实现表示描述优化函数的签名。对于这个示例,指定实现的参数具有相同的参数和属性作为概念性的顺序,选择使概念和实现参数类型相同复选框。

  7. 指定一个的名字替代函数函数原型

  8. 指定构建信息。单击构建信息选项卡窗格中打开构建需求。指定的文件(来源、头、对象),代码的代码生成器需要更换。对于这个示例,您不需要指定构建信息。

  9. 验证并保存。在映射信息选项卡上,单击验证输入。在crtool菜单,选择文件>保存表>保存

  10. 注册一个代码替换库。注册库创建一个由您指定的表。选择文件>生成注册文件。生成注册文件对话框,填写字段如图所示:

  11. 验证代码替换库。通过使用开放图书馆代码替换查看器,并验证指定的表和输入是正确的。配置您的模型使用的代码替换库,生成代码,验证按预期发生替换。如果发生异常行为,检查碰巧日志来解决。

编程开发代码替换库

  1. 开放的环境。从MATLAB菜单中,选择>函数

  2. 创建一个表。

    1. 创建一个函数来调用您的代码替换库表。该函数不应该参数并返回一个表对象。

    2. 创建一个表对象通过调用RTW.TflTable

    函数hTable = crl_table_memcpy ()%创建一个函数调用的代码替换库表% %创建表对象hTable = RTW.TflTable;
  3. 创建一个条目。由于这个例子代替一个函数,创建代码替换条目表通过调用入口函数RTW.TflCFunctionEntry

    函数hTable = crl_table_memcpy ()%创建代码替换库表% %创建表对象hTable = RTW.TflTable;% %创建一个条目hEntry = rtw.TflCFunctionEntry;
  4. 创建输入参数。由于这个例子代替一个函数,创建入口参数通过调用函数setTflCFunctionEntryParameters

    函数hTable = crl_table_memcpy ()%创建代码替换库表% %创建表对象hTable = RTW.TflTable;% %创建一个条目hEntry = RTW.TflCFunctionEntry;% %参数创建条目%设置调查“真实”函数返回void阻止它%被优化掉。setTflCFunctionEntryParameters (fcn_entry“关键”,“memcpy”,“优先”,90,“ImplementationName”,“memcpy_int”,“ImplementationHeaderFile”,“memcpy_int.h”,“调查”,真正的);
  5. 创建概念表示。概念描述函数的签名表示你想取代。有多种方法来创建概念表示。显式地指定参数属性,调用这个函数createAndAddConceptualArg

    函数hTable = crl_table_memcpy ()%创建代码替换库表% %创建表对象hTable = RTW.TflTable;% %创建一个条目hEntry = RTW.TflCFunctionEntry;% %参数创建条目setTflCFunctionEntryParameters (fcn_entry“关键”,“memcpy”,“优先”,90,“ImplementationName”,“memcpy_int”,“ImplementationHeaderFile”,“memcpy_int.h”,“调查”,真正的);% %创建概念论证arg = getTflArgFromString (hTable,“日元”,“void *”);参数。IOType =“RTW_IO_OUTPUT”;addConceptualArg (fcn_entry arg);arg = getTflArgFromString (hTable,‘u1’,“void *”);addConceptualArg (fcn_entry arg);arg = getTflArgFromString (hTable,“u2”,“void *”);addConceptualArg (fcn_entry arg);arg = getTflArgFromString (hTable,u3的,“size_t”);addConceptualArg (fcn_entry arg);
  6. 创建实现表示。实现表示描述优化函数的签名。有多种方法来创建实现表示。指定实施参数具有相同的参数和属性作为概念性的顺序,调用的函数copyConceptualArgsToImplementation。完整的条目添加到表通过调用函数addEntry

    函数hTable = crl_table_memcpy ()%创建代码替换库表% %创建表对象hTable = RTW.TflTable;% %创建一个条目hEntry = RTW.TflCFunctionEntry;% %参数创建条目setTflCFunctionEntryParameters (fcn_entry“关键”,“memcpy”,“优先”,90,“ImplementationName”,“memcpy_int”,“ImplementationHeaderFile”,“memcpy_int.h”,“调查”,真正的);% %创建概念论证arg = getTflArgFromString (hTable,“日元”,“void *”);参数。IOType =“RTW_IO_OUTPUT”;addConceptualArg (fcn_entry arg);arg = getTflArgFromString (hTable,‘u1’,“void *”);addConceptualArg (fcn_entry arg);arg = getTflArgFromString (hTable,“u2”,“void *”);addConceptualArg (fcn_entry arg);arg = getTflArgFromString (hTable,u3的,“size_t”);addConceptualArg (fcn_entry arg);% %创建概念表示copyConceptualArgsToImplementation (fcn_entry);% %将条目添加到表中hTable.addEntry (hEntry);
  7. 指定构建信息。在输入参数,指定文件(标题、来源、对象),代码生成器需要代码替换。对于这个示例,构建信息不是必需的。

  8. 验证并保存。从MATLAB通过选择菜单,保存自定义文件文件>保存。从命令行,验证代码替换库表通过调用它:

    > > hTable = crl_table_memcpy
  9. 注册代码替换库。注册创建一个代码替换库通过定义库名称,代码替换表、和其他信息。创建一个注册文件与这些规范:

    函数rtwTargetInfo (cm) cm.registerTargetInfo (@loc_register_crl);结束函数这个(1)= = loc_register_crl RTW.TflRegistry;(1)。Name =“记忆功能替代CRL”;(1)。TableList = {“crl_table_memcpy.m”};%这个例子中创建表(1)。TargetHWDeviceType = {‘*’};(1)。描述=“示例代码替换库”;结束
  10. 验证代码替换库。通过使用开放图书馆代码替换查看器,并验证指定的表和输入是正确的。配置您的模型使用的代码替换库,生成代码,验证按预期发生替换。如果发生异常行为,检查碰巧日志来解决。

相关的话题