cuda相关内容

CUDA __global__ 函数中的 printf

我目前正在 GPU 上编写矩阵乘法并想调试我的代码,但由于我不能在设备函数中使用 printf,我可以做些什么来查看该函数内部发生了什么.这是我当前的功能: __global__ void MatrixMulKernel(Matrix Ad, Matrix Bd, Matrix Xd){int tx = threadIdx.x;int ty = threadIdx.y;int bx = bloc ..
发布时间:2022-01-10 16:17:25 C/C++开发

CUDA核心和CPU核心有什么区别?

我在 CUDA 上做了一些工作,在 CPU 上做了很多工作,我试图了解两者之间的区别.我的 I5 处理器有 4 个内核,售价 200 美元,而我的 NVidia 660 有 960 个内核,成本大致相同. 如果有人能解释两种处理单元架构在能力优缺点方面的主要区别是什么,我会非常高兴.例如,CUDA 核心是否有分支预测? 解决方案 这是一个计算机体系结构问题,需要很长的答案.对于不准确 ..
发布时间:2022-01-10 16:17:18 其他开发

QR分解以解决CUDA中的线性系统

我正在GPU上写一个图像恢复算法,详情在 Cuda:最小二乘求解,速度很差p> 求解线性系统的QR分解方法 斧头=b 工作如下 min||Ax-b||--->||QRx-b||--->||(Q^T)QRx-(Q^T)b||--->||Rx-(Q^T)b|| 其中 R 是上三角矩阵.由此产生的上三角线性系统很容易求解. 我想使用 CULA 工具来实现这个方法.CULA 例程 G ..
发布时间:2022-01-10 16:17:12 其他开发

何时真正需要填充共享内存?

我对来自 NVidia 的 2 个文档感到困惑.“CUDA 最佳实践"描述了共享内存是按银行组织的,通常在 32 位模式下,每 4 个字节就是一个银行(这就是我的理解).然而 Parallel Prefix Sum (Scan) with CUDA 详细介绍了应该如何填充由于银行冲突,添加到扫描算法中. 对我来说问题是,这个算法的基本类型是浮点数,它的大小是 4 个字节.因此每个浮点数都是一 ..
发布时间:2022-01-10 16:17:02 其他开发

Kepler 中的全局内存访问和 L1 缓存

在 Kepler 硬件上使用 Visual Profiler 分析我的内核时,我注意到分析器显示全局加载和存储缓存在 L1 中.我很困惑,因为编程指南和开普勒调整手册指出: Kepler GPU 中的 L1 缓存仅保留用于本地内存访问,例如寄存器溢出和堆栈数据.全局负载仅在 L2 中缓存(或在只读数据中)缓存). 没有寄存器溢出(分析器显示 L1 缓存,即使是原始的 2 行“添加"内核 ..
发布时间:2022-01-10 16:16:56 其他开发

CUDA:每个多处理器的线程数和每个块的线程数的区别是什么?

我们有一个安装了两个 Nvidia Quadro FX 5800 卡的工作站.运行 deviceQuery CUDA 示例显示每个多处理器 (SM) 的最大线程数为 1024,而每个块的最大线程数为 512. 鉴于每个 SM 一次只能执行一个块,为什么最大线程/处理器是最大线程/块的两倍?我们如何利用每个 SM 的其他 512 个线程? 设备 1:“Quadro FX 5800"CUDA ..
发布时间:2022-01-10 16:16:39 其他开发

有没有更好更快的方法使用推力从 CPU 内存复制到 GPU?

最近我一直在使用推力.我注意到,为了使用推力,必须始终将数据从 cpu 内存复制到 gpu 内存. 让我们看看下面的例子: int foo(int *foo){host_vectorm(foo, foo+ 100000);device_vectors = 米;} 我不太确定 host_vector 构造函数是如何工作的,但似乎我正在复制初始数据,来自 *foo,两次 - ..
发布时间:2022-01-10 16:16:31 其他开发

在 Clion 中启用 Cuda 的代码索引

我正在使用 Clion 开发一个 cuda 程序.当扩展名为 .h 时,代码高亮显示效果很好.但是,当它更改为 .cuh 时,Clion 只会将新文件视为纯文本文件,而我无法启用代码突出显示.我知道完整的 Cuda 工具链是不可能的,所以我不希望 Clion 解析 mykernel>> 之类的语句.如果它能够像解析普通的 header/cpp 文件一样解析文件,我仍然会非常满意. 非常感谢 ..
发布时间:2022-01-10 16:16:24 其他开发

Visual Studio 2017 出现 CUDA 9 不支持错误

我最近更新了我的 VS 2017,现在我什至无法构建默认的 CUDA 项目(带有矢量添加的项目). 我怀疑这是由于以下错误: 严重性代码描述项目文件行抑制状态错误 C1189 #error: -- 不支持 Microsoft Visual Studio 版本!仅支持 2012、2013、2015 和 2017 版本!版本 2c:\程序文件\nvidia gpu 计算工具包\cuda\v9. ..
发布时间:2022-01-10 16:16:14 C/C++开发

在 1-D 网格中计算 warp id/lane id 的最有效方法是什么?

在 CUDA 中,每个线程都知道它在网格中的块索引和块内的线程索引.但是它似乎没有明确提供两个重要的值: 它的索引作为其经线中的一条车道(其“车道 ID") 在区块内作为车道的经线的索引(其“经线 id") 假设网格是一维的(又名线性,即blockDim.y和blockDim.z为1),显然可以通过以下方式获得: 枚举:无符号 { warp_size = 32 };auto lan ..
发布时间:2022-01-10 16:16:06 其他开发

将常量参数传递给 CUDA 内核的最快(或最优雅)方式

假设我想要一个需要做很多事情的 CUDA 内核,但有一些圆顶参数对于所有内核都是不变的.此参数作为输入传递给主程序,因此它们不能在 #DEFINE 中定义. 内核将运行多次(大约 65K),它需要这些参数(和一些其他输入)来进行数学运算. 我的问题是:将这些常量传递给内核的最快(或者最优雅)的方式是什么? 常量是 2 或 3 个元素长度的 float* 或 int* 数组.它们将 ..
发布时间:2022-01-10 16:16:00 C/C++开发

CUDA __device__ 未解析的外部函数

我正在尝试了解如何在单独的头文件中解耦 CUDA __device__ 代码. 我有三个文件. 文件:1:int2.cuh #ifndef INT2_H_#define INT2_H_#include “cuda.h"#include “cuda_runtime.h"#include "device_launch_parameters.h"__global__ 无效内核();__de ..
发布时间:2022-01-10 16:15:37 C/C++开发

Numpy、BLAS 和 CUBLAS

Numpy 可以针对不同的 BLAS 实现(MKL、ACML、ATLAS、GotoBlas 等)“链接/编译".这并不总是很容易配置,但它是可能的. 是否也可以针对 NVIDIA 的 CUBLAS 实现“链接/编译"numpy? 我在网络上找不到任何资源,在我花太多时间尝试之前,我想确保它完全可行. 解决方案 一句话:不,你不能那样做. 有一个相当不错的 scikit 提供从 ..
发布时间:2022-01-10 16:15:27 Python

CUDA:if 语句中的 __syncthreads()

我有一个关于 CUDA 同步的问题.特别是,我需要对 if 语句中的同步进行一些说明.我的意思是,如果我将 __syncthreads() 放在块内的一小部分线程命中的 if 语句的范围内,会发生什么?我认为一些线程将保持“永远"等待其他不会达到同步点的线程.所以,我编写并执行了一些示例代码来检查: __global__ void kernel(float* vett, int n){int i ..
发布时间:2022-01-10 16:15:19 其他开发

使用 CUDA 支持构建 OpenCV

我使用 CMake 生成 Visual Studio 2013 解决方案.接下来我尝试构建它,但得到以下错误: 构建 NVCC(设备)对象 modules/core/CMakeFiles/cuda_compile.dir/src/cuda/Debug/cuda_compile_generated_gpu_mat.cu.obj nvcc 致命:不支持的 gpu 架构“compute_11 ..
发布时间:2022-01-10 16:15:12 其他开发

适用于多个 GPU 的 SLI

我是 CUDA 编程的新手,我正在解决一个需要在一台机器上安装多个 GPU 的问题.我知道为了更好地进行图形编程,需要通过 SLI 组合多个 GPU.但是,对于 CUDA 编程,我是否还需要通过 SLI 组合 GPU? 解决方案 不,一般来说,如果您打算将 GPU 用于计算而不是纯图形应用程序,则通常不希望使用 SLI.您将能够从 CUDA 程序中将两个 GPU 作为独立设备访问.请注意, ..
发布时间:2022-01-10 16:15:04 其他开发

当主机具有 CUDA 9 时,我可以使用 CUDA 10 运行 Docker 容器吗?

我在需要 CUDA 10 的 docker 容器中部署应用程序.这是运行应用程序使用的一些底层 pytorch 功能所必需的. 但是,主机服务器正在运行 docker ce 17、Nvidia-docker v 1.0 和 CUDA 版本 9,我将无法升级主机. 我的印象是,我被主机上可用的 v1 nvidia docker runtime 和 CUDA 版本束缚住了. 有没有办 ..
发布时间:2022-01-10 16:14:55 其他开发

如何将 CUDA 时钟周期转换为毫秒?

我想测量一些代码在我的内核所花费的时间.我已经关注了 this question 及其评论,以便我的内核看起来有点像像这样: __global__ void kernel(..., long long int *runtime){long long int start = 0;long long int stop = 0;asm volatile("mov.u64 %0, %%clock64;" ..
发布时间:2022-01-10 16:14:49 其他开发

OpenCL 和 CUDA 中的持久线程

我已经阅读了一些关于 GPGPU 的“持久线程"的论文,但我并不真正理解它.谁能给我一个例子或告诉我这种编程方式的用法? 在阅读和谷歌搜索“持久线程"后我的脑海中保留的内容: Presistent Threads 保持线程运行并计算大量工作只不过是一个 while 循环. 这是正确的吗?提前致谢 参考:http://www.idav.ucdavis.edu/publicat ..
发布时间:2022-01-10 16:14:43 其他开发