zoukankan      html  css  js  c++  java
  • OpenCL 设计Host Application

    1、程序设计要求

      主机内存需求。

      二进制需求。使用用x86-64(64位)或ARM®32位ARMV7-A。

      多个主机线程。

      乱序的命令队列。

      多个命令队列同时执行内核的要求。要同时在同一个OpenCL程序中执行多个kernel,要为投股市运行的每个kernel实例化一个单独的有序命令队列,也可以通过使用单个乱序命令队列并排序各个独立的kernel(彼此没有依赖关系)来实现。

    2、分配OpenCL buffer以对全局内存进行手动分区

      手动分区global memory buffer可以控制跨buffer的内存访问,从而最大程度提高内存带宽。可以跨相同内存类型或不同内存类型的接口对buffer进行分区。

    3、在kernel执行期间收集配置文件数据

      如果主机应用程序完成后kernel执行完成,可以显示查询FPGA来手收集kernel执行期间的配置文件。对于绝大多数应用程序,内核执行完成后自动读取配置文件的默认行为已经足够了。而可以使用Intel dynamic profiler可以在设计执行时从硬件收集性能信息。

      在编译期间对opencl kernel进行分析,会自动生成profile.mon文件,在FPGA上完成kernel执行后,将配置文件数据写入profile.mon。然而若kernel执行完成实在主机应用程序终止之后,那么profille.mon文件中没有关于kernel调用的分析信息,这种情况下可以修改host代码来获得kernel执行期间的性能分析信息。

      在kernel执行过程中收集配置文件数据可能会增加kernel的延迟,从而增加执行kernel的开销,如果需要在kernel运行时查询FPGA配置信息,需要在host库中调用:

    extern CL_API_ENTRY cl_int CL_API_CALL
    clGetProfileInfoIntelFPGA(cl_event);
    未经允许,请勿转载
  • 相关阅读:
    nginx搭建https服务器
    linux重新安装grub2
    docker使用笔记
    开户vim编程之--cscope支持
    mac代码自动补全git上
    python常用函数大总结
    服务器管理模块信息收集
    Virtual Data Optimizer虚拟存储优化器实战
    虚拟化-SDDC软件定义数据中心
    富士通 DX90 S2存储分配映射盘
  • 原文地址:https://www.cnblogs.com/zhuzhudong/p/13499771.html
Copyright © 2011-2022 走看看