zoukankan      html  css  js  c++  java
  • OpenCL 创建kernel

    1、命名

      建议只包含字母和数字。

    2、优化数据处理循环的策略

      使用例如展开循环、设置work-group/计算unit以及work-item大小等方式优化kernel的数据处理效率。

    (1)展开循环

    如果没有loop-carried dependency且循环内容可以并行执行,则可unroll。

    3、优化指针到本地内存大小的策略

      离线编译器可以为指针参数构建正确大小的local memory系统,如果不指定size,则会使用默认size。

    4、使用通道拓展

      通道拓展提供了一种机制,可以以高效率及低延迟在kernel之间同步数据并同步kernel。

    5、使用OpenCL pipe

      SDK支持使用pipe。

    6、实现任意精度的整数

      可以使用任意精度整数拓展来定义具有自定义位宽的整数,最大64bits。

    7、在条件编译时使用预定义的预处理器宏

      使用预定义的预处理器宏,可以有条件的编译kernel代码中的某些部分。

    8、声明__constant地址空间限定符

    9、在OpenCL kernel中使用结构数据类型作为参数

      通过值或指向结构的指针传递OpenCL kernel中的结构参数(struct)。

    10、推测寄存器

      通常,如果对变量的访问是固定的,且不需要任何的动态索引,那么离线编译器会选择寄存器。

    11、启用双精度浮点数计算

      SDK支持双精度浮点数计算功能。

    12、用于单个work-item kernel的单周期浮点累加器

      在循环中执行累加的单个work-item kernel可以使用离线编译器中的单周期浮点累加器功能。

    13、整数promotion规则

      使用intX_t数据类型时应用的整数promotion规则与C++C不同,在kernel设计时应该考虑到。

    未经允许,请勿转载
  • 相关阅读:
    2021.10 db2转换openGauss个人工作总结及心得
    cpu 超过100%,我的排查步骤
    记美团一面,凉凉~
    Eureka挂掉,服务之间能否正常调用?
    jpa中的常用关键字
    Linux修改文件目录所属用户和组
    linux 下如何查看端口占用?
    windows 下如何查看端口占用情况?
    docker学习网站
    api接口文档生成,无需其他配置一键生成基于文本注释
  • 原文地址:https://www.cnblogs.com/zhuzhudong/p/13496075.html
Copyright © 2011-2022 走看看