对于Versal,我们从系统角度看,可将其分为3个Domain:AIE、PS和PL,如下图所示。如果要运行一个AIE的应用,绝大多数情况下,这3个Domain我们都会用到,使其协同工作。这里我们仅关注AIE Domain,将介绍如何使用Vitis 2021.2创建AIE应用工程。
第1步:打开Vitis,在Welcome页面选择Create Application Project,或者点击菜单栏File->New->Application Project。因为这里我们创建的是AIE的应用工程,所以要选择Application Project。
第2步:这一步并不需要任何操作,只需点击Next,但这一步的页面信息很有用。可以看到从1~4共4句话,其实就是告诉我们创建一个应用工程需用的4个步骤。这4个步骤在其后的过程中都会遇到。
第3步:选择Platform,这里我们选择VCK190,如下图所示。可以看到该平台有两个Domain:AIE Domain和ARM Cortex-A72(PS)Domain。
第4步:创建工程名,选择Processor,如下图所示。
第5步:选择Domain,这里只能选择aiengine,如下图所示。
第6步:选择模板,这里我们选择Simple,如下图所示。
至此,工程创建完毕,形成如下图所示的工程目录。图中标记1:simple_application将是我们在AIE上运行的工程。标记2:文件夹data,这里存放了仿真需用的输入文件input.txt和输出参考文件golden.txt。标记3:文件夹src,这里存放了设计需用的各种源文件,还包括一个子目录标记4:Kernels,用于存放描述Kernel的源文件。
描述Kernels的C文件内容如下图所示。通常会用到AIE的一些Intrinsics,采用向量化编程方式以充分利用AIE的并行性。
project.h创建了一个类simpleGraph。代码第10行和第11行声明了两个Kernel,第13行和第14行声明了输入端口和输出端口。第17行和第18行创建Kernel,第19行至第21行描述了Kernel之间的互连关系。第23行和第24行指明Kernel对应的源文件,也就确定了Kernel的功能。第26行和第27行指明Kernel的Runtime。每个Kernel都要有一个Runtime。Runtime是执行一次Kernel所用的周期数与预算周期数的比值。
在工程的设置界面也可以看到顶层文件project.cpp,如下图所示。
没有回复内容