• 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设计时应该考虑到。

    未经允许,请勿转载
  • 相关阅读:
    Python中常见字符串去除空格的方法总结
    Python多版本pip安装库的问题
    报错No module named IPython的解决方法
    Win10家庭版如何启用本地组策略
    Oracle 11gR2新建空表不分配Segment
    Hadoop Balance
    Hive报错之java.lang.NoClassDefFoundError: org/codehaus/jackson/JsonFactory
    Hive文件格式
    Hive报错之java.sql.SQLException: Field 'IS_STOREDASSUBDIRECTORIES' doesn't have a default value
    Oracle之Union与Union all的区别
  • 原文地址:https://www.cnblogs.com/zhuzhudong/p/13496075.html
Copyright © 2020-2023  润新知