其它硬件开发

CUDA - 可视化分析器和控制流发散

我在剖析我的CUDA应用程序,我遇到了一些我不明白的Visual Profiler中存在的“控制流发散”指标。 根据用户指南: 控制流发散给出了未执行的线程指令的百分比 我在CUDA内核中有以下代码: int var; var = tex2D(texture,x,y); // texture fetch if(var ..
发布时间:2017-03-05 18:55:32 其它硬件开发

我可以在.h文件中定义CUDA内核吗?

我很难理解我应该如何处理CUDA程序中的不同文件: 我试图重构一个CUDA程序,我已经工作了一会儿。到目前为止它或多或少是一个单文件程序。我有1 .cu文件,其中包含所有的CUDA代码以及main函数。我有几个头文件,包括,但它们只包含非CUDA函数。该程序越来越大,更麻烦,我想把内核结构为不同的文件,以便于阅读。 最初我想这样做的方法是有.cuh文件。我没有得到工作,所以我试图让我的 ..
发布时间:2017-03-05 18:54:56 其它硬件开发

nvvp和nsight的profiler给出不同的结果?

我想尝试gst_inst_128bit指令。 在同一个程序中,nvvp给了很多gst_inst_128bit命令执行。 在nsight的profiler中,获取4次gst_inst_32bit指令。 它们应该是一个相同的程序。 在Linux,CUDA 5.0,GTX 580上试验了这个实验。 程序只是将数据从一个数组复制到另一个数组内核函数: 在main中: cudaMal ..
发布时间:2017-03-05 18:54:44 其它硬件开发

为什么我有一个“未对齐的内存访问不支持”错误?

我有一个“未对齐的内存访问不支持的错误”,并做了谷歌搜索 ,但没有明确的解释。 整个错误消息是: /c:\cuda\include\math_functions_dbl_ptx1.h ):错误:不支持未对齐的内存访问 以下代码导致错误: for(j = low; j 变量j和高声明为int。 任何人都可以解释这件事吗? ..
发布时间:2017-03-05 18:54:19 其它硬件开发

Cuda性能测量 - 已用时间返回零

我写了几核函数,不知道有多少毫秒来处理这些功能。 使用命名空间std; #include #include #include 的#defineñ8000 无效fillArray为(int *数据,诠释计数){ 的for(int i = 0; I<计数;我++) 数据[i] = rand()%100; ..
发布时间:2017-03-05 18:53:11 其它硬件开发

如何选择CPU和GPU进行公平比较?

我需要做一个有说服力的论据,一个好的GPU对于需要做某些计算的人可能是有价值的,并且可能愿意写他/她自己的代码来做这些计算。我编写了CUDA代码,使用GPU快速进行计算,我想将其计算时间与只使用CPU的版本进行比较。困难的部分是争论,我正在做一个相当公平的比较,即使我不是比较苹果和苹果。 如果我没有办法声称我选择的CPU和GPU在一些有意义的意义上是相当的质量,那么可以说,我可能会故意选择一 ..
发布时间:2017-03-05 18:52:58 其它硬件开发

同时运行两个具有相同数量循环的for循环,涉及两个GPU上的GPU和CPU任务

我有两个 for 循环在我的代码运行相同数量的循环。这两个循环是独立的(每个循环在不同的输入数据上工作)。在一个循环中,有CPU功能和几个内核不同时运行。 我可以在不同的GPU上执行这些迭代吗? 解决方案 您可以在两个不同的GPU上分别运行涉及的内核。 您必须注意CPU处理在两个GPU的部分结果上的同步。由于存在顺序部分,在使用 2 2 的最大可能加速因子> GPU。 从 ..
发布时间:2017-03-05 18:52:33 其它硬件开发

无法在编译CUDA项目时打开cpp1.ii文件

过去几个月,我一直在使用CUDA与64位Windows 7安装以及Visual Studio 2008.最近我转向一个32位Windows 7安装,并更新了我的显卡,这是以前是一个8600GTX现在是一个GTX465。我已经安装了相关的驱动程序和CUDA 3.1工具包,并仍然使用VS2008。 不知何故,如果我尝试和编译同样的Visual Studio项目, ,我在构建窗口中获得以下输出: ..
发布时间:2017-03-05 18:52:22 其它硬件开发

如何在Linux上使用Nsight 5.5进行远程调试?

免责声明:我知道此问题已被多次提出,但在Nsight 5.5之前,答案只是“您不能。”。 我试图在Ubuntu上使用Nsight 5.5调试CUDA程序。远程机器也是一个Ubuntu的CUDA工具包5.5。 我使用“在远程系统上调试应用程序”在NSight中设置调试。 每当我尝试运行应用程序时,我得到“无法启动远程主机上的gdbserver”错误。 这是我在控制台上得到的: ..
发布时间:2017-03-05 18:52:09 其它硬件开发

CUDA内核的向量长度基于threadIdx

这是我在CUDA中作为图像重建算法的一部分实现的伪代码的一部分: (0->检测器XDim / 2-1):对于每个ybin(0-> detectorYDim-1) : rayInit =(xbin * xBinSize + 0.5,ybin * xBinSize + 0.5,-detectordistance ) rayEnd = beamFocusCoord slopeVector ..
发布时间:2017-03-05 18:51:35 其它硬件开发

用Fortran& CUDA

我想在PGI的fortran编译器中制作一个简单的程序。这个简单的程序将使用显卡计算pi使用“飞镖”算法。在与这个程序作战了一段时间后,我终于得到它的行为大部分。但是,我目前坚持正确传回结果。我必须说,这是一个相当棘手的程序调试,因为我不能再把任何打印语句推入子程序。此程序当前返回全零。我不知道发生了什么,但我有两个想法。这两个我不知道如何解决: CUDA内核不是以某种方式运行? 我没有正 ..
发布时间:2017-03-05 18:51:22 其它硬件开发

软阈值在CUDA

我有一个数组 1024 元素,我有一个阈值 t> 0 / p> A [i] = A [i] - t //如果A [i] t A [i] = A [i] + t //如果A [i] -t A [i] = 0 //否则 简单内核: void __global__ Kernel_Shrinkage(float * A,float t,int n){ int ..
发布时间:2017-03-05 18:50:55 其它硬件开发

cublas如何实现异步标量变量传输

在许多cublas或cusparse函数调用中,它们使用标量变量,我们可以在主机指针或设备指针中传递,例如alpha和beta变量 http://docs.nvidia.com/cuda/cublas/#cublas-lt-t-gt-gemm 这是如何实现的?如果数据在主机中,我认为需要在设备上分配内存,然后调用cudaMemcpyAsync来复制数据。但是,做cudaMalloc会使函数 ..
发布时间:2017-03-05 18:50:16 其它硬件开发

CUDA中的SM如何同时运行多个块?

在CUDA中,一个SM可以同时运行多个块,如果每个块不会花费太多的资源。 在费米,我们知道一个SM由 32kb 注册空间使用。假设一个线程使用32个寄存器,所以这个SM可以包含一个包含 256((32 * 1024)/(32 * 4))线程的块。如果SM可以同时运行多个块,我们还可以为一个块配置32个逻辑,为SM配置8个块。 解决方案 正如@talonmies所说,你的数学不完全正确 ..
发布时间:2017-03-05 18:49:49 其它硬件开发

在CUDA中的块之间分配线程

我正在使用CUDA中的项目。第一次我使用 Dim 8 * 8 作为我的矩阵只有一个块。然后我计算索引如下: int idx = blockIdx.x * blockDim.x + threadIdx.x; int idy = blockIdx.y * blockDim.y + threadIdx.y; 它给了我一个正确的答案。之后,我想在块之间分配线程来衡量性能。我使 ..
发布时间:2017-03-05 18:49:05 其它硬件开发

atomicInc()不工作

我试过下面的程序使用atomicInc()。 __ global__ void ker(int * count) { int n = 1; int x = atomicInc((unsigned int *)& count [0],n); CUPRINTF(“在内核计数为%d \\\ ”,count [0]); } int main() { int hitCou ..
发布时间:2017-03-05 18:48:46 其它硬件开发