问题标签 [gpgpu]
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.
java - 是否有用于加速矢量计算的 Java 库?
我正在寻找一个允许使用向量(也可能是矩阵)进行一些快速计算的 Java 库。
快速是指它利用了 GPU 处理和/或 SSE 指令。我想知道是否有可能找到更便携的东西。我认识到 JVM 提供了一个厚厚的硬件抽象层。
我遇到过JCUDA,但有一个缺点:在没有 Nnvidia 显卡的计算机上,它应该以仿真模式运行(所以我相信它不会像预期的那样高效)。有人已经试过了吗?
c++ - GPU 共享内存库冲突
我试图了解银行冲突是如何发生的。
如果我在全局内存中有一个大小为 256 的数组,并且我在一个块中有 256 个线程,并且我想将该数组复制到共享内存。因此每个线程都复制一个元素。
这个简单的动作会导致银行冲突吗?
现在假设数组的大小大于线程数,所以我现在使用它来将全局内存复制到共享内存:
上面的代码会导致银行冲突吗?
matlab - 用于循环优化的 CUDA 和 MATLAB
我将尝试使用 CUDA 优化一些用 MATLAB 编写的代码。我最近开始编写 CUDA,但我对它的工作原理有了大致的了解。
所以,假设我想将两个矩阵相加。在 CUDA 中,我可以编写一个算法,利用线程计算结果矩阵中每个元素的答案。但是,这种技术不是可能类似于 MATLAB 已经做的吗?那样的话,效率岂不是独立于技术,只归于硬件层面?
gpu - 哪些流行软件利用了通用 GPU?
所以我听到很多关于软件开发转移到 GPU 的消息。但有谁知道任何流行的软件实际上利用 GPU 上的计算?
opengl - 使用 OpenGL 混合音频
我想使用 OpenGL 混合两个(或更多)16 位音频流,我需要一些帮助
基本上我想要做的是将音频数据放入我绘制到帧缓冲区对象然后读回的纹理中。这不是问题,但是以给出正确结果的方式绘制数据有点问题。
我基本上有两个问题。
- 为了通过绘图混合数据,我需要使用混合(alpha = 0.5),但是结果不应该有任何 alpha 通道。因此,如果我渲染到例如格式为 RGB 的帧缓冲区,alpha 混合仍然可以按我的预期工作,并且生成的 alpha 不会被写入 fbo?(我想避免必须为每个渲染通道回读 fbo)
纹理 |sR|sG|sB|
帧缓冲(之前)|dR|dG|dB|
帧缓冲(后)|dR*0.5+sR*0.5|dG*0.5+sG*0.5|dB*0.5+sB*0.5|
- 音频样本是有符号的 16 位整数值。是否可以通过这种方式进行签名计算?还是我需要先在 cpu 上将值转换为无符号,绘制它们,然后在 cpu 上再次使它们签名?
编辑:
我有点不清楚。我的硬件仅限于 OpenGL 3.3 硬件。我宁愿不使用 CUDA 或 OpenCL,因为我已经将 OpenGL 用于其他东西。
每个音频样本将在单独的通道中渲染,这意味着它必须与已经渲染到帧缓冲区的内容“混合”。问题是如何将像素着色器的输出写入帧缓冲区(据我所知,这种混合无法通过可编程着色器访问,并且必须使用 glBlendFunc)。
编辑2:
每个音频样本将在不同的通道中渲染,因此着色器中一次只有一个音频样本可用,这意味着它们需要在 FBO 中累积。
而不是
c++ - 支持 PBO 的高级 OpenGL 库
我想在 GPU 上做一些图像处理,我正在寻找一个合适的库来使用。我想做的操作是:缩放、合成、色彩空间变换和平移。
我考虑过 OpenCL 和 CUDA,但我认为 OpenGL 更合适,因为大多数所需的操作已经(直接或间接)在 OpenGL 中实现。
我已经成功实现了使用 OpenGL 所需的功能,但我想使用高级第三方 OpenGL 库来提高可靠性和可维护性。
但是,到目前为止,我发现的所有高级 OpenGL 库都没有使用 PBO 在设备和主机之间进行快速传输,反之亦然。
到目前为止,我已经看过Shallows(没有 pbo,没有维护?)和SFML(没有 pbo,维护)。
我正在寻找有关用于实现易于维护的简单图像处理的适当工具的建议。
c - 如何为 CUDA 优化 Conway 的生活游戏?
我为康威的生活游戏编写了这个 CUDA 内核:
我正在寻找错误/优化。并行编程对我来说相当新,我不确定我是否能正确地做到这一点。
其余的是从输入数组到绑定到 CUDA 数组的 2D 纹理 inputTex 的 memcpy。输出从全局内存到主机,然后进行处理。
如您所见,线程处理单个像素。我不确定这是否是最快的方式,因为一些消息来源建议每个线程执行一行或更多。如果我理解正确,NVidia 自己说线程越多越好。我希望有实践经验的人对此提出建议。
graph-theory - 基于 GPU 搜索图上两个节点之间的所有可能路径
我的工作广泛使用 Migliore、Martorana 和 Sciortino 的算法来查找所有可能的简单路径,即在图中没有多次遇到节点的路径,如:An Algorithm to find All Paths between two Nodes in图表. (虽然这个算法本质上是一种深度优先搜索并且本质上是直观的递归,但作者也提出了一个非递归的、基于堆栈的实现。)我想知道这样的算法是否可以在 GPU 上实现。目前,我正在努力在这个问题中看到任何真正的并行性。例如,监视和分派线程的成本可能会使协作图搜索(通过硬件线程)望而却步。或者,如果图形被分区并分配给单独的硬件线程进行搜索,则分而治之的策略可能会起作用。然而,人们必须弄清楚如何(1)对图进行分区(2)制定子任务和(3)结合分区上的搜索结果。
iphone - 在 iPhone 上进行 GPU 加速计算 (GPGPU) 的资源?
我有兴趣在 iOS 中进行 GPU 加速计算(适用于 iPhone 3GS 和 4)。不幸的是,这两种设备都不支持 OpenCL,因此似乎唯一的选择是将程序数据表示为图形数据并使用 OpenGL ES 2.0 可编程着色器(顶点和片段)来完成这项工作。任何人都可以推荐任何可能有用的资源吗?示例代码是圣杯。
security - 不受信任的 GPGPU 代码(OpenCL 等) - 安全吗?有什么风险?
在典型的 CPU 上运行不受信任的代码有很多方法:沙箱、假根、虚拟化......
GPGPU(OpenCL、cuda 或已编译的)不受信任的代码呢?
假设在运行此类第三方不受信任的代码之前清除了显卡上的内存,
- 有没有安全风险?
- 什么样的风险?
- 有什么办法可以防止它们?
- 沙盒在 gpgpu 上是否可行/可用?
- 也许二进制仪器?
- 其他技术?
PS 我对 gpu 二进制代码级别的安全性而不是高级 gpgpu 编程语言安全性更感兴趣(但也欢迎这些解决方案)。我的意思是,欢迎引用 gpu 操作码(又名机器代码)。