标签: nvidia

thrust :: device_reference不能和printf一起使用?

我正在使用推力分区功能将数组划分为偶数和奇数.但是,当我尝试显示设备矢量时,它会显示随机值.请告诉我错误在哪里.我想我做的一切都是正确的.

#include<stdio.h>
#include <thrust/host_vector.h>
#include <thrust/device_vector.h>
#include<thrust/partition.h>

struct is_even
  {
      //const int toCom;
      //is_even(int val):toCom(val){}
    __device__
    bool operator()(const int &x)
    {
      return x%2;
    }
  };

void main(){


    thrust::host_vector<int> H(6);
    for(int i =0 ; i<H.size();i++){
        H[i] = i+1;
    }
    thrust::device_vector<int> D = H;
    thrust::partition(D.begin(),D.end(),is_even());
    for(int i =0 ;i< D.size();i++){
        printf("%d,",D[i]);
    }


    getchar();

}
Run Code Online (Sandbox Code Playgroud)

printf cuda nvidia thrust

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

究竟什么是NVIDIA Tesla和CUDA?

我正在对GPGPU进行一些研究,目前正在努力解决特斯拉和CUDA究竟是什么问题.在"NVIDIA Tesla:统一图形和计算架构"一文中,它说特斯拉架构是随GeForce 8800推出的.随着进一步的阅读,我确信它是NVIDIA显卡的整体架构.不幸的是,事实并非如此.在http://www.nvidia.com/object/why-choose-tesla.html上,他们明确地分离了GeForce,Quadro和Tesla.那么与CUDA有什么关系呢?它只是Cuda-C硬件支持的GPU上的一般计算的扩展吗?SM,SIMT,线程同步,共享内存,Warp等概念到底是什么相关的?CUDA?特斯拉?此外http://nvidia.custhelp.com/app/answers/detail/a_id/2133/~/what-is-the-difference-between-tesla-and-cuda%3F特斯拉是一系列专为产品设计的产品高性能计算和CUDA只是软件.有人能澄清一下吗?

cuda gpgpu nvidia tesla

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

CUDA在没有GPU的系统上

我的系统中没有安装GPU卡.我想知道是否有任何方法可以在CUDA中编码并在我的无GPU笔记本电脑上访问CUDA库?

cuda gpu nvidia

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

用于研究目的的nVidia GPU:Float Precision

我正在进行人工智能的博士研究,而且我已经开始使用CUDA库作为我的测试平台了.我以前玩过CUDA,我对GPGPU的工作原理有基本的了解,但我对浮点精度感到不安.

看看GTX680,我看到FP64:1/24 FP32,而特斯拉的完整FP64为1.31 TFLOPS.我很清楚,一张是游戏卡,而另一张是专业卡.

我问的原因很简单:我买不起特斯拉,但我可能得到两个GTX680.虽然主要目标是拥有尽可能多的CUDA内核和内存,但浮点精度可能会成为一个问题.

我的问题是:

  1. Gaming GPU中的小浮点精度有多大妥协?
  2. 是不是32位浮点精度的1/24太小了?特别是与之前的费米1/8 FP32相比
  3. 由于浮动精度较小,是否存在计算结果错误的风险?即在SVM,VSM,Matrix操作,深度信念网络等中,由于浮点较小,我可能会遇到算法结果的问题,还是仅仅意味着操作需要更长时间/使用更多内存?

谢谢 !

cuda gpgpu nvidia floating-point-precision

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

编译cuda程序时出现致命错误

我正在使用动态并行性来实现一个程序.每当我编译代码时,它都会抛出致命错误,如下所示:

ptxas fatal : Unresolved extern function 'cudaGetParameterBuffer'

编译如下:

nvcc -o dyn_par dyn_par.cu -arch=sm_35

怎么解决?

cuda nvidia

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

OpenCL的成本get_local_id()

我有一个简单的扫描内核,它计算循环中几个块的扫描.我注意到当get_local_id()存储在局部变量中而不是在循环内调用它时,性能会有所上升.所以用代码总结一下,这个:

__kernel void LocalScan_v0(__global const int *p_array, int n_array_size, __global int *p_scan)
{
    const int n_group_offset = get_group_id(0) * SCAN_BLOCK_SIZE;
    p_array += n_group_offset;
    p_scan += n_group_offset;
    // calculate group offset

    const int li = get_local_id(0); // *** local id cached ***
    const int gn = get_num_groups(0);
    __local int p_workspace[SCAN_BLOCK_SIZE];
    for(int i = n_group_offset; i < n_array_size; i += SCAN_BLOCK_SIZE * gn) {
        LocalScan_SingleBlock(p_array, p_scan, p_workspace, li);

        p_array += SCAN_BLOCK_SIZE * gn;
        p_scan += SCAN_BLOCK_SIZE * gn;
    }
    // process all …
Run Code Online (Sandbox Code Playgroud)

cuda nvidia opencl

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

使用OpenGL核心配置文件时为什么会崩溃?

当我尝试运行这个简单的OpenGL测试程序时,我遇到了分段错误.只有在使用核心配置文件标志创建上下文时才会发生这种情况.如果我使用兼容性配置文件标志,程序运行没有问题.

编辑:我检查了函数的指针glGenVertexArrays,然后返回NULL.如果glfwCreateWindow没有返回NULL,并glGetString(GL_VERSION)确认上下文是版本4.3并glewInit返回GLEW_OK那么为什么glGenVertexArrays == NULL

我的操作系统是64位Windows 7,而我的GPU是带有331.82 WHQL驱动程序的Nvidia GTX 760.

码:

#include <GL/glew.h>
#include <GLFW/glfw3.h>
#include <stdlib.h>
#include <stdio.h>

#define GLSL(src) "#version 430 core\n" #src

void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods)
{
    if(key == GLFW_KEY_ESCAPE && action == GLFW_PRESS)
        glfwSetWindowShouldClose(window, GL_TRUE);
}

GLuint create_program(const char* vertex_source, const char* fragment_source)
{
    GLuint vs = glCreateShader(GL_VERTEX_SHADER);
    glShaderSource(vs, 1, &vertex_source, NULL);
    glCompileShader(vs); …
Run Code Online (Sandbox Code Playgroud)

c++ opengl nvidia

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

使用Nvidia平台为OpenCL配置本地(共享)内存

我想在我的OpenCL内核中优化我的本地内存访问模式.我在某处读到了可配置的本地内存.例如,我们应该能够配置哪个量用于本地mem以及哪个量用于自动缓存.

另外我读到银行大小可以在这里选择最新的(开普勒)Nvidia硬件:http: //www.acceleware.com/blog/maximizing-shared-memory-bandwidth-nvidia-kepler-gpus.这一点对于本地存储器中的双精度值存储似乎非常关键.

Nvidia是否提供专门为CUDA用户设置本地内存的功能?我找不到OpenCL的类似方法.这可能是以不同的方式调用,还是真的不存在?

cuda nvidia opencl gpu-shared-memory

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

将矢量bool复制到CUDA内存时出错

我遇到了编译错误,将bool向量复制到cuda内存将失败

bool *gpu; 

cudaMalloc(reinterpret_cast<void **>(&gpu), 100);

std::vector<bool> cpu(100);

for(int i=0;i<100;i++){
  cpu[i]=true;
}

cudaMemcpy(gpu, cpu.data(), 100*sizeof(bool), cudaMemcpyHostToDevice);
Run Code Online (Sandbox Code Playgroud)

它回来了

error: invalid use of void expression cudaMemcpyHostToDevice);
Run Code Online (Sandbox Code Playgroud)

但是带有float向量的相同代码将被编译.

float *gpu; 

cudaMalloc(reinterpret_cast<void **>(&gpu), 100);

std::vector<float> cpu(100);

for(int i=0;i<100;i++){
  cpu[i]=i;
}

cudaMemcpy(gpu, cpu.data(), 100*sizeof(float), cudaMemcpyHostToDevice);
Run Code Online (Sandbox Code Playgroud)

为什么会这样?

c++ cuda vector nvidia

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

NVIDIA MPS(多进程服务器)和CUDA流之间是什么关系?

从官方的NVIDIA Multi-Process Server 文档看,我不清楚它如何与CUDA流交互

这是一个例子:

应用0:将内核发布到逻辑流0;

App 1:将内核发布到(自己的)逻辑流0。

在这种情况下,

1)MPS是否/如何“劫持”这些CUDA调用?对于每个应用程序,它是否完全了解使用了哪些流以及哪些流中包含哪些内核?

2)MPS是否创建自己的2个流,并将相应的内核放入正确的流?还是MPS可能通过流以外的机制启用内核并发?

如果有帮助,我对MPS在Volta上的工作方式很感兴趣,但是也希望了解有关旧体系结构的信息。

cuda gpu nvidia cuda-streams

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