首页 文章
  • 0 votes
     answers
     views

    在CUDA中移动设备上的内存

    在CUDA中移动设备上的数据的最快方法是什么? 我需要做的是基本上将连续的子行和子列(我在设备上有索引)从行主矩阵复制到新的小矩阵中,但从我观察到的情况来看,CUDA中的内存访问是不是特别有效,因为看起来核心被优化来进行计算而不是内存 . 现在,CPU似乎非常擅长执行顺序操作,例如将对齐内存行从一个地方移动到另一个地方 .我看到三个选择: 创建一个执行内存复制的内核 在内核之外,为每个位置...
  • 0 votes
     answers
     views

    在GTX1080上使用~2.2GB内存后,CUDA内存不足消息

    我在使用JCuda的GTX1080 GPU上进行矩阵乘法,使用CUDA 8.0版本为0.8.0RC . 我将两个矩阵A和B以行主矢量形式加载到设备中,并从设备读取产品矩阵 . 但我发现我的设备内存耗尽了我的预期 . 例如,如果矩阵A的尺寸为100000 * 5000 = 5亿个条目= 2GB值的浮点值,则: cuMemAlloc(MatrixA, 100000 * 5000 * Sizeof.FL...
  • 33 votes
     answers
     views

    CUDA计算能力有什么区别?

    计算能力2.0的增加超过1.3,2.1超过2.0和3.0超过2.1?
  • 6 votes
     answers
     views

    将数据复制到“cufftComplex”数据结构?

    我将数据存储为浮点数组(单精度) . 我有一个数组用于我的实际数据,一个数组用于我的复杂数据,我用它作为FFT的输入 . 如果我想使用CUDA cufft库,我需要将此数据复制到 cufftComplex 数据类型 . 来自nVidia:“ cufftComplex 是一种单精度浮点复数数据类型,由交错的实部和虚部组成 . ”由袖带操作的数据存储在 cufftComplex 的数组中 . 如何快速...
  • 0 votes
     answers
     views

    CUDA获得欲望计算数据[关闭]

    我正在学习,我对threadIdx.x,blockIdx.x感到困惑,如果我有一个大小为5x5的数据,我想用列作为个人计算的输入 1 2 3 4 5 1 2 3 4 5 2 3 4 5 6 2 3 4 5 6 3 4 5 6 7 -> 3 4 5 ...
  • 16 votes
     answers
     views

    CUDA计算能力要求

    什么是最低计算能力要求: CUDA 5.5? CUDA 6.0? CUDA 6.5?
  • 2 votes
     answers
     views

    Linux与Windows上CUDA的优缺点?

    我正在使用两种操作系统(Fedora 13和Windows 7)用于不同目的,但我将使用CUDA C / C进入GPU计算 . 我已经阅读了Visual Studio的Parallel Nsight插件,它似乎是一个令人惊叹的开发环境 . 但是,Linux总是有更多的工具和GPU超级计算机通常使用Linux . 无论如何,我想知道使用其中一个或两个平台的人的利弊 . 如果有人想知道,它是一个双启动...
  • 1 votes
     answers
     views

    2.x设备中的银行冲突

    具有2.x设备的设备中的银行冲突是什么?据我了解CUDA C编程指南,在2.x设备中,如果两个线程在同一共享内存库中访问相同的32位字,则不会导致存储体冲突 . 相反,这个词是广播的 . 当两个线程在同一共享内存库中写入相同的32位字时,只有一个线程成功 . 由于片上存储器为64 KB(共享存储器为48 KB,L1为16 KB,反之亦然),并且它由32个存储体组成,我假设每个存储体由2 KB组成 ...
  • 7 votes
     answers
     views

    2-GPU卡上的PCI-e通道分配?

    cudaMemcpy 操作的数据速率受到分配用于从CPU运行到GPU的PCI-e 3.0(或2.0)通道数量的严重影响 . 我很好奇PCI-e通道如何在包含两个GPU的Nvidia设备上使用 . Nvidia有一些产品在一个PCI-e设备上有两个GPU . 例如: GTX 590包含两个Fermi GF110 GPU GTX 690包含两个Kepler GK104 GPU 与许多较新的...
  • 4 votes
     answers
     views

    改进CUDA中的异步执行

    我目前正在编写一个程序,使用CUDA API在GPU上执行大型模拟 . 为了加速性能,我尝试同时运行我的内核,然后再次将结果异步复制到主机内存中 . 代码看起来大致如下: #define NSTREAMS 8 #define BLOCKDIMX 16 #define BLOCKDIMY 16 void domainUpdate(float* domain_cpu, // po...
  • 3 votes
     answers
     views

    在主机和GPU上添加CUDA的结果不同

    我有一个功能,它采用彩色图片并返回它的灰色版本 . 如果我在主机上运行顺序代码,一切都很完美 . 如果我在设备上运行它,结果会略有不同(1000中的一个像素与正确值相比为1或-1) . 我认为这与转换有关,但我不确定 . 这是我使用的代码: __global__ void rgb2gray_d (unsigned char *deviceImage, unsigned char *deviceRe...
  • 0 votes
     answers
     views

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

    我最近在家里的机器上安装了第二个GPU(Tesla K40),我的搜索建议第一个PCI插槽成为CUDA作业选择的默认GPU . 一个很棒的链接正在解释它可以在这里找到: Default GPU Assignment 我的原始GPU是TITAN X,也支持CUDA,但它最适合单精度计算,特斯拉更适合双精度 . 我对该小组的问题是,是否有办法将我的默认CUDA编程设备设置为第二个?显然我每次都可以在代...
  • 3 votes
     answers
     views

    如何在电路板上发现PCIe总线拓扑和插槽号?

    例如,当我使用带有CUDA C / C和GPUDirect 2.0 P2P的多GPU系统时,我使用嵌套的PCI-Express交换机,如图所示,那么我必须知道它们的PCI总线ID在任意两个GPU之间有多少交换机,优化数据传输和计算分配 . 或者,如果我已经知道具有PCIe交换机的硬件PCIe拓扑,那么我必须知道,板上哪个硬件PCIe插槽连接了任何GPU卡 . 据我所知,即使我已经知道具有PCIe...
  • 0 votes
     answers
     views

    如何设置专用GPU以对CUDA内核进行基准测试?

    我想在linux下使用第二个GPU设备作为专用设备,以便对内核进行基准测试 . 我正在测试的内核是没有减少的SIMD计算内核而且没有X-Server连接到GPU,该设备是GeForge GTX-480所以我认为计算能力是2.因此,高级功能作为动态并行和其他人,都是残疾人 . 使用nvidia-smi实用程序可以使用各种模式来设置GPU "Default" means multi...
  • 2 votes
     answers
     views

    如果有两个gpu,如何设置Torch只使用一个gpu?

    我的电脑有两个GPU . 这是我第一次使用两个GPU . 当我有一个GPU时,我只运行Cuda程序,它只在一个GPU上运行 . 但是,我不知道如何控制程序使用哪个GPU以及如何在唯一的GPU上运行程序 . 我搜索了互联网,post说 导出CUDA_VISIBLE_DEVICES = 0 必须在运行程序之前使用它 . 我有两个程序要运行 . 一个是火炬脚本,另一个是Cuda脚本 . 我打开了两个...
  • 0 votes
     answers
     views

    第一次cuda呼叫中的OpenCV Cuda“无效设备功能”

    我已经成功地使用gpu支持构建OpenCV一段时间了,但是,我遇到了一些我似乎无法修复的情况 . 在使用VS 2013和CUDA 8.0构建OpenCV 3.3之后,OpenCV cpu和gpu似乎可以在我的几台测试机器GTX 750 Ti和GTX 950M(都使用Windows 10)上正常工作 . 在另一台带有GTX 1050 Ti的机器上,cpu调用工作,但是在我的第一个OpenCV-cud...
  • 5 votes
     answers
     views

    CUDA中的块尺寸

    我有运行cuda-4.0的NVIDIA GTX 570计算能力2.0 . CUDA SDK中的deviceQuery可执行文件为我提供了有关我的CUDA设备及其各种属性的信息 . 输出中的两行是 每个块的最大线程数:1024块的每个维度的最大大小:1024 x 1024 x 64 为什么块的第三维限制为最多64个线程,而X和Y维度最多可以变为1024个线程?
  • 0 votes
     answers
     views

    CUDA - 更多SM或更高的时钟频率?

    当CUDA内核速度执行至关重要时,更重要的是什么?核心的频率或SM的数量? 我可以在Quadro K5000和Gtx 670之间进行选择,我无法决定 . 在两种情况下内存似乎都足够了,但是quadro有更多的SM,而Gtx有更高的时钟频率(我想这个值是每个核心) .
  • -3 votes
     answers
     views

    每块最大螺纹

    我们的CUDA应用程序中每块可以使用多于Quadro K500支持的每块最大线程数(每块1024个线程)的块数是多少?它有效吗?谢谢 Cuda版本:5.0设备:Quadro K5000 Os:Linux #include <cuda.h> #include <stdio.h> #include <cuda_profiler_api.h> #include &l...
  • 0 votes
     answers
     views

    CUDA多个设备问题,推力:: system_error

    我使用 thrust 开发了一个算法 . 我的办公室计算机有一个支持CUDA的卡,带有架构: ---有关设备0的一般信息名称:Quadro 2000计算能力:2.1时钟速率:1251000 kHz设备重叠:启用内核执行超时:禁用 在这台机器上,我的算法运行没有错误 . 但是,在尝试生成 device_vector 时,实验室计算机上的干净构建会引发令人讨厌的错误 . 这两台机器都运行RedHa...
  • -2 votes
     answers
     views

    可以在共享内存CUDA中保存的数据量

    在我的gpu每个块的最大线程数是1024.我正在使用CUDA处理图像处理项目 . 现在,如果我想使用共享内存,则意味着我只能使用一个块使用1024个像素,并且只需要将这1024个元素复制到共享内存
  • 3 votes
     answers
     views

    CUBLAS - 矩阵加法......怎么样?

    我正在尝试使用CUBLAS来总结两个未知大小的大矩阵 . 我需要一个完全优化的代码(如果可能的话)所以我选择不重写矩阵加法代码(简单)但是使用CUBLAS,特别是允许对A和C求和的cublasSgemm函数(如果B是单位矩阵):* C = alpha * op(A)* op(B)beta * c * 问题是:C和C以行主格式存储矩阵,而cublasSgemm旨在(以便兼容)以列主格式工作 . 你可...
  • 15 votes
     answers
     views

    CUDA:如何检查正确的计算能力?

    编译具有更高计算能力的CUDA代码将在具有较低计算能力的设备上长时间完美地执行,然后在某些内核中静默失败一天 . 我花了半天时间追逐一个难以捉摸的小虫只是为了意识到构建规则有 sm_21 而设备(特斯拉C2050)是 2.0 . 是否有我可以添加的CUDA API代码可以自我检查它是否在兼容计算能力的设备上运行?我需要编译和使用许多计算能力的设备 . 我可以采取任何其他措施来确保不会发生此类错误...
  • 2 votes
     answers
     views

    银行在字数方面存在冲突

    我读了几篇关于共享内存的好文章;但我有关于银行冲突的初步问题据说,如果线程1和线程2从银行0访问字0,那么就没有银行冲突,但如果他们访问不同的话,那么就会出现银行冲突;但我的问题是不同的单词如何存在于一个银行?由于bank 0的大小是32位,字大小是32位;最多可以有一个字/银行 .
  • 7 votes
     answers
     views

    如何使CUDA中的矩阵列标准化并获得最大性能?

    如何有效地规范化CUDA中的矩阵列? 我的矩阵存储在column-major中,典型大小为2000x200 . 该操作可以用以下matlab代码表示 . A = rand(2000,200); A = exp(A); A = A./repmat(sum(A,1), [size(A,1) 1]); 这可以通过Thrust,cuBLAS和/或cuNPP有效地完成吗? 包括4个内核的快速实现如下所示...
  • 1 votes
     answers
     views

    使用OpenMP CUDA对CPU的速度不是很快?

    我试图计算每个大小为20000的450个向量之间的互相关 . 在CPU上执行此操作时,我将数据存储在2D矩阵中,行= 20000且cols = 450 . 计算的序列代码如下 void computeFF_cpu( float * nSamples, float * nFeatures, float ** data, float ** corr #pragma omp parall...
  • 0 votes
     answers
     views

    如何配置cublas {t} symm()函数参数

    该函数使用CUDA执行对称矩阵 - 矩阵乘法 . 虽然,我成功地使用了非对称版本“cublas gemm()”但我无法正确使用“cublas symm()”函数 . 我知道CUBLAS库使用列主要矩阵存储 . 我正在使用行主C / C矩阵,我知道如何通过替换输入矩阵等来解决“cublas gemm()”这个问题 . 但是,我无法解决对称情况 . 问题是即使我使用列主要矩阵存储我发现了意想不到...
  • 1 votes
     answers
     views

    CUDA / CUBLAS矩阵 - 向量乘法

    我之前发布了一个关于CUDA中矩阵向量乘法的问题以及关于编写自己的内核的问题 . 在这之后,我决定使用CUBLAS按照一些用户(感谢@Robert Crovella)的建议来实现我的问题,希望获得更高的性能(我的项目是性能驱动的) . 只是为了澄清:我想将NxN矩阵与1xN向量相乘 . 我一直在看下面粘贴的代码几天,我无法弄清楚为什么乘法会给我一个不正确的结果 . 我担心使用<vector&...
  • 10 votes
     answers
     views

    CUDA中的矩阵向量乘法:基准测试和性能

    我正在用一些新的基准测试结果更新我的问题(我还重新提出了更具体的问题并更新了代码)... 我使用共享内存在CUDA C Programming Guide之后在CUDA C中实现了用于矩阵向量乘法的内核 . 让我首先介绍一些我在Jetson TK1(GPU:Tegra K1,计算能力3.2)上做的基准测试结果以及与cuBLAS的比较: 在这里,我猜cuBLAS做了一些魔术,因为它的执行似乎不受...
  • 0 votes
     answers
     views

    在CUDA内核中使用cublasStbsv

    我正在尝试用我的CUDA内核中的 cublasStbsv 函数求解一个等式 . 内核代码如下: __global__ void invokeDeviceCublasSgemm(cublasStatus_t *returnValue, int n, ...

热门问题