gpgpu相关内容
我有 2 个非常相似的内核函数,从某种意义上说,代码几乎相同,但略有不同.目前我有 2 个选择: 编写2种不同的方法(但非常相似) 编写单个内核并将不同的代码块放在 if/else 语句中 if 语句对我的算法性能有多大影响? 我知道没有分支,因为所有块中的所有线程都将进入 if 或 else. 那么,如果多次调用内核函数,单个 if 语句是否会降低我的性能? 解决方案
..
OpenCV 具有封装异步调用队列的 gpu::Stream 类.某些函数具有带有附加 gpu::Stream 参数的重载.除了 gpu-basics-similarity.cpp 示例代码,OpenCV 文档中关于如何以及何时使用 gpu::Stream 的信息很少.例如,(对我来说)不是很清楚 gpu::Stream::enqueueConvert 或 gpu::Stream::enqueue
..
我尝试了许多不同的 Tensorflow 示例,它们在 CPU 上运行良好,但当我尝试在 GPU 上运行它们时会产生相同的错误.一个小例子是这样的: 将 tensorflow 导入为 tf# 创建一个图形.a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')b = tf.constant([1.0, 2.
..
我想将我的技能扩展到 GPU 计算.我熟悉光线追踪和实时图形(OpenGL),但下一代图形和高性能计算似乎是在 GPU 计算或类似的东西. 我目前在我的家用电脑上使用 AMD HD 7870 显卡.我可以为此编写 CUDA 代码吗?(我的直觉是否定的,但由于 Nvidia 发布了编译器二进制文件,我可能是错的). 第二个更普遍的问题是,我从哪里开始使用 GPU 计算?我敢肯定这是一个经
..
我已经决定我的学士论文将是关于通用 GPU 计算以及哪些问题比其他问题更适合于此.我还试图找出当前 GPU 架构之间是否存在任何可能影响这一点的重大差异. 我目前正在寻找一些直接从制造商那里获取有关当前 GPU 架构的科学论文和/或信息,但我似乎找不到任何看起来足够详细的信息.因此,我希望有人能够建议一些论文或至少为我指明正确的方向. 谢谢 解决方案 阅读有关 OpenCL 和
..
一点背景: 我开始使用 GPGPU (OpenCL),我使用的是 Java 包装器 (jogamp.jocl) 希望它能为我提供一种抽象低级细节并在更高级别使用标准 OOP 的方法.我已经从各种 Hello World 示例中看到,我必须自己管理队列. 我的问题: 是否有任何已知的 GPGPU 模式或关于一般大规模并行架构的设计模式的良好资源(如书中)? 我的重点是生物模拟
..
我想实现这个算法https://dournac.org/info/gpu_sum_reduction在 Vulkan 的计算着色器中.在 OpenCL 中,这很容易,因为我可以明确声明哪些缓冲区是 __local,哪些是 __global.不幸的是,我似乎无法找到Vulkan 中的任何此类机制.请有经验的人给我举个例子,如何让这些东西在 Vulkan 中工作? 解决方案 Vulkan 中的
..
我有一个 for 循环,如果目标硬件是NVIDIA,我想将它与OpenACC并行化,或者当目标硬件是AMD时,以串行方式运行它.我尝试了以下方法: #pragma acc循环\device_type(tesla)并行\device_type(radeon)序列对于(int z = 0; z
..
有一些类似的字符串 std :: string第一,第二,第三;... 我的计划是将其地址收集到char *数组中: char *地址= {& first [0],& second [0],& third [0]} ... 并将char **地址传递给OpenCL内核. 有几个问题或疑问: 主要问题是我无法传递指针数组. 有什么好方法可以使用内核代码中的许多字
..
我有一个算法,我一直在尝试在nVidia上使用OpenCL加速它. 它必须处理大量数据(比如说100k到百万),其中每个数据:必须首先更新矩阵(在设备上)(使用数据和两个向量);并且只有在更新整个矩阵之后,两个向量(同样在设备上)才使用相同的数据进行更新.所以,我的主机代码看起来像这样 for(int i = 0; i
..
NVidia GP100 具有30个TPC电路和240个“纹理单元".TPC和纹理单元是否被TensorFlow使用,或者这些可丢弃的硅片用于机器学习吗? 我正在运行的神经网络培训课程中查看GPU-Z和Windows 10的内置GPU性能监视器,并且发现各种硬件功能未得到充分利用.Tensorflow使用CUDA.我想,CUDA可以访问所有硬件组件.如果我知道差距在哪里(在Tensorflo
..
我的工作广泛使用了Migliore,Martorana和Sciortino的算法来查找所有可能的简单路径,即在图中不曾遇到一次以上节点的简单路径,如下所述:
..
我最近在GTC看到了arrayfire的表演,我想我会尝试的.这是我在尝试使用它时遇到的一些问题.我正在使用AMD App SDK 2.9-1中的OpenCL在Windows 7系统上运行Visual Studio 2013. 最大的麻烦是,我无法在调试器中查看数组对象的状态以查看其中的数据.我必须依靠af_print语句.太烦人了.有什么方法可以配置调试器,让我无需打印就可以查看阵列中的数
..
我知道OpenCL可以控制GPU的内存架构,因此可以实现更好的优化,但是,撇开这一点,我们可以使用Compute Shaders进行矢量运算(加法,乘法,求逆等)吗? 解决方案 与其他OpenGL着色器类型相比,计算着色器与计算机图形不直接相关,并且提供了与CUDA类似的更直接的底层硬件抽象和OpenCL.它提供可自定义的工作组大小,共享内存,组内同步以及CUDA和OpenCL已知和喜爱的
..
我在文本文件中有一个OpenPGP加密文件及其私钥,并且知道其密码短语. 我尝试了以下代码: import pgpyemsg = pgpy.PGPMessage.from_file('PGPEcrypted.txt')键,_ = pgpy.PGPKey.from_file('PrivateKey.txt')使用key.unlock('passcode!'):打印(key.decrypt(
..
我有一个3D矩阵,其中x-y平面表示图像,z-平面表示图像层. 问题是,当我尝试使用idz提取第一层(或其他层)时,没有得到预期的结果.看起来数组一旦放在CUDA中,对于x,y或z的索引就比我期望的要大(与pycuda一样).我通过下面的结果数组看到了这一点. 以下是此迷你示例的逐步过程(我使用通用int编号表示图像,以保存上传的图像和整个代码)! 我在这里导入库并定义图像大小和图层..
..
我已经编写了CUDA C和C程序,以使用CULA例程dgesv和MKL例程dgesv求解矩阵方程Ax = b.对于较小的数据集,CPU程序似乎比GPU程序快.但是随着数据集增加到500个以上,GPU克服了CPU的困扰.我正在使用配有i3 CPU和Geforce 525M GPU的戴尔笔记本电脑.对于GPU最初的缓慢性能的最佳解释是什么? 我编写了另一个程序,该程序接受两个向量,将它们相乘并相
..
我想在GPU Pascal,CUDA 10.0上使用带有缓存提示的 store函数 __ stcs . 在《 CUDA C ++编程指南》 没有提及数据类型为 unsigned long long 的任何标头,但是编译器返回错误 identifier"__stcs".是未定义的. 如何解决此编译错误? 解决方案 这些内在函数要求CUDA 11.0,它们是CUDA 11.0的新功
..
我想知道是否有任何简单的方法可以将非分组内存访问转换为合并内存访问.让我们以这个数组为例: dW [[w0,w1,w2] [w3,w4,w5] [w6,w7] [w8,w9]] 现在,我知道,如果块0中的线程0访问 dW [0] ,然后块0中的线程1访问 dw [1] ,那就是合并访问在全局内存中.问题是我有两次手术.如上所述,第一个被合并.但是第二个不是因为块0中的线程1需要对 dW [
..
在最近的NVIDIA微体系结构中,有一个新的(?)此处). 我的问题: 形容词“短"是什么意思?或“多头"描述?它是单个记分牌的长度吗?两种不同的操作有两种不同的记分牌? MIO之间这种有点非直觉的二分法是什么意思-有些但不是全部都是内存操作;和L1TEX操作,它们都是内存操作吗?是二分法吗停滞原因仅仅是因为还是真正的硬件? 解决方案 NVIDIA GPU有两种指令分类:
..