《表2 不同方式下数据处理时间对比》

《表2 不同方式下数据处理时间对比》   提示:宽带有限、当前游客访问压缩模式
本系列图表出处文件名:随高清版一同展现
《基于OCT的手指皮下组织的三维可视化》


  1. 获取 高清版本忘记账户?点击这里登录
  1. 下载图表忘记账户?点击这里登录

以Microsoft Visual Studio 2010集成CUDA 9.1为开发环境,GPU为NVIDIA GeForce GTX 1050Ti,计算能力6.1。现将笔者提出的GPU并行处理方式与Matlab处理方式和CPU串行处理方式进行对比。处理一个体扫描数据(由300个B-SCAN数据构成,共570M)的时间测试结果如表2所示。其中Matlab处理方式耗时最长,总共需要45 000ms。CPU串行处理方式中用到了FFTW库,FFTW是由麻省理工学院超级计算技术组开发的一套离散傅里叶变换(DFT)的计算库,被称为是最快的FFT,由于数据处理过程中要执行很多次FFT变换,耗时严重,运用FFTW库以后可大大缩减计算时间,整个处理过程总共需要7 700ms。GPU并行处理方式运用了GPU强大的并行计算能力,FFT运算部分采用CUDA自带的CUFFT库来实现,它由FFTW库发展而来,同样具有很快的计算速率,除此之外,数据截取、插值、减直流、取模和取对数等操作都改写成Kernel函数,在GPU上并行实现,进一步提升了处理速度,最后总共耗时2 476ms。比较发现:笔者提出的方法耗时最短,速度是Matlab处理方式的18倍,是CPU串行处理方式(运用FFTW库)的3倍。OCT数据的实时三维成像要求OCT系统刚采集完一个体扫描数据,计算机屏幕上就能显示样品的三维图像,由于所用OCT系统的扫描速率是36klines/s,采集完一个体扫描数据(300个B-SCAN,共150 000个A-SCAN)大约需要4 167 ms,如果一边采集数据一边对每个B-SCAN进行数据处理,数据处理的时间将会被隐藏,这种情况下,Matlab处理和CPU串行处理时间都大于采集时间,而且所用系统后期还会改进,采集速率会有进一步的提升,因此不满足要求,而GPU并行处理时间小于采集时间,能满足实时三维成像的要求。