标签: nvidia

如何减轻OpenCL/CUDA中的主机+设备内存传输瓶颈

如果我的算法由主机到设备和设备的瓶颈来承载内存传输,那么唯一的解决方案是不同的还是修改过的算法?

memory cuda nvidia opencl

3
推荐指数
1
解决办法
2363
查看次数

Cuda内核返回向量

我有一个单词列表,我的目标是在一个非常长的短语中匹配每个单词。我在匹配每个单词时没有问题,我唯一的问题是返回包含有关每个匹配信息的结构向量。

在代码中:

typedef struct {
    int A, B, C; } Match;

__global__ void Find(veryLongPhrase * _phrase, Words * _word_list, vector<Match> * _matches)
{
    int a, b, c;

    [...] //Parallel search for each word in the phrase

    if(match) //When an occurrence is found
    {
        _matches.push_back(new Match{ A = a, B = b, C = c }); //Here comes the unknown, what should I do here???
    }
}

main()
{
    [...]

    veryLongPhrase * myPhrase = "The quick brown fox jumps over the …
Run Code Online (Sandbox Code Playgroud)

c c++ parallel-processing cuda nvidia

3
推荐指数
1
解决办法
2246
查看次数

我可以将NVIDIA Nsight连接到远程计算机吗?

我的计算机上没有支持CUDA的显卡.我可以使用ssh(或其他)将NVIDIA Nsight连接到远程计算机吗?

cuda gpu nvidia nsight

3
推荐指数
1
解决办法
2065
查看次数

Linux - 图形驱动程序和Mesa之间的关系

当我安装nvidia专有驱动程序时,使用Nvidia OpenGL实现(我不需要Mesa).哪个OpenGL实现可以与开源的nvidia驱动程序一起使用 - Nouveau?Nouveau还提供OpenGL实现还是必须使用Mesa OpenGL实现?我可以使用带有Mesa OpenGL实现的nvidia驱动程序吗?有什么可能性?

linux opengl drivers nvidia

3
推荐指数
1
解决办法
1514
查看次数

在cuda中并行执行内核

可以说我有三个全局数组,这些全局数组已使用cudaMemcpy复制到了gpu中,但是c中的这些gloabl数组尚未使用cudaHostAlloc进行分配,因此无法分配页面锁定的内存,而是简单的gloabl分配。

int a[100],b [100],c[100];
cudaMemcpy(d_a,a,100*sizeof(int),cudaMemcpyHostToDevice);
cudaMemcpy(d_b,b,100*sizeof(int),cudaMemcpyHostToDevice);
cudaMemcpy(d_c,c,100*sizeof(int),cudaMemcpyHostToDevice);
Run Code Online (Sandbox Code Playgroud)

现在我有10个内核,它们在单独的流中启动,以便可以并行运行,其中一些正在使用在gpu中复制的全局数组。现在这些内核正在运行1000次迭代。他们不需要在迭代过程中将任何内容复制回主机。

但是问题在于它们不是并行执行,而是以串行方式执行。

  cudaStream_t stream[3];

   for(int i=0;i<3;i++)cudaStreamCreate (&stream[i]);

   for(int i=0;i<100;i++){
       kernel1<<<blocks,threads,0,stream[0]>>>(d_a,d_b);
       kernel2<<<blocks,threads,0,strea[1]>>(d_b,d_c);
      kernal3<<<blocks,threads,0,stream[2]>>>(d_c,d_a);
    cudaDeviceSynchronize();
  }
Run Code Online (Sandbox Code Playgroud)

我不明白为什么?

parallel-processing cuda nvidia

3
推荐指数
1
解决办法
3175
查看次数

nvEncRegisterResource()因-23而失败

在尝试使用NVEnc将OpenGL帧作为H264进行流式传输时,我碰到了一堵完整的砖墙.我已经在这个特殊问题上待了将近8个小时而没有任何进展.

问题是调用nvEncRegisterResource(),代码-23总是失败(枚举值NV_ENC_ERR_RESOURCE_REGISTER_FAILED,记录为"未能注册资源" - 感谢NVidia).

我正在尝试遵循奥斯陆大学本文档中概述的程序(第54页,"OpenGL互操作"),因此我知道这应该有用,但遗憾的是,该文档并未提供代码本身.

这个想法相当简单:

  1. 将OpenGL帧缓冲区对象生成的纹理映射到CUDA;
  2. 将纹理复制到(先前分配的)CUDA缓冲区中;
  3. 将缓冲区映射为NVEnc输入资源
  4. 使用该输入资源作为编码源

正如我所说,问题是第(3)步.以下是相关的代码片段(为简洁起见,我省略了错误处理.)

// Round up width and height
priv->encWidth = (_resolution.w + 31) & ~31, priv->encHeight = (_resolution.h + 31) & ~31;

// Allocate CUDA "pitched" memory to match the input texture (YUV, one byte per component)
cuErr = cudaMallocPitch(&priv->cudaMemPtr, &priv->cudaMemPitch, 3 * priv->encWidth, priv->encHeight);
Run Code Online (Sandbox Code Playgroud)

这应该分配设备上的CUDA内存("倾斜"类型,尽管我也尝试过非音调,但结果没有任何改变.)

// Register the CUDA buffer as an input resource
NV_ENC_REGISTER_RESOURCE regResParams = { 0 };
regResParams.version = NV_ENC_REGISTER_RESOURCE_VER;
regResParams.resourceType = NV_ENC_INPUT_RESOURCE_TYPE_CUDADEVICEPTR; …
Run Code Online (Sandbox Code Playgroud)

opengl cuda nvidia video-streaming nvenc

3
推荐指数
1
解决办法
1591
查看次数

在Maxwell GPU上使用针对计算能力3.7编译的CUDA?

我的开发工作站目前有NVIDIA Quadro K2200和K620.两者都具有CUDA计算能力5.0.然而,最终的生产系统有一个Tesla K80,具有CUDA计算能力3.7.

是否可以在我的Quadro GPU上安装和开发用于计算能力的CUDA程序3.7,然后将它们移动到K80而无需进行重大更改?

cuda nvidia tesla

3
推荐指数
1
解决办法
516
查看次数

如何从ubuntu卸载Cuda7.5?

我有一块NVIDIA jetson TX1主板.我想安装caffe.根据Caffe的先决条件我安装了CUDA工具包https://developer.nvidia.com/cuda-downloads.后来我发现这个板有自己的安装说明.它需要10GB的空间而我没有它,因为我已经给了一些Caffe先决条件安装.现在我需要完全删除这个CUDA工具包.到目前为止,我找不到确定的方法.你能帮我么?

我使用的是ubunto 14.4.+ NVIDIA jetson TX1

nvidia deep-learning caffe

3
推荐指数
2
解决办法
2万
查看次数

CUDA核心有矢量指令吗?

根据大多数NVidia文档,CUDA核心是标量处理器,只应执行标量操作,这将被矢量化为32分量SIMT扭曲.

但OpenCL具有矢量类型,例如.uchar8它具有与ulong(64位)相同的大小,可以由单个标量核心处理.如果我对uchar8向量进行操作(例如,按组件添加),它是否也会映射到单个核心上的指令?

如果一个块(工作组)中有1024个工作项,并且每个工作项处理一个uchar8,那么这将有效地uchar并行处理8120 吗?

编辑: 我的问题是,如果在CUDA架构上(独立于OpenCL),在"标量"核心中有一些矢量指令可用.因为如果核心已经能够处理32位类型,例如它也可以处理32位的添加是合理的uchar4,特别是因为向量操作经常用在计算机图形中.

cuda gpu gpgpu nvidia opencl

3
推荐指数
1
解决办法
871
查看次数

L2事务如何映射到GPU中的DRAM?

在GPU中,到L2高速缓存的事务可以是32B,64B或128B(读和写)的大小.并且可以使用诸如gst_transactions和gld_transactions之类的nvprof度量来测量此类事务的总数.但是,我无法找到任何详细说明如何映射这些事务以进行DRAM访问的材料,即这些事务如何由DRAM处理,而这些事务通常具有不同的总线宽度?例如,TitanXp GPU具有384位全局内存总线,P100具有3072位内存总线.那么32B,64B或128B指令如何映射到这些存储器总线.如何衡量DRAM控制器生成的事务数量?

PS:dram_read_transactions指标似乎没有这样做.我之所以这么说是因为我在TitanXp和P100上获得了相同的dram_read_transactions值(即使在顺序访问期间),尽管两者的总线宽度差异很大.

cuda gpu gpgpu nvidia

3
推荐指数
1
解决办法
134
查看次数