有啥方法可以为 CuPy 计算设置线程数、块数和网格数?如何?
Posted
技术标签:
【中文标题】有啥方法可以为 CuPy 计算设置线程数、块数和网格数?如何?【英文标题】:Is there any way to set number of threads , number of blocks and grids for CuPy computation? How?有什么方法可以为 CuPy 计算设置线程数、块数和网格数?如何? 【发布时间】:2021-10-25 11:26:43 【问题描述】:我正在使用带有以下代码的 Cupy,
import cupy as cp
vals, vecs = cp.linalg.eigh(Array)
对于上面的代码,我想在代码中设置线程数。怎么做。假设有 100 个线程执行代码。
【问题讨论】:
【参考方案1】:对于高级的、类似 NumPy 的 API,目前没有公共接口来更改网格/块配置。此外,许多 linalg API(例如您的示例中的 eigh
)将作业委托给 CUDA 数学库求解器,它们也不允许用户设置网格/块配置。我想知道是什么促使了这种需求。能详细点就好了。
【讨论】:
检查可扩展性。通过保持相同的问题大小和不同的线程数,我们想进行测试。 除非您编写自己的自定义内核,否则我认为像这样进行(弱或强)缩放分析是不可行的。大多数 CUDA 库都具有经过查找调整的、针对每个架构的启动配置。 是的,先生...我想知道如何为将使用 cp.linalg.eigh 的内核编写自定义内核 这也不可能。在内部,cp.linalg.eigh
从 cuSOLVER 调用 eigensolver API,但它是一个主机 API。没有办法编写调用主机函数的内核。以上是关于有啥方法可以为 CuPy 计算设置线程数、块数和网格数?如何?的主要内容,如果未能解决你的问题,请参考以下文章