基于CUDA的高速FFT计算


    收稿日期 20100917 修回日期 20101109 基金项目 国家863计划资助项目( 2009AA01Z110) 西北工业学研究生创新资助项
    目( 09024)
    作者简介 赵丽丽( 1985)女甘肃环县研究方流处理器体系结构编程模型( dubly@ 126. com) 张盛兵( 1968)男教授博士
    研究方 SoC 系统处理器体系结构 张萌( 1978)男讲师博士研究方体系结构快速建模 姚涛( 1982)男博士研究
    方体系结构核处理器.
    基 CUDA 高速 FFT 计算*
    赵丽丽张盛兵张 萌姚 涛
    ( 西北工业学 计算机学院西安 710072)
    摘 针快速傅里叶算法 FFT 图形图处理科学计算领域重作提出种基 CUDA 高速
    FFT 计算方法分析 GPU 硬件台执行模式 FFT 算法行性特征基础采线程行映射方法实
    现算法存储层次优化算法实验结果表明该算法高效性优化 FFT 加速达 CUFFT 库加
    速 2 ~ 6 倍
    关键词 图形处理器 统计算架构 映射策略 存储层次
    中图分类号 TP312 文献标志码 A 文章编号 10013695( 2011) 04155604
    doi 10. 3969 j. issn. 10013695. 2011. 04. 100
    High performance FFT computation based on CUDA
    ZHAO LiliZHANG ShengbingZHANG MengYAO Tao
    ( School of Computer Science & TechnologyNorthwestern Polytechnical UniversityXi’an 710072China)
    Abstract The Fourier transform is essential for many image processing and scientific computing techniques. This paper presen
    ted an implementation to accelerate FFT computation based on CUDA. Based on the analysis of the GPU architecture and algo
    rithm parallelism featurebrought a mapping strategy used multithreadand explored the optimization in memory hierarchy. The
    results on CUDA show an improvementthe average speedup reaches 2 ~6X compared with CUFFT supplied by NVIDIA library.
    Key words GPU( graphics processor units) CUDA( compute unified device architecture) mapping strategy memory hie
    rarchy
    0 引言
    快速傅里叶变换 FFT[1]( fast Fourier translation) 诞生
    四十年时间中直受科学研究工程计算广泛应特
    量子物理光谱分析音视频流信号处理石油勘探
    震预报天气预报概率编码理医学断层诊断等领域
    FFT 算法具计算密集型存储密集型特点做 HPC[2]
    NAS[3]行测试基准 FFT 分治特点许新型处
    理器架构相继出现 CellImagine 图形处理单元( GPU)
    Firestream 等研究 FFT 算法行计算实现
    微电子产业发展 GPU 性迅速提高GPU 通增
    加行计算存储器控制单元提高计算力存储带宽成
    较处理器工作站显著降低面 GPU 巨计算
    资源较高编程力已满足 GPU 应
    局限处理图形渲染计算务更加关注基 GPU 通
    计算 GPGPU[4]( general purpose GPU)
    Kenneth 等[5]早开始研究 FFT 算法 GPU 实现
    采 OpenGL Cg 语言开发应程序实现 GPU 中定点单
    元段单元程序控制程序硬件映射限制较控制
    复杂着 GPU 发展相应 GPU 编程台发
    展2007 年 NVIDIA 公司推出统计算台 CUDA[6]
    CUDA 指令集( ISA) GPU 部行计算引擎提出种
    高性图形处理单元加速应解决方案实现 FFT
    库 CUFFT[7]库基 FFTW[8] 移植较 CPU 已
    达高加速没充分发挥 GPU 线程执行潜
    力文通深入分析 FFT 算法行性特征提出种优
    化线程行映射方法充分利算法址特点存储架
    构特点提高算法行度实现 FFT 算法加速优化
    1 GPUCPU 协 CUDA 编程
    目前流 GPGPU 均采 CPUGPU 异 构核协架
    构[10]CUDA 编程模型中GPU 北 桥 通 PCIE 总 线
    CPU 连接CPU 负责逻辑性较强事务计算GPU
    量线程实现面吞吐量数行计算适合处理计算密集度
    高逻辑分支简单规模数行务
    CUDA 编程模型中 CPU 作机( host) GPU 作协处
    理器设备端( device) 完整 CUDA 程序包括系
    列 host 端串行处理步骤 device 端 kernel 函数行步
    骤运行流程图 1 示机端负责初始化 GPU 设备准
    备数分配显存空间发起 host device 数传输数
    通 PCIE 总线存拷贝显存设备端显存读取数
    进行行计算输出结果回存显存机端结果数拷贝
    存释放显存空间完成完整 CUDA 应
    编程 GPU 已发展成种高度行化线程核
    第 28 卷第 4 期
    2011 年 4 月
    计算机应研究
    Application Research of Computers
    Vol 28 No 4
    Apr 2011处理器具杰出计算力极高存储器带宽NVIDIA
    GPU 架构伸缩线程流处理器 ( stream
    multiprocessorsSM) 阵列中心 SM 包含八流处理器
    ( stream processorSP)两特殊函数单元线程指令单
    元芯片享存SM 利种称 SIMT( single in
    struction multiple threat) [6]新架构线程映射 SP
    核心线程指令址寄存器状态独立执行
    SM 硬件中创建理执行发线程调度开销 0
    通部指令__syncthreads() 屏障步效细粒度行
    化提供支持
    CUDA 编程模型中GPU 端 kernel 函数线程网络
    ( grid) 形式组织 grid 干线程块( block) 组成
    block 中包含线程( thread) 图 2 示
    Kernel 函数执行时整 grid 加载 SM 阵列中
    block 分发 SM kernel 函数中存两
    层次行 grid 中 block 间行 block 中 thread
    间行者线程间通享存储器( shared memory) 通
    信线程 blockID threadID
    线程区分实质kernel block 单位执行 实
    际中block 分割更线程束( warp) 32 线程
    条 warp发射条 warp 指令SM 中 八 SP 会 条
    指令执行四遍
    2 基 CUDA FFT 算法
    快速傅里叶变换 FFT 身具分治特性根
    特点研究行性特征实现 CUDA 台映射
    2 1 FFT 算法
    维 N 点傅里叶变换 DFT 公式
    X( k) ∑
    N - 1
    n 0
    x( n) Wnk
    N k 012…N - 1
    x( n) 1
    N ∑
    N - 1
    k 0
    X( k) W - nk
    N k 012…N - 1 ( 1)
    中 旋转子 Wnk
    N e - j2π
    N nk ( n 012…N - 1) 里 x( n)
    Wnk
    N 复数执行 DFT 运算复杂度 O( N2 ) 采
    FFT 运算复杂度降 O( N log2 N)
    采样点 N 时时间抽取基2 FFT 需 log2 N 级蝶形
    运算级 N2 蝶形运算实现时先输入采样点
    进行位反次序调整逐级作蝶形运算 正序 FFT
    输出
    2 2 算法特征分析
    传统 FFT 算法采三层循环实现采样点 N 2M
    级蝶形结运算中根蝶形结旋转子分
    组相旋转子蝶形计算完成作组蝶形运算
    直前级组蝶形结计算完成 相方法完成 M 级
    运算图 3 示
    计算完全串行分析蝶形逐级推进程中
    出三点 a) 相旋转子蝶形旋转子备份
    情况行执行 b) 旋转子数存相关
    性行执行 c) 级旋转子非完全
    第 M 级 N2 完全旋转子第 M - 1 级第
    M 级中偶序列旋转子第 M - 2 级第 M - 1 级中偶序
    列旋转子类推第 1 级 W 0
    N 种旋转子根
    规律旋转子查表方法实现
    2 3 算法行化
    CUDA 编程模型中获较高加速效果必须
    足够活跃线程提高计算效隐藏访存延时 [9]
    需充分挖掘算法行性
    根 CUDA 线程执行模式特点 2 2 节 FFT 算
    ·7551·第 4 期 赵丽丽等 基 CUDA 高速 FFT 计算法分析算法级划分级 N2 蝶形完全行级
    间数通信前级蝶形运算结果存回原位置次级运算时
    蝶形路径索引址新位置读取操作数前级产
    生数作级输入数级操作间流动起设
    定 N2 线程线程负责第 1 ~ log2 N 级路蝶形运
    算级完成进行步图 4 示蝶形两
    操作数址线程号前级数函数确定蝶形计算完
    毕存入原址采址方式
    图 4 中步栅栏 barrier 确保数正确性采
    CUDA 提供 API 函数__syncthreads() 实现线程块线程
    步保证线程块中线程执行 barrier 暂停直线程块
    中线程 barrier 处继续执行续语句果作
    步线程块中线程访问全局者享存储器
    址时发生读写写读写写错误通步
    避免问题
    2 4 存储层次优化
    图 2 样展示 CUDA 存储层次设备端六种
    存储部件线程执行时访问处存储空间中
    数根存储器位置容量访问权限生存周期
    特点算法实现进行优化提高整体访存速度优化
    四点
    a) 线程拥私寄存器( register) 局部
    存储器( local memory) 中访问片寄存器时间约 1 ~ 2
    cycles远远高访问显存局部存储器 200 ~ 300 cycles[9]
    kernel 函数中少局部变量局部变量太
    寄存器分配时系统动余出局部变量放局
    部存储器中kernel 函数执行时频繁访问片外局部变量
    会降低程序运行速度
    b) 享存储器( shared memory) GPU 片高速存储
    器线程块中线程访问读写存储器
    FFT 算法中级推进时前级写入数次级读出数
    数存储享存储器( 容量允许范围)
    程度提高线程访存速度访问片外全局存储器
    ( global memory) 具较高访存延时 kernel 函数设计中
    增加两操作计算开始前显存数搬入享存储器
    级运算完毕搬回显存运算期间计算部件享
    存储器交互须访问片外全局存储器FFT 算法 kernel
    程序代码段
    __ global _ _ void FFT _ T ( Complex * const DataInComplex *
    DataOutconst unsigned int N) {
    extern __shared__ Complex sdata[]
    const unsigned int tid_in_block threadIdx. x
    线程 block 中位置
    if( tid_in_block < N) {
    sdata[tid_in_block] DataIn[tid_in_block]
    sdata[tid_in_block + N2] DataIn[tid_in_block + N2]
    数 global 读入 shared memory
    __syncthreads() 步
    if( tid_in_block < N2) {
    int pq
    Complex WnXpXqWn
    float stage 0. 0
    for ( int Ns 1 Ns < N Ns Ns* 2) {
    p tid_in_block Ns * Ns * 2 + tid_in_block Ns
    q p + Ns
    Wn tex2D( texReftid_in_blockstage + + )
    XqWn ComplexMul( sdata[q]Wn)
    Xp sdata[p]
    sdata[p] ComplexAdd( XpXqWn)
    sdata[q] ComplexSub( XpXqWn)
    __syncthreads() 步
    } end for
    DataOut[p] sdata[p]
    DataOut[q] sdata[q]
    } end if
    } end if
    } end kernel
    c) CUDA 存储模型中读存储器———纹理存储器( tex
    ture memory) 非常适合实现图处理查表通缓存加
    速访问针前文分析旋转子规律旋转子
    计算前预先存储纹理存储器中( 容量允许范围) 级
    矩阵二维形式存储样降低重复计算旋转子计
    算量时利纹理存储高带宽提高运算精度代码中
    第 17 行 tex2D 二维纹理拾取( texture fetching) 读取纹
    理存储器中旋转子
    d) 全局存访问否满足合条件 CUDA 程序性
    影响明显素合访问条件求 halfwarp
    中线程定字长访问齐段FFT 实现时
    采样点数存储器中齐连续存储旋转子二维矩阵存
    储读取时数存放满足突求避免硬件动突访
    存转换串行访存
    3 实验结果分析
    验证基 CUDA FFT 算法 实际 性 文
    Windows 操作系统实现该算法实验中处理器显
    卡配置表 1 示程序扩展 C 语言编写 CUDA
    3 1 版编译环境编译
    表 1 实验硬件配置
    配置项 型号 存储器 频率 描述
    CPU Intel Core i7 930 3 GB 2. 8 GHz 4 核
    GPU NVIDIA GTX 465 1 023 MB 1. 21 GHz 11 SM
    图 5 FFT 算法执行时间较结果较文中前面
    述优化方法中 CUFFT 调 NVIDIA 库函数实现
    FFT 算法执行加速GPU_G 仅全局存储器满足合访
    问情况GPU_S 引享存储器优化结果GPU_T
    引入纹理存储器减少计算量加速情况
    数规模满足享存储器容量范围时图 5 示
    调线程数越加速效果越明显享存储器减少
    全局存储器访问性提升提升量限
    显存享存储器两次拷贝时间占定
    延时相纹理存储器优化效果更明显 减
    少旋转子计算时间二访问纹理数时突数
    结构
    表 2 中列 FFT 算法运行总时间里执行时间包
    括数 CPU GPU 间拷贝时间GPU_G 全局存
    ·8551· 计算机应研究 第 28 卷储器采线程行实现 FFT 实验结果GPU_T 采
    述纹理存储器优化策略实验结果
    表 2 FFT 算法运行总时间 ms
    N CUFFT GPU_G GPU_T
    8 × 8 0. 254651 0. 046865 0. 050051
    8 × 16 0. 228894 0. 048534 0. 051352
    16 × 16 0. 212420 0. 051274 0. 053411
    16 × 32 0. 221039 0. 056228 0. 057046
    32 × 32 0. 248554 0. 050085 0. 039652
    32 × 64 0. 322411 0. 07799 0. 05307
    64 × 64 0. 308431 0. 082231 0. 055533
    64 × 128 0. 352853 0. 088876 0. 062124
    128 × 128 0. 379826 0. 099098 0. 076514
    128 × 256 0. 472555 0. 194318 0. 138068
    256 × 256 0. 664870 0. 319683 0. 24147
    256 × 512 1. 103869 0. 570156 0. 484006
    512 × 512 1. 550055 1. 067288 ※
    ※GTX 465 block 中线程数 1 024
    实验数表明 a) 数规模较时GPU CPU 间拷
    贝时间初始化时间会抵消行计算带效益数规
    模超 32 × 32 时FFT 加速效果断提升b) FFT 种
    计算密集型应中调线程数越线程行计算体现出
    加速越高点图 6 中体现c) 表 2 中未列出
    享存储器优化结果 block 线程数
    1 024时享存储器容量限着采样点规模增
    FFT 算法需访问数址跨距增享存储
    器需级求数中间结果送回 CPU 端进行数次
    序调整量减少数搬运原相违采全局存
    储器d) GPU_T 加速效果高 GPU_G 两点原
    减少旋转子批量计算程二纹理访问时满足合
    访问原
    4 结束语
    文实现基 CUDA 高速 FFT 计算通分析 FFT
    算法行性特征采线程行映射方法 FFT 级
    蝶形运算行执行提高行度 针 CUDA 存储层次特
    点算法实现进行优化充分挖掘享存储器纹理存
    储器高速访存潜实验结果表明该算法 FFT 加速效
    果显著FFT 算法工程应科学计算重作
    计算密集性分治特点针处理器架构
    行化研究深远意义
    参考文献
    [1] JAMES W CJOHN W T. An algorithm for the machine calculation
    of complex Fourier series[J]. Mathematics of Computation1965
    19( 2) 297301.
    [2] HPC challenge benchmark[EB OL]. [20101101]. http icl.
    cs. utk. eduhpcc.
    [3] NAS parallel benchmarks[EB OL]. [20100523]. http www.
    nas. nasa. govResourcesSoftwarenpb. html.
    [4] Generalpurpose computation using graphics hardware[EB OL].
    [20100523]. http www. gpgpu. org.
    [5] KENNETH MEDWARD A. The FFT on a GPU[C] Proc of the
    ACM SIGGRAPHEUROGRAPHICS Conference on Graphics Hard
    ware. San DiegoCalifornia Eurographics Association2003 112
    119.
    [6] CUDA programming guide version 3. 0[K]. [S. l. ] NVIDIA Corp
    2009.
    [7] CUDA CUFFT Library[R]. [S. l. ] NVIDIA Corp2007.
    [8] FFTW[EB OL]. [20100523]. http www. fftw. org.
    [9] MUTHU M BRAJESH B. Optimizing sparse matrixvector multipli
    cation on GPUs[R]. [S. l. ] IBM2008.
    [10] 张舒褚艳利赵开勇等. GPU 高性运算 CUDA[M]. 北
    京 中国水利水电出版社2009.
    ( 接第 1552 页)
    3 结束语
    传统运动目标检测算法基础文提出基帧间
    差分适应运动目标检测算法采直方图统计概率
    灰度帧间差分背景差分阈值分割形态学运算实现运
    动目标检测实验结果证明该算法行效
    确定性素较适应性算法存定缺陷
    直方图统计概率灰度提取背景时运算量速度慢
    阈值分割时目标背景区域灰度相时会出现孔洞等
    问题会工作中作进步研究改善
    参考文献
    [1] 刘鑫刘辉强振. 混合高斯模型帧间差分相融合适应背
    景模型[J]. 中国图象图形学报200813( 4) 729734.
    [2] 王静保文星. 种基差分算法视频运动目标检测技术[J].
    计算机应软件200926( 12) 2612.
    [3] CHENG FanghsuanCHEN Yuliang. Real time multiple objects
    tracking and identification based on discrete wavlet transform[J].
    Pattern Recognition200639( 6) 11261139.
    [4] ZHANG RuiZHANG SizhuYU Songyu. Moving objects detection
    method based on brightness distortion and chromaticity distortion[J].
    IEEE Trans on Consumer Electronics200753( 3) 11771185.
    [5] 谢凤英. VC + + 数字图处理[M]. 北京 电子工业出版2008.
    [6] 代科学李国辉涂丹. 监控视频运动目标检测减背景技术研究
    现状展[J]. 中国图象图形学报200611( 7) 919917.
    [7] ZHANG HaiqingLI Houqiang. Target tracking based on Monte
    Carlo method[J]. China Journal of Image and Graphics2008
    13( 5) 937938.
    [8] CASTLEMAN K R. 数字图处理[M]. 朱志刚林学闫石定机
    等译. 北京 电子工业出版社2002 181190.
    [9] HAN BCOMANICIU DZHU Yinget al. Sequential kernel densi
    ty approximation and its application to realtime visual tracking[J].
    IEEE Trans on Pattern Analysis and Machine Intelligence
    200830( 7) 11861197.
    [10]杨学超刘文萍. 视频图序列中运动目标检测技术[J]. 计算
    机应软件200825( 1) 215217.
    ·9551·第 4 期 赵丽丽等 基 CUDA 高速 FFT 计算

    《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
    该内容是文档的文本内容,更好的格式请下载文档

    下载pdf到电脑,查找使用更方便

    pdf的实际排版效果,会与网站的显示效果略有不同!!

    需要 2 香币 [ 分享pdf获得香币 ]

    下载pdf

    相关文档

    基于AT89C51单片机的简易计算器的设计

     毕 业 设 计 题目 简易计算器的制作 ...

    5年前   
    2340    0

    基于51单片机的数码管简易计算器

    基于51/52单片机的简易计算器制作级自动化班一、题目 利用单片机芯片STC89C52、四位八段共阳数码管及已制作好的电路板等器件设计制作一个计算器。 二、任务与要求 要求计算器能实现加减乘除...

    2年前   
    699    0

    基于malab的牛顿拉夫逊法潮流计算毕业论文

    基于malab的牛顿拉夫逊法潮流计算 摘 要 本文,首先简单介绍了基于在MALAB中行潮流计算的原理、意义,然后用具体的实例,简单介绍了如何利用MALAB去进行电力系统中的潮流计算...

    5年前   
    1787    0

    基于度量视域的《长方形、正方形面积的计算》说课

    基于度量视域的《长方形、正方形面积的计算》说课      弗赖登塔尔认为:几何是对空间的把握。为了更好地把握、理解这个空间, 儿童需要经历完整的观察、 猜想、想象、操作等数学化过程, 站在更高...

    2年前   
    495    0

    电气控制技术课程设计基于PLC电子计算器课程设计

     电气控制技术课程设计说明书 电子计算器 学生姓名: 专 业: 自动化 班 级...

    1年前   
    304    0

    基于牛顿—拉夫逊法的电力系统潮流计算毕业设计

     毕 业 设 计(论 文) 基于牛顿—拉夫逊法的电力系统潮流计算 专业年级 自动化 学 号 ...

    5年前   
    984    0

    (计算机有代码有程序)基于android卡卢琳电影购票系统

    毕业设计说明书(论文)中文摘要 在互联网技术迅速发展的形式下,人们的生活节奏逐步信息化。移动终端的Android系统正在悄无声息的改变人们的生活方式,更多的人选择足不出户地在手机上自助购...

    2年前   
    582    0

    司机跑高速总结

    司机跑高速总结  1.8t,5100km,已首保,25日北京DD保定,145km,一个人。  早晨天气晴好,基本无风,周日早晨7点从四环到京石高速一路畅通,加满油,平均时速93,油耗6.5,用...

    11年前   
    578    0

    基于教育教学的研究

    学生在学习了用提取公因式法进行因式分解的基础上,本节课又安排了用公式法进行因式分解,旨在让学生能熟练地应对各种形式的多项式的因式分解,为下一章分式的运算以及今后的方程、函数等知识的学习奠定一个良好的基础。

    5年前   
    1686    0

    基于通信的系统的影响

    基于通信的系统的影响如上文所述,信息服务的趋势正朝着分散和分布式数据处理(DDP)方向发展。分散的信息服务工作并不意味着数据通信,但是多数是基于通信的。依照定义,所有分布式数据处理(DDP)系...

    12年前   
    719    0

    高速安全工作总结

    一年来,公司深化学习贯彻《平安生产法》,结合高速大路管理运行实际和系统设备运行状况,在日常建设、运营、养护、设备管理中,本着“平安第一、预防为主”的平安工作指导方针,以“防患胜于救灾,责任重于泰...

    2年前   
    322    0

    高速公路养护方案

    高速公路养护方案一、日常养护总体实施方案1.1编制依据(1)《“四桥一隧”的机电设备维护项目招标文件》及对工作现场考察的相关数据;(2)现行相关的国家有关安装维护工作技术标准、验收规范、质量评...

    4年前   
    2884    0

    高速公路事故总结

    恶劣天气下车辆在高速公路上容易发生事故。这次沪宁高速连环车祸案,我们得提出了一些认识和反思。提出在上高速前司机应当进行车况检查、控制车速不违法操作、提高安全驾驶意识等措施,希望能降低降低交通事故的发生。

    4年前   
    1594    0

    个人述职高速

    个人述职高速第一篇:高速公路管养单位工程部个人述职报告个人述职报告(总结)岁首年终,静心回想今年的工作,收获颇丰,在公司领导的正确领导下,在部门经理的指导下,在同事们的支持下,我本着恪尽职守、...

    10年前   
    608    0

    高速公路服务心得

    高速公路服务心得  为深入开展全区高速公路系统“微笑服务温馨高速”活动,全面提升全系统职工服务意识和服务水平,塑造良好形象,我有这几点心得;  一、指导思想和基本目标  指导思想:以科学发展观...

    9年前   
    614    0

    高速公路实习报告

    高速公路实习报告  前言  我国高速公路经过17年的持续快速发展,使公路基础设施总体水平实现了历史性跨越。随着京沪、京沈、京石太、沪宁合、沪杭甬等一批长距离、跨省区的高速公路相继贯通,我国主要...

    11年前   
    462    0

    五一高速免费吗 五一高速免费几天

    五一高速免费吗 五一高速免费几天  2015五一高速免费吗 高速免费多少天  【2015五一高速免费吗】《重大节假日免收小型客车通行费实施方案》由交通运输部发布。免费通行时间:包括春节、清明节...

    9年前   
    609    0

    国庆高速免费_2015国庆高速免费时间

    国庆高速免费_2015国庆高速免费时间   国庆小长假快到了,关于国庆高速免费这个问题相信是不少朋友所关注的。那么,            下面就为大家来介绍一下2015国庆高速免费时间的具...

    8年前   
    985    0

    「高速公路养护调研报告」高速公路养护公司

    【高速公路养护调研报告】高速公路养护公司 高速大路作为社会经济进展的一项标志,在现代物质流通和市场运作中都占有重要的位置。我国高速大路建立虽然起步较晚,但进展速度特别快速,带动了整个社会...

    1年前   
    295    0

    计算

    大班计算课教案第二周学习分类活动目标: 1、学习按事物的两种不同特征进行二次分类,体验类包含关系。 2、培养幼儿的分析、归纳能力和操作兴趣。 活动准备:教具:颜色、大小不同的三角形、正方形图片...

    4年前   
    689    0