问题标签 [gpu]

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 回答
1225 浏览

cuda - 用于 CUDA 编程的 Nvidia Tesla 与 480

我正在研究 CUDA 编程。
我可以选择购买单个 NVidia Tesla 还是购买大约 4-5 个 NVidia 480?
你有什么建议吗?

0 投票
1 回答
1297 浏览

cuda - 使用 CUDA 解决涉及更复杂数据结构的问题

所以我读了一些关于 CUDA 和 GPU 编程的内容。我注意到一些事情,例如对全局内存的访问很慢(因此应该使用共享内存),并且 warp 中线程的执行路径不应该发散。

我还查看了程序员手册和nbody 问题中描述的(密集)矩阵乘法示例。并且实现的技巧似乎是相同的:将计算安排在网格中(在矩阵 mul 的情况下已经如此);然后将网格细分为更小的图块;将切片提取到共享内存中并让线程尽可能长时间地计算,直到需要将数据从全局内存重新加载到共享内存中。

在 nbody 问题的情况下,每个身体-身体相互作用的计算是完全相同的(第 682 页):

它需要两个物体和一个加速度矢量。身体向量有四个分量,它的位置和重量。阅读论文时,计算很容易理解。

但是如果我们有一个更复杂的对象,具有动态数据结构呢?现在只假设我们有一个对象(类似于论文中介绍的 body 对象),它附加了一个其他对象的列表,并且每个线程中附加的对象数量不同。我怎么能在没有线程执行路径发散的情况下实现它?

我还在寻找解释如何在 CUDA 中有效实现涉及更复杂数据结构的不同算法的文献。

0 投票
1 回答
880 浏览

cuda - 当CUDA线程在同一个循环中时如何同步它们,我们需要同步它们以仅执行有限的部分

我已经编写了一些代码,现在我想在 CUDA GPU 上实现它,但我是同步新手。下面我将展示代码,我希望所有线程都执行该 LOOP1(因此我希望这部分能够利用 CUDA,而其余部分(来自 LOOP1 的其他部分)仅由一个单线程。

0 投票
4 回答
27385 浏览

floating-point - CUDA中的双精度浮点

CUDA 是否支持双精度浮点数?

另外,同样的原因是什么?

0 投票
4 回答
1526 浏览

performance - 周期性 GPU 性能问题

我有一个 WinForms 应用程序,它使用 XNA 在控件中为 3D 模型设置动画。该应用程序几个月来一直运行良好,但最近我开始在动画中遇到周期性停顿。着手调查正在发生的事情,我已经确定了以下事实:

  1. 它只发生在我的机器上,其他机器工作正常
  2. 从我的渲染循环中删除所有内容并不能改善问题

在 2. 我实际上并没有删除所有内容,我将循环限制为在我的 GraphicsDevice 上设置视口,然后执行 GraphicsDevice.Present。

为了进一步挖掘,我启动了 PIX 来捕获一些统计数据。可以在此处 (Run6)此处 (Run14)查看两次 PIX 运行的屏幕截图。Run6 使用的是我原来的渲染循环,而 Run14 使用的是基本的 Present 循环。

PIX 告诉我 GPU 正在定期做某事,我认为这是导致暂停的原因。这可能是什么原因?或者我该如何找出 GPU 实际在做什么?

更新:因为我通常相信我的代码是完美的(谁在笑?)我从头开始了一个新的 XNA 项目,看看它是否表现出相同的行为。所以开始一个新的 XNA 3.1 Windows 游戏项目并运行 PIX 我得到了这个时间线。相同的周期性停顿。所以问题必须在堆栈中较低,在 XNA 或 Direct3D 中。

所以 PIX 显示 GPU 正在处理某些事情,我可以看到在每一帧中进行的 DX 调用列表,并且时间计算显示在IDirect3DDevice9::Present调用期间(或之后)发生了暂停。

更新 2:我之前在有问题的机器上安装和卸载了 XNA 4.0 CTP。我不能确定这是否相关,但我认为重新安装 XNA Game Studio 3.1 位可能会有所作为。事实证明确实如此。

基本问题保持不变(赏金仍在增加):什么会影响 XNA 3.1(或 DirectX)使其行为如此,是否有任何用于 DirectX 和/或 GPU 级别的日志记录/跟踪工具可以阐明发生了什么吗?

注意:我在具有 8GB RAM 的 Windows 7 x64 双核机器上使用 XNA 3.1。

注意2:在此处的 XNA Creators 论坛上也发布了此问题。

0 投票
4 回答
8050 浏览

performance - GPU 功能会影响虚拟机性能吗?

虽然这很多看起来不像是直接的编程问题,但它会影响我的开发活动,所以它似乎属于这里。

似乎越来越多的开发人员正在转向虚拟环境在他们的计算机上进行开发活动,SharePoint 开发就是一个典型的例子。此外,作为一名培训师,我为我教授的所有课程提供虚拟培训环境。

我最近购买了一台新的戴尔 E6510 来旅行。它具有 i7 620M(双核,超线程 CPU,运行频率为 2.66GHz)和 8 GB 内存。阅读规格表,听起来这将是一台很棒的笔记本电脑,可以随身携带和运行虚拟机。

虽然拿到了笔记本电脑,但我对在虚拟机中开发的用户体验感到非常失望。给虚拟机 4 GB 内存,它很慢,我可以输入完整的句子并观看虚拟机“追赶”。

我的公司有我们为我们的课程提供的培训笔记本电脑。它们是戴尔 Precision M6400 英特尔酷睿 2 双核 P8700,运行频率为 2.54Ghz,内存为 8 GB,与 E6510 相比,这些笔记本电脑的体验是白天和黑夜。它们很清晰,您几乎不知道自己在虚拟环境中运行。

由于 E6510 在所有类别中都应该比 M6400 更快,我不明白为什么新笔记本电脑会更慢,所以我逐个组件进行了比较,唯一一个 E6510 性能不如 M6400 的地方是图形部门. M6400 运行的是 nVidia FX 2700m GPU,E6510 运行的是 nVidia 3100M GPU。查看两个 GPU 的基准测试表明,FX 2700M 的速度是 3100M 的两倍。

http://www.notebookcheck.net/Mobile-Graphics-Cards-Benchmark-List.844.0.html

3100M = 111 (E6510)

FX 2700m = 47th (Precision M6400)

Radeon HD 5870 = 8th (Alienware)

主机操作系统和来宾操作系统一样是 Windows 7 64 位,在 Virtual Box 3.1.8 中运行,并在来宾上安装了 Guest Additions。虚拟环境中使用的 IDE 是 VS 2010 Premium。

因此,经过长时间的设置,我的问题是:

GPU 是否会显着影响虚拟机的性能,或者是否有其他我没有考虑的因素可以用来提高虚拟机的性能?在购买我们希望使用虚拟化开发环境的笔记本电脑时,我们现在是否必须考虑 GPU 性能?

提前致谢。

干杯,戴夫

编辑:

两个系统中的 HDD 为 7200 RPM,E6510 具有 500GB,而 M6400 在非 RAID 配置中具有 2x 250GB。

此外,当我通过转到非 Aero 主题关闭 Windows 7(主机和来宾)的一些图形功能时,VM 性能明显提高。

0 投票
3 回答
3960 浏览

cuda - 用于 GPU 编程的 DirectCompute 与 OpenCL?

我有一些(财务)任务应该很好地映射到 GPU 计算,但我不确定我应该使用 OpenCL 还是 DirectCompute。我做了一些 GPU 计算,但那是很久以前(3 年)。我是通过 OpenGL 完成的,因为当时没有任何替代方案。

我看过一些 OpenCL 演示,它看起来非常好。我还没有看到有关 DirectCompute 的任何信息,但我希望它也很好。

目前我对跨平台兼容性不感兴趣,此外,我希望这两个模型足够相似,不会在尝试从一个模型转换到另一个模型时引起大麻烦。

那么,你用过这两个中的任何一个吗?特别是 DirectCompute?它与 OpenCL(和 CUDA)相比如何?

0 投票
1 回答
438 浏览

java - GPU 上的内存大小分配 - opengl 纹理加载问题

我正在从 32 w x 32 高度的图像中加载像素。我加载它们的格式是通过java的ARGB。当我将它绑定到视频卡时,我可以预期视频卡可能会使用大约 32*32*4 字节或 4K 的大小。

同样,1024 w、1024 h 将是 1024*1024*4 = 4MB。

我的理解正确吗?现在我明白所有记忆都去哪儿了!

0 投票
1 回答
352 浏览

xna - 360 上的 60K+ 精灵?

只是想知道 - 在我的脑海中抛出一些想法 - 关于为 360 启动一个新的 XNA 项目。我希望它是复古的老派,并模拟扫描线和调色板等。

作为这个想法的一部分,我最理想的做法是手动绘制屏幕的每个像素。所以,在最坏的情况下,我必须在 252x240 分辨率上绘制大约 60K 个精灵(我认为这是正确的)。一次在屏幕上显示 60K 个精灵。

那么,在我尝试编写此代码之前 - XBOX 360 是否能够跟上这一切?那是很多精灵,但它们不是大精灵,所需的纹理数据也不存在。然而,我猜这个项目将如何实现会成功或失败,但我所想的只是想出一个 2D 数组并映射此时需要绘制的颜色值。

当然,现在这已经被淡化了。但是你们都建议什么?

编辑:每个精灵将代表一个像素。例如,0,0 处的精灵。另一个在 0,1。等等

0 投票
3 回答
1418 浏览

c - 无法杀死在 NVIDIA GPU 上运行的坏内核

我在一个真正的修复。请帮忙。这很紧急。

我有一个生成多个主机(CPU)线程(pthreads)的主机进程。这些线程依次调用 CUDA 内核。这些 CUDA 内核是由外部用户编写的。所以可能是坏内核进入了无限循环。为了克服这个问题,我设置了 2 分钟的超时时间,这将杀死相应的 CPU 线程。

杀死 CPU 线程也会杀死 GPU 上运行的内核吗?就我所测试的而言,它没有。

如何杀死当前在 GPU 中运行的所有线程?

编辑:我使用调用内核的 CPU 线程的原因是,服务器有两个 Tesla GPU。所以线程会交替调度GPU设备上的内核。

谢谢, 阿文德