cuda 相关问题

CUDA是Nvidia GPU(图形处理单元)的并行计算平台和编程模型。 CUDA通过各种编程语言,库和API为Nvidia GPU提供了一个接口。

CUDA 内核模板实例化导致编译错误

我正在尝试定义一个模板 CUDA 内核用于图像上的逻辑操作。代码如下所示: #定义和1 #定义或2 #定义异或3 #定义SHL 4 #定义SHR 5 模板 我正在尝试为图像上的逻辑操作定义一个模板 CUDA 内核。代码如下所示: #define AND 1 #define OR 2 #define XOR 3 #define SHL 4 #define SHR 5 template<typename T, int opcode> __device__ inline T operation_lb(T a, T b) { switch(opcode) { case AND: return a & b; case OR: return a | b; case XOR: return a ^ b; case SHL: return a << b; case SHR: return a >> b; default: return 0; } } //Logical Operation With A Constant template<typename T, int channels, int opcode> __global__ void kernel_logical_constant(T* src, const T val, T* dst, int width, int height, int pitch) { const int xIndex = blockIdx.x * blockDim.x + threadIdx.x; const int yIndex = blockIdx.y * blockDim.y + threadIdx.y; if(xIndex >= width || yIndex >= height) return; unsigned int tid = yIndex * pitch + (channels * xIndex); #pragma unroll for(int i=0; i<channels; i++) dst[tid + i] = operation_lb<T,opcode>(src[tid + i],val); } 问题是,当我实例化内核进行位移位时,出现以下编译错误 错误 1 错误:Ptx 组装因错误而中止 内核瞬间是这样的: template __global__ void kernel_logical_constant<unsigned char,1,SHL>(unsigned char*,unsigned char,unsigned char*,int,int,int); 对于 unsigned char、unsigned short、1 和 3 通道以及所有逻辑运算,还有 19 个这样的时刻。但只有位移实例,即 SHL 和 SHR 才会导致错误。当我删除这些实例时,代码可以完美编译并运行。 如果我用 operation_lb 设备函数内的任何其他操作替换位移位,该代码也可以工作。 我想知道这是否与由于内核的许多不同实例而生成的 ptx 代码量有关。 我使用的是 CUDA 5.5、Visual Studio 2010、Windows 8 x64。编译compute_1x, sm_1x。 如有任何帮助,我们将不胜感激。 最初的问题指定发帖者使用的是compute_20, sm_20。这样,我无法使用代码here重现错误。然而,评论中指出,实际上正在使用 sm_10。当我切换到编译sm_10时,我能够重现该错误。 它似乎是编译器中的一个错误。我这么说只是因为我不相信编译器应该生成汇编器无法处理的代码。然而除此之外,我不知道根本原因。我已向 NVIDIA 提交了错误报告。 在我有限的测试中,它似乎只发生在unsigned char而不是int。 作为一种可能的解决方法,对于 cc2.0 及更新版本的设备,请在编译时指定 -arch=sm_20。

回答 1 投票 0

在 C++ 代码中用指针向量替换双指针变量时面临问题

我在代码中使用 C++ 11 标准。我已经使用双指针变量有一段时间了,现在我想用指针向量替换它。更换后,我得到了

回答 1 投票 0

主要系列(11.x、12.x)中较新的 CUDA 版本是否向后兼容另一个版本?

我们一直倾向于“并行”安装给定主要系列的所有 CUDA 版本 - 例如,对于 CUDA 11,我们安装 11.0、11.1、...、11.8。我们真的需要这样做吗,o...

回答 1 投票 0

如何写入 fp16 表面?

我有一个 4 通道纹理/表面,它们分配有以下描述符: cudaChannelFormatDesc cuda_map_desc = cudaCreateChannelDesc(32, 32, 32, 32, cudaChannelFormatKindFloat); CUDA...

回答 1 投票 0

在 Linux 上为特定用户安装 CUDA 版本

我正在通过远程连接在Linux(Ubuntu 20.04)服务器上工作。 该服务器上的每个用户都有登录详细信息(即名称和密码) 服务器上安装的CUDA版本是11.3,我想要...

回答 1 投票 0

如何使用将一维数组绑定到纹理对象

我想将GPU的纹理内存用于一维数组并在内核中使用它。 我创建一个纹理对象,并将 resDesc.res.linear.devPtr 分配给设备数组,以将所需的数组绑定到纹理

回答 1 投票 0

正确地将 int 结构数组重新解释为 int 数组

我有一个自定义结构的 std::vector,其中包含两个整数(并且只有两个整数): 结构体S{ int p0; 整数p1; }; std::向量 v(维度); 我想要一个指向这个数组的指针...

回答 2 投票 0

导入错误:无法从“torch_geometric.utils”导入名称“accuracy”

我的代码: 进口火炬 导入 torch.nn.function 作为 F 从 torch_geometric.nn.conv.gcn_conv 导入 gcn_norm 从 torch_geometric.utils 将精度导入为 precision_1d 我的pytorch版本是1.11.0,...

回答 1 投票 0

指向结构体向量的指针

我有一个自定义结构的 std::vector,其中包含两个 int (并且只有两个 int): 结构体S{ int p0; 整数p1; }; std::向量 v(维度); 我想要一个指向这个结构数组的指针...

回答 1 投票 0

独立的CUDA工具包(无需安装)

在我们的C#环境中,我们不需要安装CUDA工具包,因为我们已经将所有内容都打包到nuget包中,以便必要的组件(如nvcc)和必要的libra...

回答 1 投票 0

将cuda/nvcc更新到特定版本[11.3]

我目前尝试运行 github 存储库并收到以下错误消息: ... 运行时错误: 检测到的 CUDA 版本 (10.1) 与用于编译的版本不匹配 PyTorch (11.3)。普...

回答 1 投票 0

从 GPU 到远程主机的 GPUDirect RDMA 传输

场景: 我有两台机器,一台客户端和一台服务器,通过 Infiniband 连接。服务器计算机具有 NVIDIA Fermi GPU,但客户端计算机没有 GPU。我有一个应用程序正在运行...

回答 2 投票 0

如何使用CUDA_FORCE_PTX_JIT?

根据 NVIDIA 编程指南: 应用程序在运行时加载的任何 PTX 代码都会被进一步编译 由设备驱动程序转换为二进制代码。这就是所谓的准时制 汇编。只是...

回答 1 投票 0

如何在给定 Thrust 中的另一个向量的情况下查找向量的索引

我有两个推力装置矢量,假设a和b。我想找到向量 a 的索引,其中它小于/大于向量 b 的成对分量 ($a_{ij}>b_{ij}$)。 我发现...

回答 1 投票 0

获取 nvcc 正确报告的 CUDA 版本

我正在尝试在 Ubuntu 中更新 CUDA。按照此处的指南,我的初始设置将 CUDA 版本报告为: via nvcc - Cuda 编译工具,版本 10.1,V10.1.243 通过 nvidia-smi - 11.1

回答 1 投票 0

OpenAI Whisper 允许我在命令行上使用 cpu 设备,但在解释器中强制使用 cuda 并失败

我可以成功使用whisper cli来转录音频wav文件。我使用命令: 耳语--语言 en --模型微小--设备 cpu .tmp/audio/chunk1.wav 位于此处,并使用 python 3.11...

回答 1 投票 0

如何正确地将复数从向量向量复制到 GPU 设备内存并使用 CUDA 执行 FFT?

我正在开发一个 C++ Windows 项目,该项目涉及使用 CUDA 10.1 库在设备上进行 FFT 计算。 我有一个向量 std::vector>>

回答 1 投票 0

OpenCV - 将 GpuMat 复制到 cuda 设备数据中

我正在尝试将 cv::cuda::GpuMat 中的数据复制到要在内核中使用的 uint8_t* 变量。 GpuMat 包含分辨率为 752x480 且类型为 CV_8UC1 的图像数据。下面是

回答 1 投票 0

如何在 Python 中将函数指针传递给 cuPy Raw 内核?

我正在使用 cuPy 在 Python 脚本中调用原始 CUDA 内核。我能够在 Python 脚本中加载简单的独立 CUDA 内核,但如果我的 CUDA 内核需要

回答 1 投票 0

cuPy 的内存泄漏(Python 中的 CUDA)

我在 python 脚本中使用原始 CUDA 内核。在下面的 MWE 中,我有一个超级简单的原始内核,它没有做任何事情。在下面的代码中,我只是创建一个大数组(大约 2 GB)并且

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.