我怎么能优化性能的library-free生成C / c++代码从深度学习网络吗?

19日视图(30天)
我深入学习网络的生成代码 编码器。DeepLearningConfig (TargetLibrary = “没有” ) 。我应该使用代码生成的配置设置来优化生成的代码的性能?

接受的答案

杰克法拉利
杰克法拉利 2023年3月23日
编辑:杰克法拉利 2023年4月6日
向量化和多线程技术可以提高嵌入式应用程序的性能。都允许处理器可以更有效地使用可用资源,更快地完成任务,通过执行相同的指令同时在多个数据元素(向量化),或由一个工作负载划分成线程并发执行多个核心(多线程)。
使用MATLAB编码器,您可以利用向量化通过使用SIMD(单指令多数据)intrinsic中可用代码替换库手臂Cortex-A和M的目标。在英特尔和AMD cpu,使SIMD AVX2或AVX512指令集扩展。对于支持多线程处理器,使OpenMP。金宝app
此外,R2023a,您可以启用bfloat16压缩网络可学的。深度学习网络弹性的精度损失,压缩从单精度可学的bfloat16数据类型推理准确性大大减少了内存的使用几乎没有变化。这个过程不需要校准数据,也会增加推理速度。任何硬件支持单精度浮点数据类型可以从金宝appbfloat16中受益。有关更多信息,请参考 在这里
请注意 :这些设置是一般的指导方针。根据您的特定应用程序和硬件目标,改变可能导致额外的配置设置添加性能。
覆盆子π
> > cfg = coder.config (“自由”);
> > cfg。硬件= coder.Hardware (“树莓π”);
> > cfg。CodeReplacementLibrary =“GCC手臂Cortex-A”;
> > cfg。EnableOpenMP = true;
> > cfg。DeepLearningConfig =编码器。DeepLearningConfig (TargetLibrary =“没有”);
> > cfg.DeepLearningConfig。LearnablesCompression =“bfloat16”;%需要R2023a或更高版本
通用的手臂Cortex-A
> > cfg = coder.config (“自由”);
> > cfg.HardwareImplementation。ProdHWDeviceType =“胳膊兼容- >手臂Cortex-A”;
> > cfg。CodeReplacementLibrary =“GCC手臂Cortex-A”;
> > cfg。EnableOpenMP = true;
> > cfg。DeepLearningConfig =编码器。DeepLearningConfig (TargetLibrary =“没有”);
> > cfg.DeepLearningConfig。LearnablesCompression =“bfloat16”;%需要R2023a或更高版本
通用的手臂Cortex-M
> > cfg = coder.config (“自由”);
> > cfg.HardwareImplementation。ProdHWDeviceType =“胳膊兼容- >手臂Cortex-M”;
> > cfg。CodeReplacementLibrary =“胳膊Cortex-M”;
> > cfg。DeepLearningConfig =编码器。DeepLearningConfig (TargetLibrary =“没有”);
> > cfg.DeepLearningConfig。LearnablesCompression =“bfloat16”;%需要R2023a或更高版本
x86硬件(Intel和AMD)
英特尔
> > cfg = coder.config (“自由”);
> > cfg.HardwareImplementation。ProdHWDeviceType =“英特尔- > x86 - 64(64年Linux)”;%如果部署在Linux上
> > cfg。InstructionSetExtensions =“AVX512F”;%或“AVX2”如果“AVX512F”是不可用的
> > cfg。EnableOpenMP = true;
> > cfg。DeepLearningConfig =编码器。DeepLearningConfig (TargetLibrary =“没有”);
> > cfg.DeepLearningConfig。LearnablesCompression =“bfloat16”;%需要R2023a或更高版本
AMD
> > cfg = coder.config (“自由”);
> > cfg.HardwareImplementation。ProdHWDeviceType =AMD - > x86 - 64(64年Linux) ';%如果部署在Linux上
> > cfg。InstructionSetExtensions =“AVX512F”;%或“AVX2”如果“AVX512F”是不可用的
> > cfg。EnableOpenMP = true;
> > cfg。DeepLearningConfig =编码器。DeepLearningConfig (TargetLibrary =“没有”);
> > cfg.DeepLearningConfig。LearnablesCompression =“bfloat16”;%需要R2023a或更高版本

更多的答案(0)