【问题标题】:Concurrent simulations with OpenCL on Intel Xeon Phi在英特尔至强融核上使用 OpenCL 进行并发模拟
【发布时间】:2016-04-11 14:53:51
【问题描述】:

我的 OpenCL 应用程序未充分利用英特尔至强融核的功能。

内核使用数据库进行一些统计计算。因此,我在考虑是否可以添加第二个使用相同数据库的内核并在 Phi 上同时运行它们。

例如,为内核 1 使用 n/2 个线程,为内核 2 使用 n/2 个线程等。

有什么建议吗?

【问题讨论】:

    标签: parallel-processing opencl simulation gpgpu xeon-phi


    【解决方案1】:

    未充分利用英特尔至强融核的功能。

    • 内存利用率不足?算术单位?缓存?单卡多吗?
      • 您是否对它进行了分析以解决问题?

    对内核 1 使用 n/2 个线程,对内核 2 使用 n/2 个线程等

    • 如果内核使用过多内存并且缓存没有命中,您可以减少内核中循环的限制,以便每个线程在更少的内存上工作并且可能更频繁地命中缓存,然后应用第二个内核处理剩余的循环。如果每个线程有 m 个元素,您可以:

      • n 线程(对于 i = 0 到 m/2)+ n 线程(对于 i=m/2 到 m)
        • 类似于补丁中的矩阵乘法以使用更多缓存
    • 手动将内核向量化为 16 宽的组件,例如 int16 和 float16。

    【讨论】:

    • 我使用屋顶线模型来确定利用率,对于我的优化版本,大约是 Phi 峰值性能的 16%。
    • 您的意思是,您的数据库正在装瓶,您需要在收到第一个 blob 后立即开始计算并通过计算隐藏内存/数据库操作延迟?也许它能够同时为 20 个数据库提供服务?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多