我正在使用AMD A10-7850K并且我正在编写我编写的程序的基准测试。为了大致了解缩放性能,我将模拟"模拟"通过启动2个线程而不是3个(例如)启动内核较少的CPU。我可以为GPU做些类似的事吗?
我只启动内核一次,所以我想如果有一种方法来检查一个线程正在运行的执行单元ID(或类似的东西)那么我就不能运行那个特定的GPU上的线程。
答案 0 :(得分:3)
考虑到你只想运行一次内核,你有三种两种方法。以抽象的方式考虑您的内核当前处理一个工作单元:
1)第一种方法是减少全局工作量,并向内核添加一个外部循环,以便每个内核实例处理多个工作单元。例如,如果您的全局工作大小当前为4096(即要处理4096个工作单元),请将其减少到512并使用向外for循环使每个内核实例进程8个工作单元(512 * 8 = 4096)。例如,使用256的本地工作大小,这意味着您只使用两个工作组,因此使用两个GPU计算单元(512/256 = 2)。
2)另一种方法是测试你的内核,同时在后台运行另一个很长的内核。然而,这可能不会给你非常一致的结果。
3)最后,您还可以将设备划分为多个子设备,然后在这些子设备上运行内核。子设备只能有一个计算单元。
答案 1 :(得分:1)
您可以尝试: