OpenCL设备端并行执行内核

OpenCL设备端并行执行内核
Vortex存储库的tests/OpenCL目录中有OpenCL测试程序。OpenCL程序分为主机代码[cc|cpp]和设备代码kernel.cl。
OpenCL通过在设备端并行执行内核来加快速度。在tests/opencl/sgemm中的代码作为一个具体的例子。代码经过了轻微修改,使差异更加清晰。
1)展示主机上运行的main.cc中的matmul函数,代码如下。
void matmul(const float* A,
            const float* B,
            float*       C,
            int          N) {
  for (int i = 0; i < N; ++i) {
    for (int j = 0; j < N; ++j) {
      float acc = 0.0f;
      for (int k = 0; k < N; ++k) {
        acc += A[i + k * N] * B[k + j * N];
      }
      C[i + j * N] = acc;
    }
  }
}
2)在与上述功能相对应的设备上,运行kernel.cl的程序,代码如下。
__kernel void sgemm(__global const float* A,
                    __global const float* B,
                    __global float*       C,
                    int                   N) {
  const int i = get_global_id(0);
  const int j = get_global_id(1);
  float acc = 0.0f;
  for (int k = 0; k < N; ++k) {
    acc += A[i + k * N] * B[k + j * N];
  }
  C[i + j * N] = acc;
}
OpenCL通过在设备端并行执行内核来优化加速,如图1-41所示。
图1-41 OpenCL通过在设备端并行执行内核来加快速度

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/861705.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

两本新书《智能汽车传感器:原理设计应用》《AI芯片开发核心技术详解》推荐

两本书推荐《AI芯片开发核心技术详解》、《智能汽车传感器:原理设计应用》由清华大学出版社资深编辑赵佳霓老师策划编辑的新书《AI芯片开发核心技术详解》已经出版,京东、淘宝天猫、当当等网上,相应陆陆续续可以购买。该书强力解析AI芯片的核心技术开发,内容翔实、知识点新…

字符串编码(ASCII, GBK, ANSI, Unicode(‘u‘), UTF-8编码)(转载)

GBK编码 GBK编码专门用来解决中文编码的,是双字节的。不论中英文都是双字节的。 由于ASCII编码不支持中文,因此,当中国人用到计算机时,就需要寻求一种编码方式来支持中文。于是,国人就定义了一套编码规则【版权声明】本篇文章以征得博主同意,再行转载。 出自【hxxjxw】 原…

致我最爱的你

IFC数据解析与渲染,施工进度自动生成与施工方案导出##############################QQ 3087438119

12.26 MapReduce初级编程实践3

(三)对给定的表格进行信息挖掘 下面给出一个child-parent的表格,要求挖掘其中的父子辈关系,给出祖孙辈关系的表格。 输入文件内容如下:child parent Steven Lucy Steven Jack Jone Lucy Jone Jack Lucy Mary Lucy …

12.27 熟悉Hive的基本操作

1.实验目的 (1)理解Hive作为数据仓库在Hadoop体系结构中的角色。 (2)熟练使用常用的HiveQL。 2.实验平台 操作系统:Ubuntu18.04(或Ubuntu16.04)。 Hadoop版本:3.1.3。 Hive版本:3.1.2。 JDK版本:1.8。 3.数据集 由《Hive编程指南》(OReilly系列,人民邮电出版社)提供…

12.23 NoSQL和关系数据库的操作比较

1.实验目的 (1)理解四种数据库(MySQL、HBase、Redis和MongoDB)的概念以及不同点; (2)熟练使用四种数据库操作常用的Shell命令; (3)熟悉四种数据库操作常用的Java API。 2.实验平台 (1)操作系统:Linux(建议Ubuntu16.04或Ubuntu18.04); (2)Hadoop版本:3.1.3; (…

12.24 MapReduce初级编程实践1

1.实验目的 (1)通过实验掌握基本的MapReduce编程方法; (2)掌握用MapReduce解决一些常见的数据处理问题,包括数据去重、数据排序和数据挖掘等。 2.实验平台 (1)操作系统:Linux(建议Ubuntu16.04或Ubuntu18.04) (2)Hadoop版本:3.1.3 3.实验步骤 (一)编程实现文件合…

12.19熟悉常用的HDFS操作1

1.实验目的 (1)理解HDFS在Hadoop体系结构中的角色; (2)熟练使用HDFS操作常用的Shell命令; (3)熟悉HDFS操作常用的Java API。 2. 实验平台 (1)操作系统:Linux(建议Ubuntu16.04或Ubuntu18.04); (2)Hadoop版本:3.1.3; (3)JDK版本:1.8; (4)Java IDE:Eclip…

12.22熟悉常用的HBase操作2

(二)HBase数据库操作 1. 现有以下关系型数据库中的表和数据(见表14-3到表14-5),要求将其转换为适合于HBase存储的表并插入数据: 表14-3 学生表(Student)学号(S_No)姓名(S_Name)性别(S_Sex)年龄(S_Age)2015001Zhangsanmale232015002Maryfemale222015003Lisimale…

12.15熟悉常用的Linux操作和Hadoop操作1

1.实验目的 Hadoop运行在Linux系统上,因此,需要学习实践一些常用的Linux命令。本实验旨在熟悉常用的Linux操作和Hadoop操作,为顺利开展后续其他实验奠定基础。 2.实验平台 (1)操作系统:Linux(建议Ubuntu16.04或Ubuntu18.04); (2)Hadoop版本:3.1.3。 3.实验步骤 1.熟…

某乎搜索接口加密参数分析

打开某乎,打开浏览器开发者工具,某乎主页随便搜索一个词,如 hello,找到接口如下: aHR0cHM6Ly93d3cuemhpaHUuY29tL2FwaS92NC9zZWFyY2hfdjM/ 该接口为 GET 请求,url 参数未加密,请求头参数有几个未知,如 x-zse-93,x-zse-96,x-zst-81,经测试,请求头必带的参数有 cooki…