问题标签 [cuda-uva]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
258 浏览

cuda - 在 CUDA 中,UVA 是否依赖于任何硬件特性?

我知道 CUDA 只有 4.0 版的 UVA(统一虚拟寻址)。但是 - 这只是一个软件功能吗?或者它是否需要某种硬件支持(我的意思是在 GPU 方面)?

笔记:

  • 这个 GTC 2011 演示文稿中,它说 Fermi 级 GPU 对于 P2P 副本是必需的,但它并没有说这对于 UVA 本身是必需的。
  • 注意:我知道 UVA 在 32 位 CPU 系统上不是一个好主意,我不是说那种硬件支持。
0 投票
1 回答
1500 浏览

cuda - cudaMemcpyAsync 的奇怪行为: 1. cudaMemcpyKind 没有区别。2. 复制失败,但静默

我正在熟悉一个配备 Pascal P100 GPUs+Nvlink 的新集群。我编写了一个乒乓程序来测试 gpu<->gpu 和 gpu<->cpu 带宽和点对点访问。(我知道 cuda 样本包含这样的程序,但我想自己做以便更好地理解。) Nvlink 带宽似乎是合理的(双向约 35 GB/s,理论最大值为 40)。然而,在调试乒乓球时,我发现了一些奇怪的行为。

首先,无论我指定什么 cudaMemcpyKind,cudaMemcpyAsync 都会成功,例如,如果 cudaMemcpyAsync 正在将内存从主机复制到设备,即使我将 cudaMemcpyDeviceToHost 作为类型传递,它也会成功。

其次,当主机内存没有页面锁定时,cudaMemcpyAsync 会执行以下操作:

  • 将内存从主机复制到设备似乎成功(没有段错误或 cuda 运行时错误,并且数据似乎可以正确传输)。
  • 将内存从设备复制到主机失败:没有发生segfault,并且在memcpy返回cudaSuccess后cudaDeviceSynchronize,但检查数据发现gpu上的数据没有正确传输到主机。

这种行为是可以预期的吗?我已经包含了一个在我的系统上演示它的最小工作示例代码(该示例不是 ping-pong 应用程序,它所做的只是使用各种参数测试 cudaMemcpyAsync)。

P100 启用了 UVA,因此我认为 cudaMemcpyAsync 只是简单地推断 src 和 dst 指针的位置并忽略 cudaMemcpyKind 参数是合理的。但是,我不确定为什么 cudaMemcpyAsync 无法为非页面锁定的主机内存抛出错误。我的印象是严格禁止。

0 投票
1 回答
1608 浏览

cuda - GPU 内存超额使用映射内存、统一虚拟寻址和统一内存

我正在考虑在 GPU 上处理数据的可能性,这对于 GPU 内存来说太大了,我有几个问题。

如果我理解正确,使用映射内存,数据驻留在主内存中,并且仅在访问时才传输到 GPU,因此分配超过 GPU 内存的内存应该不是问题。

UVA 类似于映射内存,但数据既可以存储在 CPU 内存中,也可以存储在 GPU 内存中。但是 GPU 是否有可能在充满自己的数据的同时访问主内存(与映射内存一样)?在这种情况下会发生内存溢出吗?我已经读过,使用映射内存,数据直接进入本地内存,而不是先传输到全局内存,在这种情况下不应该有任何溢出。这是真的吗?如果是的话,UVA 也是这样吗?

在 CUDA 6.0 中,UM 不允许超额订阅 GPU 内存(并且通常不允许分配比 GPU 更多的内存,即使在主内存中也是如此),但在 CUDA 8.0 中,它成为可能(https://devblogs .nvidia.com/parallelforall/beyond-gpu-memory-limits-unified-memory-pascal/)。我做对了吗?

0 投票
1 回答
178 浏览

memory - CUDA P2P 内存访问和 __constant__ 内存

我无法在任何地方找到答案,我可能忽略了它,但似乎无法使用__constant__内存(连同cudaMemcpyToSymbol)和 UVA 的点对点访问。

我已经尝试了 simpleP2P nvidia 示例代码,它在我拥有的带有 nvlink 的 4 NV100 上运行良好,但只要我在内核中将因子 2 声明为:

结果基本为零。如果我使用 C 预处理器(例如 #define M_ 2.0)定义它,它工作正常。

所以我想知道,这是真的还是我做错了什么?是否还有其他类型的内存也不能以这种方式访问​​(例如纹理内存)?

0 投票
0 回答
16 浏览

python - uVA 929 - 始终使用 Python 代码获取 TLE

我使用队列 + Dijkstra 算法来解决问题,但我总是得到 TLE。另外,我真的不知道如何提高性能。请帮我解决这个问题。谢谢

下面是我的代码:

0 投票
0 回答
4 浏览

virtual-memory - cuMemAddressReserve 是特定于上下文的,还是这样的保留是全局的?

使用最新的 CUDA 版本,我们可以执行较低级别的虚拟内存管理 - 物理分配、地址范围保留和映射。我想知道这些对虚拟地址空间的操作有多“全局”。

具体来说,如果我保留此地址空间的某些部分 - 是否也会禁止系统上其他上下文的冲突使用?

更具体地说,这是否意味着这cuMemAddressReserve()是特定于上下文/上下文本地的操作?该文档似乎对此没有多说。

0 投票
2 回答
63 浏览

cuda - 为什么 cuMemAddressReserve() 因 CUDA_INVALID_VALUE 而失败?

考虑以下程序(用 C 语法编写):

尝试预订时失败:

我的论点有什么问题?是尺码吗?对齐?请求地址为 0?如果是后者 - 当我真的不在乎的时候,我怎么知道要请求哪个地址?