当前位置:首页 > 医疗电子 > 医疗电子
[导读]在医学超声成像算法中,最经典和最广泛使用的是延迟叠加算法。延迟叠加算法在超声成像、雷达信号发射、接收以及天线信号波束形成等方面有着广泛的应用。虽然该算法并不是典型的性能需求型算法,但是在医学成像云计算服务的新需求下,需要提高该算法的计算速度,以克服云计算中网络传输速度相对较慢的约束。然而,以中央处理器作为主要计算资源的传统云计算框架无法满足医学超声图像快速生成的性能需求,因此,本文中使用以现场可编程逻辑门阵列作为异构加速资源的SuperVessel云平台作为并行延迟叠加算法的实现平台。当包括现场可编程逻辑

 延迟叠加算法是医学超声成像算法中最经典和最广泛使用的基本算法,在众多应用场景中有着广泛的运用,例如医学超声成像[1]、雷达信号的发射和接收[2]以及天线信号波束形成[3]等。同时,该算法可以在众多不同的设备中实现,例如在临床和便携嵌入式医学超声实时成像设备中均有延迟叠加算法的实现。然而,当我们考虑医学成像云计算服务的全新应用场景时,传统计算设备的计算速度并不能满足实时成像的计算需求。因此,有必要研发更快的、更有效的延迟叠加算法云实现。

传统的延迟叠加算法实现一般是采用基于中央处理器结构的串行计算模式实现。对于某些应用来说,中央处理器的计算速度可以满足其计算需求,然而对于医学成像云服务应用来说,中央处理器的计算速度还是相对太慢。另一方面,使用现场可编程逻辑门阵列(Field-Programmable Gate Array,FPGA)可以满足并行实现的计算需求,而SuperVessel平台正是第一个将FPGA加速融入到云计算中的计算平台,因此,适合在该平台上实现和评测并行延迟叠加算法。

本文将详细描述SuperVessel云平台[4]上使用FPGA加速的并行延迟叠加算法的设计和实验评测。

1 延迟叠加算法及其并行实现方案

1.1 延迟叠加算法

图1中的代码为医学超声成像中串行延迟叠加算法的核心代码。在该算法中,首先计算接收到的回声超声信号的延迟量,进而将延迟后的回声信号叠加,得到增强的回声信号输出,即超声成像图像中一个像素点的亮度值。

延迟叠加算法包含三个循环,如图1中所示。该算法的时间复杂度为:

 


(1)

 

其中变量LC(Line Count)表示输出图像中垂直的图像线条数,变量RC(Rows Count)表示输出图像中的行数,变量PA(Probe Amount)表示接收回声超声信号的探头阵元数量。

在本文的设计和实验中,LC设定为64,RC设定为1024,PA设定为64,所以每生成一幅超声图像需要计算4194304次延迟量计算和叠加计算。此外,在实时成像的情况下,要求形成流畅的实时成像视频需要每秒24帧图像的帧率。因此,定义TC为上述每一次延迟量计算和叠加计算共需要消耗的时间,则:

 


(2)

 

对上式进行移项,可得:

 


(3)

 

在本文的设计和实验中,为了实现实时成像,根据公式(3)演算出TC的最大值为9.93×10-9秒。此外,随着输入数据集的增大,实时成像的实现难度也相应提升,因此,需要考虑并行实现方案。

1.2 延迟叠加算法的并行实现

如图1所示,串行延迟叠加算法的核心代码中,核心操作是对延迟后输入数据的叠加。针对于最终生成图像中的一个特定像素点(i, j),存在PA次输入数据信号的叠加,叠加的公式如下:

 


(4)

 

其中,i、j和k分别是LC、RC和PA的累加变量,而d是延迟量的数值,可以通过特定i、j和k变量的相关计算得到。当变量i为一个特定值ifixed时,最终图像中第ifixed列上像素点的亮度值可以通过如下公式计算:

 


(5)

 

通过对延迟叠加算法进行分析,得出计算不同图像线上的image(ifixed, j)时并不存在相互间的数据依赖。因此,延迟叠加算法的计算过程可以并行化实现。

 

2 SuperVessel云平台上的算法实现

本文使用SuperVessel云平台实现的并行延迟叠加算法需要满足以下计算需求:1、在一个时钟周期内计算特定像素点image(i, j)的值;2、实现足够精确的浮点数计算;3、FPGA上全流水线化计算。

本文使用CAPI FPGA实现并行延迟叠加算法的设计框图如图2所示。该设计包含五个主要部分:输入数据分离器、RowsCount循环生成器、延迟信号选择器、叠加器和数据输出控制器。以下是这五个部分设计原理和实现模式的详细描述:

输入数据分离器: CAPI传输总线的带宽是256位,而每一个延迟信号选择器仅需要32位的带宽,以供传输标准的单精度浮点数。由图2可以看出该设计中包含64个延迟信号选择器,因此,需要将CAPI总线的256位输入数据分离,并且规划好输入数据读取的顺序。输入数据读取过程的规划如下:

第一步:在T时钟周期内,第0个至第7个延迟信号选择器读取一个CAPI输入信号数据;在(T+1)时钟周期内,第8个至第15个延迟信号选择器读取下一个CAPI输入信号数据;以此类推,直到在(T+7)时钟周期内,第56个至第63个延迟信号选择器读取下一个CAPI输入信号数据。

第二步:重复第一步所描述的步骤,直到生成一幅图像中某一列像素点所需要的所有输入信号数据读取完毕。

第三步:当图像中某一列的所有像素点数值均计算完成,则回到第一步读取生成图像中下一列像素点所需要的输入信号数据过程。

RowsCount循环生成器:当图像中某一列像素点计算所需要的所有输入信号数据读取完毕时,循环生成器将开始生成RC循环变量j的值。变量j的初始值为0,在每一个时钟周期内自增1,直到最大值1023。

延迟信号选择器:延迟信号选择器将计算对应像素点不同数据通道上的延迟量,并选择对应的输入信号数据。实现部分包含了一个延迟量计算器和一个BRAM存储器,BRAM存储器用于存储某个数据输入接收通道,接收通道接收到的输入信号数据。

叠加器:在并行延迟叠加算法的CAPI FPGA设计中共有64个延迟信号选择器,而这64个延迟信号选择器的输出值之和,即为image(i, j)的最终结果。计算两个延迟信号选择器输出值之和需要一个加法器,对应地,计算64个延迟信号选择器输出值之和需要63个加法器。为了使加法器设计流水线化,叠加器模块将加法器分为6个阶段层次,每层分别使用32、16、8、4、2、1个加法器。

输出数据控制器:由于CAPI总线提供的带宽是256位,而本文所描述的设计每一个时钟周期内输出数据是一个32位的浮点数。因此,输出的数据可以先存放于FPGA中,每8个时钟周期通过CAPI总线接口向CPU输出一次数据。

除了上述的五个主要实现模块外,本设计方案中也使用了下面两个设计模块:

浮点数计算单元:本设计使用了Xilinx Vivado软件中提供的浮点数IP核作为浮点数计算单元模块。该类IP核遵循了IEEE-754的标准,因此,本文设计中的浮点数计算结果相较于CPU实现的浮点数计算结果而言,误差很小。另一方面,该类IP核是全流水线化的,这也进一步提升了设计的吞吐量。

状态控制器:在图像像素点数值计算的过程中有两个状态阶段:第一个阶段是输入信号数据的读取过程,第二个阶段是延迟量的计算和延迟后输入信号数据的叠加过程。状态控制器包含一个状态标记变量,以指示当前计算的状态阶段。当第一阶段的输入信号数据读取过程结束时,BRAM的写入地址waddr的值将为2047。因此,可定义waddr==2047为第二阶段开始的标记信号。当第二阶段结束时,将waddr的值设为0,则将触发第一阶段重新开始,进行下一轮计算。此外,当图像中所有的像素点计算完成时,输出图像的像素点数目为65536 。所以,可定义该数值为图像计算完成的标志变量,标志着算法计算结束。

3 实验和评测结果讨论

3.1 SuperVessel平台上使用CAPI FPGA加速器的流程

在SuperVessel平台上使用CAPI FPGA加速器来加速算法应用,需要执行以下步骤:

1、使用Xilinx Vivado软件设计FPGA加速器核心模块;

2、在本地的x86机器上集成FPGA加速器核心模块和CAPI仿真框架进行仿真验证;

3、在本地机器上编译FPGA加速器核心模块和CAPI加速框架构成的加速器包,并生成对应的bitstream文件;

4、将加速器bitstream文件上传到SuperVessel云平台上;

5、在SuperVessel云平台上申请虚拟机资源,并关联对应的加速器bitstream文件,然后启动虚拟机运行加速器。

另外需要注意以下两点:

VPN网络:SuperVessel云平台上申请的虚拟机资源没有对应的可直接访问的公网IP,需要使用对应的VPN网络。使用的VPN网络在Windows、Linux、MacOS等主流操作系统中均有对应的软件支持。

内存占用:编译步骤3中所述的加速器包时需要大量本地机器内存,尤其在综合和布线的阶段;而且CAPI FPGA加速器设计越复杂,本地机器内存占用量就越大。在本文的实验评测中观察到,编译阶段的内存占用量最高达到了14GB。内存不足将导致编译失败,因此需要根据CAPI FPGA设计的大小配置足够的内存资源。

 


 

3.2 仿真数据生成

本文的实验过程中为了测试使用CAPI FPGA并行加速的延迟叠加算法,使用Field II医学超声信号模拟器[5]仿真了医学超声回波输入数据。本文的医学超声图像回波输入数据仿真了128个阵元的超声探头,探头间距为0.3048mm,采用5 kHz的脉冲发射频率和40 MHz的回波接收采样频率。此外,超声图像的成像场景仿真了线形点阵列作为成像对象的散射源。

3.3 实验结果讨论

在实验中,通过网络将10份医学超声图像的输入信号数据载入SuperVessel云平台,其中每份图像的输入信号数据对应于一张超声图像。在云平台上通过CAPI加速架构提供的API,调用FPGA加速器,将数据从云平台上CPU对应的DDR内存中传输到FPGA中的BRAM里;完成图像像素点数值计算后再将数据传回DDR内存。实测从数据传输开始到数据传输结束的时间,得到并行延迟叠加算法云计算应用运行的总时间。并行延迟叠加算法在FPGA上的计算时间通过统计算法执行的时钟周期来确定,因此,还可推算出数据传输所消耗的时间。通过多次实验求得各项时间参数的平均值。

 

与此同时,使用SuperVessel云平台上CPU计算获得同样的10张医学超声图像,其每张图像计算的平均耗时为246 ms。由此计算可得,本文设计的CAPI FPGA并行延迟叠加算法实现的加速比达到了约22倍。此外,通过实验推导出该设计的TC数值为秒,满足1.1小节提出的实时成像要求。

4 结论和展望

本文描述了在SuperVessel云平台上,设计和评测基于CAPI FPGA加速器技术的并行延迟叠加算法。实验评测结果表明,SuperVessel云平台上基于CAPI FPGA加速器的并行延迟叠加算法的运行速度相较于使用CPU计算的延迟叠加算法的运行速度提高了约22倍,该速度可以满足医学成像云计算服务的需求。

目前,本文设计中的超声回波信号接收通道数为64。通道数越大时,得到的图像越清晰,所以我们使用同样的方案设计了96通道和128通道的成像方案,但由于资源限制的原因未能成功运行。我们将继续优化当前的设计,降低资源占用并采用多片FPGA设计方案,进一步提高通道数量和数据处理能力。

另外,SuperVessel云平台提供的CAPI加速技术可以应用于其他计算密集型算法加速,尤其是输入输出数据量小,而时间复杂度高的算法。我们将进一步把其他医学超声成像算法设计到SuperVessel云平台上实现。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

Bluespec支持加速器功能的RISC-V处理器将Achronix的FPGA转化为可编程SoC

关键字: RISC-V处理器 FPGA SoC

为无处不在的端侧设备插上AI的翅膀,AMD发布第二代Versal™ 自适应 SoC

关键字: AMD FPGA 自适应SoC AI 边缘计算

Pmod接口可以说是数字电路板的连接革命。随着科技的飞速发展,数字电路板间的通信与连接技术也在不断创新和进步。Pmod接口,作为一种新兴的数字接口标准,正逐渐成为数字电路板间通信的桥梁,为电子设备的连接和通信带来了革命性...

关键字: pmod接口 FPGA 数字电路板

近日举办的GTC大会把人工智能/机器学习(AI/ML)领域中的算力比拼又带到了一个新的高度,这不只是说明了通用图形处理器(GPGPU)时代的来临,而是包括GPU、FPGA和NPU等一众数据处理加速器时代的来临,就像GPU...

关键字: FPGA AI 图形处理器

当我们提到成本优化型FPGA,往往与简化逻辑资源、有限I/O和较低制造工艺联系在一起。诚然,在成本受限的系统设计中,对于价格、功耗和尺寸的要求更为敏感;但随着一系列创新应用的发展、随着边缘AI的深化,成本优化型FPGA也...

关键字: AMD FPGA Spartan 边缘计算

全球领先的高性能现场可编程门阵列(FPGA)和嵌入式FPGA(eFPGA)半导体知识产权(IP)提供商Achronix Semiconductor公司宣布,该公司参加了由私募股权和风险投资公司Baird Capital举...

关键字: FPGA 智能汽车 eFPGA

全新 FPGA 能为嵌入式视觉、医疗、工业互联、机器人与视频应用提供高数量 I/O、功率效率以及卓越的安全功能

关键字: FPGA 嵌入式视觉 机器人

Altera致力于为客户提供端到端的FPGA、易于使用的AI、软件和弹性供应链。

关键字: FPGA AI

在半导体领域,大部分对于AI的关注都集中在GPU或专用AI加速器芯片(如NPU和TPU)上。但事实证明,有相当多的组件可以直接影响甚至运行AI工作负载。FPGA就是其中之一。

关键字: FPGA AI 半导体

半导体产品老化是一个自然现象,在电子应用中,基于环境、自然等因素,半导体在经过一段时间连续工作之后,其功能会逐渐丧失,这被称为功能失效。半导体功能失效主要包括:腐蚀、载流子注入、电迁移等。其中,电迁移引发的失效机理最为突...

关键字: 半导体 电迁移 FPGA
关闭
关闭