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);
    未经允许,请勿转载
  • 相关阅读:
    机器学习知识体系
    Request
    Http协议
    Servlet 学习
    Tomcat 服务器
    XML文件
    StringJdbc :jdbcTemplate
    Druid 数据库连接池
    c3p0配置文件(c3p0.properties.xml)解读
    数据库连接池 C3p0
  • 原文地址:https://www.cnblogs.com/zhuzhudong/p/13499771.html
Copyright © 2011-2022 走看看