- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在考虑将一些数学运算卸载到 GPU。由于我已经在使用 D3D11,因此我将使用计算着色器来完成这项工作。但问题是,无论用户拥有什么 GPU,我都需要相同输入的结果相同。 (仅要求它支持计算着色器 4.0)。
那么 float 学在 GPU 上是确定性的吗?
如果不支持,GPU 支持整数数学吗?
最佳答案
我没有使用过 DirectCompute,只使用过 OpenCL。
<小时/>GPU 绝对支持整数数学,包括 32 位和 64 位整数。有几个问题已经讨论过了:
基本上,在现代 GPU 上,32 位浮点和整数运算的性能是相同的。
<小时/>至于确定性结果,这取决于您的代码。例如,如果您依赖多个线程在同一内存上执行原子操作,然后从其他线程读取该内存并根据该值执行操作,那么每次结果可能并不完全相同。
根据个人经验,我需要生成随机数,但也需要一致的结果。所以基本上我有一大堆种子,每个线程一个,每个种子都是完全独立的。其他依赖于原子操作和屏障的随机数生成器则不会。
获得确定性结果的另一半是在给定不同硬件的情况下获得相同的结果。使用整数运算应该相当安全。通过 OpenCL 中的浮点运算,避免快速宽松的数学选项和函数的 native 变体将增加在不同硬件上获得相同结果的机会。
关于gpgpu - GPU 和决定论,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21996720/
GPGPU编程仅允许执行SIMD指令吗? 如果是这样,那么重新编写具有以下特征的算法必须是一项繁琐的任务: 被设计为在通用CPU上运行以在GPU上运行?也有一个 可以转换为SIMD架构的算法中的模式?
以计算能力为1.3的硬件为例。 30 条短信可用。那么最多可以同时运行240个块(考虑到寄存器和共享内存的限制,对块数的限制可能会低很多)。超过 240 的那些块必须等待可用的硬件资源。 我的问题是那
我正在寻找与使用 GPGPU 计算时 CPU 如何将程序代码移动到 GPU 相关的信息。互联网上有很多关于数据传输的手册,但没有关于指令/程序加载的手册。 问题是:程序由 CPU 处理,它在每个计算单
我有一个 Cuda 应用程序;在首先为各种数组分配 cuda 内存后,程序循环执行:将数据传输到 GPU,在 GPU 上处理内核,从 GPU 传回数据。第一个数据集由 GPU 正确处理并返回。此后后续
GPGPU 在许多任务(不是全部)上都有很大的潜力,尤其是处理数据库中的矩阵,至少根据围绕该主题的所有 PR。 我还没有找到使用 GPGPU 来加速性能的数据库。 你知道任何利用 GPGPU 的开源数
当一个 wavefront 执行时,它提供了细粒度的多线程。这样做的后果之一是没有分支预测要求,如下面的幻灯片所示: 但是我无法理解这一点。有人可以用简单的方式解释一下吗? 最佳答案 分支会在指令流的
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
CUDA初学者在这里。 在我的代码中,我目前在主机代码的循环中多次启动内核。 (因为我需要块之间的同步)。所以我想知道我是否能够优化内核启动。 我的内核启动看起来像这样: MyKernel>>(dou
我正在尝试使用 WebGL 和 GLSL 着色器编程在 GPU 上实现有效的流体求解器。 我发现了有趣的文章: http://http.developer.nvidia.com/GPUGems/gpu
我一直在他们的 Stream 2.0 测试版中使用 ATI OpenCL 实现。当前测试版中的 OpenCL 目前仅使用 CPU,下一个版本应该支持 GPU 内核。我下载了 Stream,因为我的工作
我有一个CUDA程序,似乎正在达到某种资源的某种极限,但是我无法弄清楚该资源是什么。这是内核函数: __global__ void DoCheck(float2* points, int* segme
我想知道使用 GPGPU 可以实现什么样的金融应用程序。我知道使用 CUDA 在 GPGPU 上使用蒙特卡罗模拟进行期权定价/股票价格估计。有人可以列举在金融领域的任何应用程序中使用 GPGPU 的各
从程序员的角度来看,GPGPU 和常规多核/多线程 CPU 编程之间的主要实际区别是什么?具体来说: 哪些类型的问题更适合常规多核,哪些类型更适合 GPGPU? 编程模型的主要区别是什么? 导致编程模
我正在考虑将一些数学运算卸载到 GPU。由于我已经在使用 D3D11,因此我将使用计算着色器来完成这项工作。但问题是,无论用户拥有什么 GPU,我都需要相同输入的结果相同。 (仅要求它支持计算着色器
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我正在尝试在 GLSL 上实现 Scrypt 哈希器(用于 LTC 矿工)(不要问我为什么)。 而且,实际上,我坚持使用 HMAC SHA-256 算法。尽管我已经正确实现了 SHA-256(它为输入
我最近在 GTC 上看到了 arrayfire 演示,我想我会尝试一下。以下是我在尝试使用它时遇到的一些问题。我在 Windows 7 系统上运行 Visual Studio 2013,使用来自 AM
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我曾不止一次偶然发现术语“非连贯”和“连贯”内存 tech papers与图形编程有关。我一直在寻找一个简单明了的解释,但发现大多数是this的“硬核”论文。类型。我很高兴收到关于 GPU 架构上实际
基本上问题是如何在 Metro 应用程序中运行 gpgpu 代码。该库不需要专门用于计算,例如,使用XNA的hlsl(最初是为了渲染东西)进行通用计算(XNA不包含在Metro中,因此是我的问题)。默
我是一名优秀的程序员,十分优秀!