问题标签 [nvidia]
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.
sdk - 尝试在 NVIDIA 的 SDK 模板中混合 OpenCL 和 CUDA
我在设置一个实验时遇到了困难,我在设备上使用 CUDA 分配内存,将该指针指向设备上的内存,在 OpenCL 中使用它,然后返回结果。我想看看这是否可能。我很难让一个 CUDA 项目工作,所以我只是在他们的 SDK 中使用了 Nvidia 的模板项目。在 makefile 中,我将 -lOpenCL 添加到 common.mk 的 libs 部分。当我这样做时一切都很好,但是当我添加#include <CL/cl.h>
到 template.cu 以便我可以开始进行 OpenCL 调用时,我得到了 100 多个错误。它们看起来都与此相似,但末尾有不同的函数名称:
/usr/lib/gcc/x86_64-linux-gnu/4.4.1/include/xmmintrin.h(334):错误:标识符“__builtin_ia32_cmpeqps”未定义
我很难弄清楚为什么。如果可以的话请帮忙。此外,如果有更简单的方法来设置能够调用 CUDA 和 OpenCL API 的项目,请告诉我。
cuda - 使用 Compute Prof (Cuda/OpenCL) 的每个块静态分配的共享内存大小
在 Nvidia 的计算专家中有一个名为“每个工作组的静态私有内存”的列,它的工具提示说“每个块的静态分配共享内存的大小”。我的应用程序显示每个块我得到 64(我假设的字节)。这是否意味着我正在使用这些字节的 1-64 之间的某个位置,或者分析器只是告诉我分配了这么多的共享内存,谁知道它是否被使用了?
opengl - 使用 GPU 进行位图转换
我不知道这是否是正确的论坛。无论如何,这是问题所在。在我们的一个应用程序中,我们显示医学图像,并在它们之上显示一些算法生成的位图。真正的位图是 16 位灰度位图。由此我们生成一个基于查找表的颜色位图,例如
显示器运行良好,适用于 256x256 的小图像。但是当显示区域变大比如 1024x1024 时,灰度到彩色位图的转换需要一段时间,并且交互不再平滑。最近,我听到了很多关于通用 GPU 编程的信息。在我们的部署中,我们有高端 (Nvidia QuadroFX) 显卡。
我们的应用程序是使用 .Net/C# 构建的,如果需要,我也可以添加一点点 C++/CLI。现在我的问题是这个位图转换可以卸载到图形处理器吗?我应该在哪里寻找进一步的阅读?
.net - .Net Lib\Wrapper 可以清除 ATI 和 Nvidea API 之间在 GPU 上的计数差异吗?
我想使用 GPU 进行计数。如果没有找到 GPU 并为我提供统一的 api,我需要它落在 CPU 上。(对任何 .net 感兴趣,例如 №4)
memory - 如何缓解 OpenCL/CUDA 中的主机+设备内存传输瓶颈
如果我的算法受到主机到设备和设备到主机内存传输的瓶颈,唯一的解决方案是不同的还是修改后的算法?
c - CUDA 内核在 2 个不同的 GPU 上产生不同的结果(GeForce 8600M GT 与 Quadro FX 770M)
我一直在研究 AES CUDA 应用程序,并且我有一个在 GPU 上执行 ECB 加密的内核。为了确保算法的逻辑在并行运行时不会被修改,我发送一个由 NIST 提供的已知输入测试向量,然后从主机代码将输出与 NIST 提供的已知测试向量输出与断言进行比较。我已经在我的 8600M GT NVIDIA GPU 上运行了这个测试。这是在 Windows 7 下运行的,驱动程序版本为 3.0。在这个场景下,一切都很完美,断言成功。
现在,当应用程序在 Quadro FX 770M 上运行时。启动相同的应用程序,发送相同的测试向量,但得到的结果不正确,断言失败!!。这运行在具有相同驱动程序版本的 Linux 上,内核由 256 个线程执行。在内核中并跳过算术预先计算的 256 个元素的查找表。这些表最初加载到全局内存中,启动内核的 256 个线程中的 1 个线程协作加载查找表的 1 个元素,并将该元素移动到共享内存中的新查找表中,从而减少了访问延迟。
最初,我考虑了由于 GPU 之间的时钟速度差异导致的同步问题。因此,可能是线程正在使用仍未加载到共享内存中的值,或者以某种方式仍未处理的值,从而使输出混乱并最终使其不正确。
在这里声明了已知的测试向量,所以基本上它们被发送到负责设置内核的 AES_set_encrption
在这里,setup 函数负责分配内存,调用内核并将结果发送回 hos。请注意,我在发送回主机之前进行了同步,所以此时一切都应该完成,这让我认为问题出在内核中。
最后在内核中,我计算了一组 AES 轮次。因为我认为同步问题在内核中,所以我设置了 __syncthreads(); 在每一轮或计算操作之后,以确保所有线程同时移动,因此不会评估未计算的值..但这仍然没有解决问题..
这是我使用工作正常的 8600M GT GPU 时的输出:
AES 256 位密钥
NIST 测试向量:
原语:6bc1bee22e409f96e93d7e117393172a
密钥:603deb1015ca71be2b73aef0857d7781
密文:f3eed1bdb5d2a03c64b5a7e3db181f8
GPU 加密:f3eed1bdb5d2a03c64b5a7e3db181f8
测试状态:通过
这是我使用 Quadro FX 770M 失败的时候!!
AES 256 位密钥 NIST 测试向量:
原语:6bc1bee22e409f96e93d7e117393172a
密钥:603deb1015ca71be2b73aef0857d7781
密文:f3eed1bdb5d2a03c64b5a7e3db181f8
GPU 加密:c837204eb4c1063ed79c77946893b0
Generic assert memcmp (out, testCipherText, 16) == 0 已抛出错误
测试状态:失败
即使处理相同的内核,两个 GPU 计算不同结果的原因可能是什么???我将不胜感激任何提示或故障排除任何人可以给我或任何步骤以解决此问题
提前致谢!!
sdk - 为什么 OpenCL 矢量添加 Nvidia SDK 示例使用异步写入?
向量加法示例具有以下代码:
之后它会立即启动内核。这怎么不会引起问题?我们不能保证内核启动时图形内存缓冲区已被完全写入,对吗?
memory - CL_OUT_OF_RESOURCES 用于 1GB VRAM 的 200 万个浮点数?
看起来 200 万个浮点数应该没什么大不了的,只有 8MB 的 1GB 的 GPU RAM。我有时可以分配这么多,有时甚至更多,没有麻烦。当我执行 clEnqueueReadBuffer 时,我得到 CL_OUT_OF_RESOURCES,这看起来很奇怪。我能找出问题真正开始的地方吗?OpenCL 不应该在 clEnqueueReadBuffer 上像这样失败,对吧?应该是我分配数据的时候吧?除了错误代码之外,还有什么方法可以获取更多详细信息吗?如果我能看到 OpenCL 声明 CL_OUT_OF_RESOURCES 时分配了多少 VRAM,那就太酷了。
c++ - 使用 Cg 渲染到屏幕外帧缓冲区对象的示例
我想看一个使用 nVidia Cg 渲染到屏幕外帧缓冲区对象的示例。
我可以访问的计算机有显卡但没有显示器(或 X 服务器)。所以我想渲染我的东西并将它们作为图像输出到磁盘上。显卡是GTX285。
c - 大型矩阵的 CUDA 矩阵乘法中断
我有以下矩阵乘法代码,使用 CUDA 3.2 和 VS 2008 实现。我在 Windows server 2008 r2 企业版上运行。我正在运行 Nvidia GTX 480。以下代码适用于“宽度”(矩阵宽度)的值高达 2500 左右。
当我将“宽度”设置为 3000 或更大时,黑屏后出现以下错误:
上网查了一下,看到有人出现这个问题,是因为看门狗在内核挂起超过5秒后就杀掉了。我尝试在注册表中编辑“TdrDelay”,这延迟了黑屏和出现相同错误之前的时间。所以我得出结论,这不是我的问题。
我调试了我的代码,发现这行是罪魁祸首:
这是我在调用矩阵乘法内核函数后用来从设备返回结果集的方法。到目前为止,一切似乎都运行良好。我相信我正在正确分配内存并且无法弄清楚为什么会发生这种情况。我想也许我的卡上没有足够的内存来做这个,但是 cudaMalloc 不应该返回错误吗?(我在调试时确认它没有)。
任何想法/帮助将不胜感激!...非常感谢大家!
内核代码:
我也有这个使用共享内存的其他功能,它也给出了同样的错误:
称呼:
内核代码: