首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么CUDA内核没有在VS 2013中推出CUDA 9.0

为什么CUDA内核没有在VS 2013中推出CUDA 9.0
EN

Stack Overflow用户
提问于 2017-12-15 17:16:46
回答 2查看 533关注 0票数 2

我已经写了一个基于数据自动化系统的并行程序(GeForce GT 720 M)。我已经安装了CUDA9.0工具包Visual 2013。一切正常,但是当我编译并运行代码时,输出是错误的。

该方案是:

代码语言:javascript
复制
#include <stdio.h>
#include "cuda_runtime.h"
#include "device_launch_parameters.h"

__global__ void square(float * d_out, float * d_in)
{
    int idx = threadIdx.x;
    float f = d_in[idx];
    d_out[idx] = 50;
}

int main(int argc, char ** argv)
{
    const int ARRAY_SIZE = 64;
    const int ARRAY_BYTES = ARRAY_SIZE * sizeof(float);

    // generate the input array on the host
    float h_in[ARRAY_SIZE];
    for (int i = 0; i < ARRAY_SIZE; i++)
    {
        h_in[i] = float(i);
    }
    float h_out[ARRAY_SIZE];

    // declare GPU memory pointers
    float * d_in;
    float * d_out;

    // allocate GPU memory
    cudaMalloc((void **) &d_in, ARRAY_BYTES);
    cudaMalloc((void **) &d_out, ARRAY_BYTES);

    // transfer the array to the GPU
   cudaMemcpy(d_in, h_in, ARRAY_BYTES, cudaMemcpyHostToDevice);

    // launch the Kernel
    square << <1, ARRAY_SIZE >> >(d_out, d_in);

    // copy back the result array to the GPU
    cudaMemcpy(h_out, d_out, ARRAY_BYTES, cudaMemcpyDeviceToHost);

    // print out the resulting array
    for (int i = 0; i < ARRAY_SIZE; i++)
    {
        printf("%f", h_out[i]);
        printf(((i % 4) != 3) ? "\t" : "\n");
    }

    // free GPU memory allocation
    cudaFree(d_in);
    cudaFree(d_out);

    getchar();
    return 0;
}

当我运行它时,输出是:

另外,我用nvcc square.cu编译了它,但是输出是相同的。我在VS中有内核启动语法错误,但我认为它与输出无关(但是映像与另一个程序相关):

EN

Stack Overflow用户

回答已采纳

发布于 2017-12-15 19:55:29

问题是数据自动化系统工具包版本。对于GeForce GT 720 m,计算能力为2.1,可供CUDA 8.0使用。

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47836996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档