0

我对 GPU 编程很陌生。我阅读了一些解释基本概念的材料。

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

我必须对 GPU 上的各个 ALU 进行“基准测试”,了解它们之间的任何潜在计算延迟。因此,我想将一组(相似的)指令分配给几个特定的​​ ALU,测量执行这组指令所需的时间,并比较结果是否有任何差异。

一般来说,我想检查 GPU 是否有某些竞争条件来源。我首先想到的是不同 ALU 的执行速度可能存在微小的差异。也许你们知道其他潜在的竞争条件来源。

但是,由于我的目标与 GPU 的典型使用(并行化等)截然相反,因此很难理解如何使用通用工具在低级别访问单个 ALU。

此致,

4

1 回答 1

1

GPU 具有您无权访问的单独的 warp 调度程序。

例如,对于 Fermi 架构,该设备有一个 Giga-Thread Scheduler 将工作分派到不同的 Streaming Multiprocessors 和一个 Dual-Warp 调度器,将 warp 分派到各个内核。但这对用户是透明的。

您可以使用 NVTX 跟踪库来分析单个指令或指令序列,它可以帮助您注释部分代码,以便随后由 Parallel Nsight 跟踪进行分析。

您可以在 NVTX 库中找到一些资料,网址为

CUDA Pro 提示:使用 NVTX 生成自定义应用程序配置文件时间线

使用 CUDA 分析工具优化应用程序性能

并在 Rob Farber 的“CUDA 应用程序设计与开发”一书的第 3 章中。

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

Visual Studio 2010下NVIDIA Tools Extension的使用

于 2013-10-16T21:59:22.787 回答