cuda相关内容

CUDA 多 GPU 执行中的并发性

我在具有 4 个 GPU 的多 GPU 系统上运行 cuda 内核函数.我预计它们会同时发布,但事实并非如此.我测量每个内核的启动时间,第二个内核在第一个内核完成执行后启动.所以在 4 个 GPU 上启动内核并不比 1 单个 GPU 快. 如何让它们同时工作? 这是我的代码: cudaSetDevice(0);GPU_kernel 解决方案 我做了一些关于在 4 Kepler K ..
发布时间:2022-01-10 15:48:56 其他开发

如何在 CUDA 内核中调用主机函数?

正如以下错误所暗示的,内核中不允许调用主机函数('rand'),如果我确实需要这样做,我想知道是否有解决方案. 错误:不允许从 __device__/__global__ 函数(“xS_v1_cuda")调用主机函数(“rand") 解决方案 很遗憾,您不能在设备中调用未使用 __device__ 修饰符指定的函数.如果您需要设备代码中的随机数,请查看 cuda 随机生成器 curand h ..
发布时间:2022-01-10 15:48:41 其他开发

从推力::设备向量到原始指针并返回?

我了解如何从向量转到原始指针,但我跳过了关于如何倒退的节拍. //我们的宿主向量推力::host_vectorhVec;//假设我们把数据放在这里//得到一个 device_vector推力::device_vectordVec = hVec;//获取设备指针推力::device_ptr devPtr = &d_vec[0];//现在我如何回到 device_vector ..
发布时间:2022-01-10 15:48:31 C/C++开发

可分离编译后如何将主机代码与静态 CUDA 库链接?

好的,关于如何正确链接事物,我有一个非常令人不安的 CUDA 5.0 问题.如果能提供任何帮助,我将不胜感激! 使用 CUDA 5.0 的可分离编译特性,我生成了一个静态库 (*.a).通过 nvcc 运行时,这很好地与其他 *.cu 文件链接,我已经这样做了很多次了. 我现在想获取一个 *.cpp 文件,并使用 g++ 或其他方式将其链接到此静态库中的主机代码,但不使用 nvcc.如 ..
发布时间:2022-01-10 15:48:24 其他开发

可以直接从gpu访问硬盘吗?

是否可以直接从 GPU (CUDA/openCL) 访问硬盘/闪存盘并直接从 GPU 的内存加载/存储内容? 我试图避免将内容从磁盘复制到内存,然后再将其复制到 GPU 的内存. 我阅读了有关 Nvidia GPUDirect 的信息,但不确定它是否符合我上面的解释.它讨论了远程 GPU 内存和磁盘,但在我的例子中,磁盘是 GPU 本地的. 基本思想是加载内容(类似于 dma)- ..
发布时间:2022-01-10 15:48:17 其他开发

带浮点的自定义内核 GpuMat

我正在尝试使用 GpuMat 数据编写自定义内核来查找图像像素的反余弦值.当 GPU 有 CV_8UC1 数据但不能使用字符计算反余弦时,我可以在上传数据时上传、下载和更改值.但是,当我尝试将我的 GPU 转换为 CV_32FC1 类型(浮点数)时,我在下载部分遇到了非法内存访问错误.这是我的代码: //.cu 代码#include #include ..
发布时间:2022-01-10 15:48:10 C/C++开发

CUDA 计算能力之间有什么区别?

计算能力 2.0 比 1.3、2.1 比 2.0 和 3.0 比 2.1 增加了什么? 解决方案 计算能力指定不同的架构.一般来说,较新的架构运行 CUDA 程序和图形的速度都比以前的架构快.但请注意,上一代的高端卡可能比后一代的低端卡更快. 来自 CUDA C 编程指南 (v6.0): ..
发布时间:2022-01-10 15:48:04 其他开发

Cuda 共享内存数组变量

我正在尝试为矩阵乘法声明一个变量,如下所示: __shared__ float As[BLOCK_SIZE][BLOCK_SIZE]; 我正在尝试这样做,以便用户可以输入要计算的矩阵的大小,但这意味着更改 BLOCK_SIZE.我更改了它,但出现编译器错误:“错误:常量值未知".我已经调查过了,它类似于这个 线程.所以我尝试了: __shared__ int buf []; 然后我得到:“ ..
发布时间:2022-01-10 15:47:56 其他开发

在 CUDA 内核中是否有与 memcpy() 等效的方法?

我正在尝试使用 CUDA 内核异步分解和重塑数组的结构.memcpy() 在内核中不起作用,cudaMemcpy()* 也不行;我很茫然. 谁能告诉我从 CUDA 内核中复制内存的首选方法? 值得注意的是,cudaMemcpy(void *to, void *from, size, cudaMemcpyDeviceToDevice) 不适用于我正在尝试做的事情,因为它只能从在内核之外并 ..
发布时间:2022-01-10 15:47:48 其他开发

CUDA 有汇编语言吗?

我问这个是因为我知道有一种方法可以使用二进制文件而不是源文件. 另外,我猜用汇编语言模拟函数指针会更容易.除非 GPU 上的程序集与 CPU 上的程序集完全不同. 解决方案 你可能想看看 PTX.NVIDIA 在 CUDA 4.0 文档中提供了描述它的文档. http://developer.nvidia.com/nvidia-gpu-computing-documentati ..
发布时间:2022-01-10 15:47:37 其他开发

如何创建或操作 GPU 汇编器?

是否有人在创建/操作 GPU 机器代码(可能是在运行时)方面有经验? 我对修改 GPU 汇编代码很感兴趣,可能在运行时以最小的开销进行.具体来说,我对基于汇编程序的基因编程很感兴趣. 我知道 ATI 已经为他们的一些卡发布了 ISA,并且 nvidia 最近发布了针对旧卡的 CUDA 反汇编程序,但我不确定是否可以在运行时甚至之前修改内存中的指令. 这可能吗?欢迎提供任何相关信息 ..
发布时间:2022-01-10 15:47:31 其他开发

CUDA中2D共享内存是如何排列的

我一直使用线性共享内存(加载、存储、访问邻居),但我在 2D 中做了一个简单的测试来研究银行冲突,结果让我感到困惑. 接下来的代码从一维全局内存数组读取数据到共享内存,然后从共享内存复制回全局内存. __global__ void update(int* gIn, int* gOut, int w) {//共享内存空间__shared__ int shData[16][16];//从 th ..
发布时间:2022-01-10 15:47:13 其他开发

如何让cmake找到CUDA

我正在尝试构建 这个项目,它具有 CUDA 作为依赖项.但是cmake脚本在系统上找不到CUDA安装: cls ~/workspace/gpucluster/cluster/build $ cmake ..-- C 编译器标识为 GNU 4.7.1-- CXX 编译器标识为 GNU 4.7.1-- 检查工作的 C 编译器:/usr/bin/gcc-- 检查工作的 C 编译器:/usr/bin/g ..
发布时间:2022-01-10 15:46:55 C/C++开发

如何使用 CUDA 刷新 GPU 内存(物理重置不可用)

在内存被刷新之前,我的 CUDA 程序在执行期间崩溃了.结果,设备内存仍然被占用. 我在 GTX 580 上运行,不支持 nvidia-smi --gpu-reset. 将 cudaDeviceReset() 放在程序开头只会影响进程创建的当前上下文,不会刷新之前分配的内存. 我正在使用该 GPU 远程访问 Fedora 服务器,因此物理重置非常复杂. 所以,问题是 - 在 ..
发布时间:2022-01-10 15:46:38 其他开发

何时调用 cudaDeviceSynchronize?

何时真正需要调用 cudaDeviceSynchronize 函数? 据我从 CUDA 文档中了解到,CUDA 内核是异步的,因此我们似乎应该在每次内核启动后调用 cudaDeviceSynchronize.但是,我尝试了相同的代码(训练神经网络),有和没有任何 cudaDeviceSynchronize,除了时间测量之前的一个.我发现我得到了相同的结果,但速度提高了 7-12 倍(取决于矩 ..
发布时间:2022-01-10 15:46:32 其他开发

如何编译 CUDA 代码然后将其链接到 C++ 项目?

我正在寻求有关 CUDA 项目的入门帮助.我的目标是拥有一个可以在本机 g++ 编译器中编译但使用 CUDA 代码的项目.我知道我必须在 nvcc 编译器中编译我的 CUDA 代码,但据我了解,我可以以某种方式将 CUDA 代码编译成 cubin 文件或 ptx 文件. 这是我的问题: 如何使用 nvcc 编译成 cubin 文件或 ptx 文件?我不需要 -c 什么的吗? 我要使用 ..
发布时间:2022-01-10 15:46:25 其他开发

NVIDIA NVML 驱动程序/库版本不匹配

当我运行 nvidia-smi 时,我收到以下消息: 初始化 NVML 失败:驱动程序/库版本不匹配 一个小时前,我收到了同样的消息,并卸载了我的 cuda 库,我能够运行 nvidia-smi,得到以下结果: 在此之后,我从 NVIDIA 官方页面 然后简单地说: sudo dpkg -i cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd ..
发布时间:2022-01-10 15:46:17 其他开发

如何在 cuda 5.5 中获得最大推力块

下面的 Thrust 函数可以获得 CUDA 启动 CUDA 5.0 的最大块数,该函数用于 CUSP 中的稀疏矩阵向量乘法 (SpMV),它是一种为持久线程设置执行的技术.第一行是头文件. #include 推力::细节::后端::cuda::arch::max_active_blocks(内核 ..
发布时间:2022-01-10 15:46:03 其他开发

用于调用返回指针的 C 函数的 Fortran 接口

我有一个 C 函数, double* foofunc(){/* 函数体 */} 我不知道如何在Fortran中声明一个接口来调用这个C函数. 另外,如果一个指针应该指向 GPU 设备内存,我如何在 Fortran 接口中定义它?我需要使用 DEVICE 属性吗? 请使用 Fortran 直到 2003 年支持的功能. 有什么建议吗? 解决方案 既然你有 Fortran ..
发布时间:2022-01-10 15:45:57 其他开发

检测推力变换的ptx核

我有以下推力::转换调用. my_functor *f_1 = new my_functor();推力::转换(data.begin(),data.end(),data.begin(),* f_1); 我想在 PTX 文件中检测它对应的内核.但是有很多内核在它们的名称中包含 my_functor. 例如- _ZN6thrust6system4cuda6detail6detail23la ..
发布时间:2022-01-10 15:45:33 其他开发