gpu相关内容

CUDA 多 GPU 执行中的并发性

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

可以直接从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++开发

何时调用 cudaDeviceSynchronize?

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

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 其他开发

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

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

如何使用 CUBLAS 对复数执行 Hadamard 乘积?

我需要使用 NVidia CUBLAS 计算复数的两个向量(Hadamard 乘积)的元素乘法.不幸的是,CUBLAS 中没有 HAD 操作.显然,您可以使用 SBMV 操作来做到这一点,但在 CUBLAS 中它没有实现复数.我不敢相信 CUBLAS 无法实现这一目标.对于复数,还有其他方法可以使用 CUBLAS 实现吗? 我无法编写自己的内核,我必须使用 CUBLAS(或其他标准 NVID ..
发布时间:2022-01-10 15:44:25 其他开发

您如何包含标准 CUDA 库以与 NVRTC 代码链接?

具体来说,我的问题是我的 CUDA 代码需要 才能运行.默认情况下,这不包含在 NVRTC 中.大概在创建程序上下文时(即调用nvrtcCreateProgram),我必须发送文件名(curand_kernel.h)以及源代码curand_kernel.h?我觉得我不应该这样做. 很难说;我还没有设法从 NVIDIA 找到一个需要像这样的标准 CUDA 文 ..
发布时间:2022-01-10 15:43:57 其他开发

我可以将 CUDA 与非 NVIDIA GPU 一起使用吗?

我正在寻找一种在没有 NVIDIA GPU 的系统上运行 CUDA 程序的方法. 我尝试安装 MCUDA 和 gpuOcelot,但安装时似乎遇到了一些问题. 我已经阅读了 如何使用软件实现在没有 GPU 的情况下运行 CUDA?.那里的答案建议更改系统的硬件,使用模拟器(现已弃用)或切换到 OpenCL.这些都不能充分满足我的要求 解决方案 CUDA 是 NVIDIA 专有技 ..
发布时间:2022-01-10 15:43:20 其他开发

按位置选择的CUDA GPU,但如何将默认设置为设备0以外的东西?

我最近在家里的机器上安装了第二个 GPU (Tesla K40),我的搜索表明第一个 PCI 插槽成为为 CUDA 作业选择的默认 GPU.一个很好的链接解释它可以在这里找到: 默认 GPU 分配 我原来的 GPU 是 TITAN X,也启用了 CUDA,但它确实最适合单精度计算,而 Tesla 更适合双精度.我对小组的问题是,是否有办法将我的默认 CUDA 编程设备设置为始终是第二个 ..
发布时间:2022-01-10 15:42:05 其他开发

与第 3 方 CUDA 库链接会减慢 cudaMalloc

在 CUDA 4.x 上第一次调用 cudaMalloc 已经不是什么秘密了速度可能慢得离谱(被报告了好几次),这似乎是 CUDA 驱动程序中的一个错误. 最近,我注意到奇怪的行为:cudaMalloc 的运行时间直接取决于我链接到我的程序的第 3 方 CUDA 库的数量(请注意,我不使用这些库,只需将我的程序与它们链接) 我使用以下程序运行了一些测试: int main() {cu ..
发布时间:2022-01-10 15:38:15 其他开发

如何施放推力::device_vector<int>到原始指针

我有一个推力device_vector.我想将它转换为原始指针,以便我可以将它传递给内核.我该怎么做? thrust::device_vectordv(10);//转换为RAW内核>>(pass raw) 解决方案 你可以使用 thrust::raw_pointer_cast 来做到这一点.设备向量类有一个成员函数 data,它将返回一个 thrust::device_p ..
发布时间:2022-01-10 15:37:20 其他开发

Python GPU 编程

我目前正在做一个 python 项目,我想利用 GPU 进行一些计算. 乍一看似乎有很多可用的工具;乍一看,我觉得我错过了什么. Copperhead 看起来很棒,但尚未发布.我似乎仅限于编写低级 CUDA 或 openCL 内核;没有推力,没有cudpp.如果我想整理一些东西,我必须自己做. 这对我来说似乎不太正确.我真的错过了什么吗?还是这种 GPU 脚本还没有达到宣传的效果 ..
发布时间:2022-01-10 15:35:10 Python

在一个 GPU 上运行多个 CUDA 应用程序

CUDA 文档没有具体说明多少个 CUDA 进程可以共享一个 GPU.例如,如果我在系统中只安装了一张 GPU 卡的情况下,由同一用户启动多个 CUDA 程序,效果如何?能保证执行的正确性吗?在这种情况下,GPU 是如何调度任务的? 解决方案 来自独立主机进程的 CUDA 活动通常会创建独立的 CUDA contexts,每个进程一个.因此,从不同主机进程启动的 CUDA 活动将在同一设备 ..
发布时间:2022-01-10 15:35:02 其他开发

何时将 volatile 与共享 CUDA 内存一起使用

在什么情况下应该将volatile关键字与CUDA内核的共享内存一起使用?我知道 volatile 告诉编译器永远不要缓存任何值,但我的问题是关于共享数组的行为: __shared__ 浮动产品[THREADS_PER_ACTION];//一些计算产品[threadIdx.x] = localSum;//等待每个人完成计算__syncthreads();//然后是(基本的,丑陋的)减少:if ( ..
发布时间:2022-01-10 15:30:26 其他开发

如何使用 numba 在 GPU 上泛化快速矩阵乘法

最近我一直在尝试使用 Numba 库在 Python 中进行 GPU 编程.我一直在使用那里的教程在他们的网站上阅读它,目前我坚持使用他们的示例,可以在这里找到:https://numba.pydata.org/numba-doc/latest/cuda/examples.html.我试图概括一下快速矩阵乘法的示例(其形式为 A*B=C).在测试时,我注意到维度不能完全被每块线程数 (TPB) 整 ..
发布时间:2022-01-10 15:27:01 Python