使用CUDA / OpenCL将指令/算法分配给特定的ALU?

时间:2013-10-16 08:09:38

标签: cuda opencl race-condition alu

我是GPU编程的新手。我阅读了一些解释基本概念的材料。

但是,我想知道是否可以将一组指令或整个算法/二进制分配给特定的ALU,这样我可以确定这些指令仅由此ALU执行(因此,绕过系统自动处理并行化?)

我必须"基准" GPU上的各个ALU,关于它们之间的任何潜在计算延迟。因此,我想为几个特定的​​ALU分配一组(类似的)指令,测量执行这组指令所需的时间,并在有任何差异时比较结果。

一般情况下,我想检查GPU是否有某些竞争条件来源。我想到的第一个是不同ALU执行速度的潜在微小差异。也许你们知道其他潜在的竞争条件来源。

然而,由于我的目标与GPU(parllelization等)的典型使用相当直接,因此我很难看到如何使用常用工具在低级别上访问单独的ALU。 / p>

致以最诚挚的问候,

1 个答案:

答案 0 :(得分:1)

GPU具有您无权访问的各个warp调度程序。

对于Fermi架构,例如,该设备有一个千兆线程调度程序,可将工作分配给不同的流式多处理器,内部的双扭曲调度程序将warp调度到各个内核。但这对用户来说是透明的。

您可以使用NVTX跟踪库来帮助您注释部分代码,以便随后通过Parallel Nsight跟踪进行分析。

您可以在

上的NVTX库中找到一些资料

CUDA Pro Tip: Generate Custom Application Profile Timelines with NVTX

Optimizing Application Performance with CUDA Profiling Tools

以及Rob Farber撰写的“CUDA应用程序设计与开发”一书的第3章。

关于使用NVTX,请在此处查看我的问题:

Use of NVIDIA Tools Extension under Visual Studio 2010