@Artyom 解释了在 GPU 上实现矩阵乘法时需要注意的事项。
关于问题,以下是 SYCL 中的片段,显示了我正在寻找的内容:
// 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";
由此可见:
Enumerated Device: Intel(R) Gen9
Maximum workgroup size :256
Global Memory Size :3199 MB
Local Memory Size :64 KB
- 最大工作组大小为 256,即在每个维度上,最大支持 16。
- 本地缓存大小为 65536 字节 (64KB)。如果有人想进一步看,这也在这里得到证实。