opencl写的程序运行在FPGA上反而比CPU上差

最近在学习opencl,写了一段smith-waterman算法计算得分矩阵的程序,运行在FPGA上反而比CPU上性能差。因为是初学,不知道写的哪里有问题。
附上代码:

__kernel void __attribute__ ((reqd_work_group_size(512,512,1)))
krnl_sw(
     __global int* ref,
     __global int* alt,
     __global int* sw,
     __global int* btrack,
     const int overhangStrategy,
     const int match,
     const int mismatch,
     const int open,
     const int extend,
     const int ncol,
     const int nrow
     ) {

 int col = get_global_id(0);
 int row = get_global_id(1);

 for (k = 2;k<ncol+nrow-1;k++)
{
    if(col + row == k)
    { 
            up_score = sw[(row - 1)*ncol + col] + extend*(row-1) + open ;
            left_score = sw[row*ncol + col - 1] + extend*(row-1) + open ;
            up_left_score = sw[(row - 1)*ncol + col - 1] + diag_score(ref[col - 1], alt[row - 1], match, mismatch);
            sw[row*ncol + col] = max(up_score, left_score);
            sw[row*ncol + col] = max(up_left_score, sw[row*ncol + col]);

    }
}
  return;
}

大致的计算过程是初始化矩阵第一行和第一列,然后延对角线放向逐次计算斜对角上矩阵的得分。
FPGA计算过程

计算512*512的矩阵,运行10次,CPU上耗时100ms不到,FPGA上反而是几十秒,慢了近1000倍....

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
SDAccel环境opencl源码在FPGA上
赛灵思公司给的官方的代码实例,初学者可以下载学习,熊最简单的helloword程序开始。
OpenCL在GPU和FPGA上编程的区别
先发几篇好文章: https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/wp/wp-201406-acceleware-opencl-on-fpgas-for-gpu-programmers.pdf https://www.intel.com/content/dam/www/programmable/us/...
双核CPU工具,让程序运行在不同的cpu内核上
为了充分利用双核CPU性能,本工具可以让程序指定在不同的CPU内核上运行。
测量平差(上)
测量平差上册为职业教育教材,讲述了误差理论与测量平差的准则,条件平差原理,发方程组成和解算
ARM嵌入式系统上OpenCL测试
By Toradex Giovanni Bauermeister 1). 简介 相比曾经,如今科技设备对处理性能和速度要求越来越高。为了应对这种技术需求,许多公司发明了不少方法来获得更好的处理性能。例如苹果公司,发明了 Open Computing Language (OpenCL)。2008年6月,苹果公司向 Khronos Group 提交了 OpenCL 工作建议。历经五个月的研发,Op
关于FPGA的OPENCL的资料
OPENCL中文资料不多,这是其中一本,可以作为学习OPENCL的好资料。只作为学习用哦!
intel fpga opencl 编程指南
intel fpga opencl 编程指南 The Intel® FPGA SDK for OpenCL™ Programming Guide provides descriptions, recommendations and usage information on the Intel Software Development Kit (SDK) for OpenCL compiler and tools. The Intel FPGA SDK for OpenCL1 is an OpenCL2-based heterogeneous parallel programming environment for Intel FPGA products.
OpenCL FPGA 编译环境配置
几个有用的链接,持续。。。 linux原码: https://github.com/altera-opensource/linux-socfpga   将OpenCL加到Linux内核中去: https://www.altera.com/documentation/ewa1403875738903.html#mwh1391806417857   为Cyclone 5编译linux内核...
Linux上程序运行管理
本课程全面介绍了从linux基础内容,一步步,手把手掌握linux基本用法和常见管理方式。让你从课堂即实战,全面了解Linux系统组成、文件系统认识及基础命令使用,学习完可轻松驾驭。
FPGA上的人脸检测算法研究
对人脸识别做了简单介绍,对FPGA实现做了基本分析,以及实现消耗资源介绍。
FPGA开发全攻略_上
FPGA参考书精选之一 FPGA开发全攻略_上
h.264在fpga上的实现
内含几篇关于fpga实现h.264编码的论文
FPGA 开发全攻略(上)
适合初学者学习的FPGA开发资料,详细介绍了FPGA开发的相关内容。
2ASK在FPGA上的实现
2ASK在FPGA上的实现,所属频段为7分频。可通过更改mif文件来更改分频效果。
FPGA开发全攻略(上)
FPGA 开发流程 实战技巧 早期系统规划
FPGA上实现fifo
在fpga中实现fifo,配合数码管显示,仅供学习参考
FPGA开发全攻略(上)(下)
FPGA开发全攻略(上) FPGA开发全攻略(下)
FPGA上Norflash验证
在FPGA上进行Norflash的工作验证,通过擦,写,读进行测试
ADPCM在FPGA上的实现
ADPCM在FPGA上的实现,基于FPGA音视频开发板,音质尚可,代码注释详细、内附说明文档,44.1K音频压缩与解压
FPGA上UCOS系统
自己看慢慢学 主要是做了FPGA的基本UCOS的移植,试验成功,可以应用,硬件基础是在黑金的板子上跑的
FPGA开发全攻略上
先声明这不是纸质书籍的电子版,这是2009年2月编排的,因为还没出版的哦。里面有许多关于xininx FPGA的资料。
FPGA开发全攻略(上/下)
FPGA开发全攻略(上/下) 是FPGA学习过程中不可或缺的一部分 ~
FPGA开发全攻略——上
FPGA开发技术 适于新手的FPGA学习
汉明码在FPGA上的实现
用FPGA技术实现汉明码的编码与译码设计
FPGA开发全攻略(上,下)
FPGA开发全攻略,上,工程师创新设计宝典-基础篇 FPGA开发全攻略,下,工程师创新设计宝典-技巧篇
ucos-ii在FPGA上的移植
ucos-ii在FPGA上的移植,ucos-ii在FPGA上的移植
FPGA开发全攻略(上)
本资料主要针对有一定FPGA开发基础的用户,教你如何提高FPGA的开发质量
FPGA上运行LINUX
U盘分区:一个FAT32的BOOT,一个LINUXEXT3的rootfs,电脑不显示盘,就格式化一下,注意盘区类型别格式化没了安装VMWARE:用这个打开linux虚拟机,运行要密码,解压也要密码,解压字符(解压前输入)sudo tar --strip-components=3 -C /media/z/rootfs -xzpf linaro-o-ubuntu-desktop-tar-2011121...
《FPGA 开发全攻略上》
FPGA 开发全攻略,FPGA开发全攻略—工程师创新设计宝典,张国斌
为什么ffmpeg在x5506的cpu上编码效率那么差
1. 在Q9500cpu的机子上用ffmpeg实时编码mpeg2,占用cpu资源16%左右,也就是一个核心的50%的cpu就搞定rn1.在有X5506cpu的服务器上做同样的事情,不能正常进行实时编码,偶尔由于画面简单可以进行编码,也要占一个核心的超过70%负载。rnrnQ9500, Core 4 核, 2.88Grnxeon x5506,4核, 两颗8核。2.13Grnrn差距怎么这么大?
[求助] 用opencl在GPU上的float运算和CPU上的float计算
用opencl在GPU上的float运算和CPU上的float计算,结果精度相差很大,整数就没问题,是少设置了什么还是怎么回事?
B150M-D3 上8代 CPU
B150M-D3 上8代 CPU, 破解100系主板上8代酷睿处理器
在amd cpu上汇编
在amd的cpu和intel近期的cpu上使用原先8086的指令集编16位汇编程序rn会有困难吗?rn刚开始学汇编,很多东西不清楚,希望各位多多指教:)rn
FPGA异构计算——基于OpenCL的开发方法
《FPGA异构计算:基于OpenCL的开发方法》主要介绍了FPGA异构计算系统的基本架构和开发方法,并以多个不同的案例为读者展示了如何利用几种常用的优化方法来进一步提升系统性能。《FPGA异构计算:基于OpenCL的开发方法》既可以作为高性能异构计算领域研发者的参考书籍,也可以作为有兴趣掌握这一新技术的电子工程师、软件工程师或在校学生的入门教程。
基于opencl fpga开发的方法
介绍基于opencl的fpga开发方法,内容很丰富,是不可多得的好资料!
FPGA异构计算 ,基于OpenCL的开发方法
近年来,异构计算得到了业界的普遍关注。作为高性能计算的一种主流解决方案,CPU+GPU的异构计算模式已经得到了产业界和学术界的广泛关注。从2011年Altera公司发布支持利用OpenCL来开发FPGA的SDK工具以后,采用CPU+FPGA构成异构计算系统成为另一种具有竞争力的解决方案。本书主要介绍了FPGA异构计算系统的基本架构和开发方法,并以多个不同的案例为读者展示了如何利用几种常用的优化方法来进一步提升系统性能。 本书既可以作为高性能异构计算领域研发者的参考书籍,也可以作为有兴趣掌握这一新技术的电子工程师、软件工程师或在校学生的入门教程。
有用opencl开发FPGA的吗
GPU上工作项可以对应为核,fpga上工作项对应着什么?
GPU上和CPU上执行函数时间比较
clock()函数来计算时间,由于程序比较大,运行的时间比较长,但每次运行完这后得到的结果都是负数,有些不解,查些资料后才明白了,原来clock_t是long型,其取值范围是-2147483648~2147483648,利用clock()函数取得的时间最大值为2147483648 / 1000000 = 2147.483647s,大约为35.79分钟,也就是说利用clock()函数只能记录的运行时
程序运行占用内存上10MB
我用delphi7写了一个信封打印软件,就四个窗体,一个信息录入,一个信息编辑,一个打印预览,还有一个主窗体,数据库用BDE连接,报表用的quickreport 3.6.2,为何程序编译后运行的时候占用了差不多10MB内存?foxmail 4.2运行的时候才占用700多k。我想控制程序尽量少占用内存,我应该怎么做呢?
获取任务栏上程序运行个数
例如:打开一个Excel程序,新建了很多的文档,Book1,Book2,Book3,Book4....rn在任务栏上也会显示出Book1,Book2,Book3,Book4....rn我怎么能获取有多少个Book文档存在任务栏上呢?
相关热词 c#检测非法字符 c#双屏截图 c#中怎么关闭线程 c# 显示服务器上的图片 api嵌入窗口 c# c# 控制网页 c# encrypt c#微信网页版登录 c# login 居中 c# 考试软件