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);
    未经允许,请勿转载
  • 相关阅读:
    数以百万计美元的融资YO是什么东东?
    工作流和审批流
    Linux makefile 教程 很具体,且易懂
    【吐槽】火车票一票难求啊
    poj 2828 Buy Tickets(树状数组 | 线段树)
    如花搞笑图片集锦(转贴)
    苹果开发人员账号注冊流程
    优秀团队建设--美国式团队(ppt)
    屏幕分辨率(QQVGA、QVGA、VGA、XGA、WXGA、WUXGA和WSXGA+)
    怎样设计接口?
  • 原文地址:https://www.cnblogs.com/zhuzhudong/p/13499771.html
Copyright © 2011-2022 走看看