rggz8888 2018-12-27 09:58
浏览 947

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倍....

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 matlab数字图像处理频率域滤波
    • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
    • ¥15 ELGamal和paillier计算效率谁快?
    • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
    • ¥15 ubuntu系统下挂载磁盘上执行./提示权限不够
    • ¥15 Arcgis相交分析无法绘制一个或多个图形
    • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
    • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
    • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
    • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误