在上一篇文章中我们介绍了运行AIE编译器编译graph和kernel相关代码,目标是AIE仿真器。这篇文章我们将重点介绍如何用Vitis Analyzer查看AIE编译结果。
在Explorer窗口中,双击文件project.aiecompile_summary(位于目录Emulation-AIE/Work),即可打开Vitis Analyzer。
Vitis Analyzer左侧为控制面板,如下图所示。整个控制面板分为不同小节,涵盖编译结果的不同内容。
Summary:这里显示的是编译结果的总结性内容,包括AIE编译器版本信息、编译耗时、编译时用到的命令等。
Kernel Guidance:显示优化graph和kernel的一些建议。
Graph:以图形方式显示graph和kernel的具体细节。
Array:显示设计中用到的AIE在整个AIE阵列中的布局。
Constraints:列出用于graph和kernel的约束。
Mapping Analysis:显示graph用到的memory和port的映射信息。
DMA Analysis:显示映射中用到的DMA、相关的port以及DMA访问的memory。
Lock Allocation:显示DMA用到的lock。
Log:显示AIE编译日志,可过滤出Error、Warning、Info和Status等信息。
Core Compilation:显示设计中用到的每个AIE的编译log信息。
点击Vitis Analyzer左侧控制面板的Graph即可呈现graph视图,如下图所示。从这个视图中可以看到kernel的连接关系以及kernel之间的memory(对应图中的buf)。从输入到第一个kernel使用了双缓存buf0和buf0d(double buffers,字母d的来历),本质上就是乒乓操作。同样地,从第二个kernel到输出也使用了双缓存buf2和buf2d。两个kernel之间使用了单缓存buf1,这是因为这两个kernel是按顺序执行,不会同时访问同一个memory。Graph视图底部的表格显示了具体kernel信息,例如first为kernel的实例化名字,simple为描述kernel功能的C++函数名,这个kernel运行在AIE上,AIE位于AIE阵列的第25列第0行。表格和Graph视图是相互关联的,例如在表格中选中first,Graph中的first就会以高亮方式显示。
选择上图中红色方框内的Tile View,则整个Graph视图将显示为下图所示方式。从图中可以看到first和second这两个kernel位于AIE Tile [25, 0],这意味着这两个kernel在同一个AIE上顺序执行。还可以看到这两个kernel访问的memory位于AIE Tile[24,0]和[25,1],分别位于[25,0]的左侧和上方,与[25,0]是相邻位置,故不需要任何DMA。
Graph视图下方的表格提供了多个可选项。在Kernels一栏中,可以点击右上角的齿轮标记,使得kernel按graph分组显示或按Tile显示。
在Buffers一栏可以查看设计中要拿到的buffer的类型、分布状况、大小、相关联的kernel和net等信息,如下图所示。
在Tiles一栏可以看到涉及到的AIE Tile信息,如下图所示。可以看到AIE Tile的位置信息以及使用状况,例如有2个Buffer位于Tile[24,0],4个Buffer位于Tile[25,1],2个kernel位于Tile[25,0],具体的Buffer名称可以在Buffers一栏中找到。
点击Vitis Analyzer左侧控制面板中的Array,就可以查看Array视图,如下图所示。VCK190板卡的Versal芯片VC1902中有400个AIE。底部的表格与Graph视图底部表格是一致的,与Array视图也是相关联的,例如在表格中选中buf0和buf0d,在Array视图中就会以高亮方式显示其具体位置。
没有回复内容