首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >GPU矩阵计算中最优拼接尺寸的估计

GPU矩阵计算中最优拼接尺寸的估计
EN

Stack Overflow用户
提问于 2020-10-21 15:03:01
回答 1查看 589关注 0票数 1

我在SYCL中编写了一个矩阵乘法核,它是基于将子矩阵平铺到本地缓存的.我通过平铺(瓷砖大小为16x16)和不使用平铺(朴素)方法获得的性能提升高达2倍。

对于较低的瓷砖尺寸,我接近朴素的速度,这是预料中的。对于任何大于16的瓷砖大小(我会选择2的幂,因为我的矩阵大小也是如此),内核会抛出一个sycl异常。

我怀疑这是因为GPU无法在其本地缓存中容纳更大的块大小。

问题:

  1. 如何动态确定(并设置)在不同GPU上部署时支持的最大瓷砖大小?
  2. 对于Intel GPU,如何才能找到最大的GPU本地缓存大小?

我试过检查ark.intel.com,但没有列出GPU本地缓存大小。当前设置: i7-8665U与Intel UHD 620

如果你想看我的内核代码,请添加评论,我会添加。我目前不觉得有必要显示内核代码和臃肿的帖子。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-23 11:20:31

@Artyom解释了在GPU上实现矩阵乘法时需要处理的问题。

关于这些问题,以下是SYCL中显示我正在寻找的内容的片段:

代码语言:javascript
运行
复制
// Create a queue with device
default_selector d_selector;
queue q(d_selector, dpc_common::exception_handler);
std::cout << "Enumerated Device: " 
          << q.get_device().get_info<info::device::name>() << "\n";
auto wgroup_size = q.get_device().get_info<info::device::max_work_group_size>();
auto local_mem_size = q.get_device().get_info<info::device::local_mem_size>();
auto global_mem_size = q.get_device().get_info<info::device::global_mem_size>();

std::cout << "Maximum workgroup size\t:" << wgroup_size << "\n" 
        << "Global Memory Size\t:" << global_mem_size / 1024 / 1024 << " MB\n"
        << "Local Memory Size\t:" << local_mem_size / 1024 << " KB\n";

这表明:

代码语言:javascript
运行
复制
Enumerated Device: Intel(R) Gen9
Maximum workgroup size  :256
Global Memory Size      :3199 MB
Local Memory Size       :64 KB
  1. 最大工作组大小为256,即在每个维度中,最大支持16。
  2. 本地缓存大小为65536字节(64 is )。如果有人想进一步看的话,这也得到了这里的证实。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64466437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档