c++ - Visual Studio 无法识别 CUDA 的 "ThreadIdx"

标签 c++ visual-studio-2010 visual-studio cuda gpgpu

<分区>

Visual Studio 在以下示例中用红线突出显示“threadIdx”。

程序似乎执行成功了,所以问题只是VisualStudio中的显示问题。

我怎样才能使 Visual Studio 不再将 threadIdx 突出显示为无效?

我的环境: * 操作系统:Windows7,64位 * VisualStudio2010、CUDA5.5


源代码:

 #include <cuda_runtime.h>
 #include <stdio.h> 
 #include <math.h> 
 #include <cuda.h> 


 #define N 256
 __global__ void matrix_vector_multi_gpu_1_256(float *A_d, float *B_d, float *C_d);
 int main(){
    int i,j;
    float A[N], B[N*N], C[N];
    float *A_d, *B_d, *C_d;

    dim3 blocks(1,1,1);
    dim3 threads(256,1,1);

    for(j=0;j<N;j++){
       for(i=0;i<N;i++){
        B[j*N+i]=((float)j)/256.0;
        }
    }

    for(j=0;j<N;j++){
       C[j]=1.0F;
    }

    cudaMalloc((void**)&A_d, N*sizeof(float));
    cudaMalloc((void**)&B_d, N*N*sizeof(float));
    cudaMalloc((void**)&C_d, N*sizeof(float));

    cudaMemcpy(A_d,A,N*sizeof(float),cudaMemcpyHostToDevice);
    cudaMemcpy(B_d,B,N*N*sizeof(float),cudaMemcpyHostToDevice);
    cudaMemcpy(C_d,C,N*sizeof(float),cudaMemcpyHostToDevice);

    matrix_vector_multi_gpu_1_256<<<blocks,threads>>>(A_d,B_d,C_d);
    cudaMemcpy(A,A_d,N*sizeof(float),cudaMemcpyDeviceToHost);

    for(j=0;j<N;j++){
        printf("A[ %d ]=%f \n",j,A[j]);
    }
    getchar();

    cudaFree(A_d);
    cudaFree(B_d);
    cudaFree(C_d);
    return 0;
 }

 __global__ void matrix_vector_multi_gpu_1_256(float *A_d, float *B_d, float *C_d){
     int i;

     A_d[threadIdx.x]=0.0F; 
        for(i=0;i<N;i++){
             A_d[threadIdx.x]=A_d[threadIdx.x]+B_d[threadIdx.x*N+i]*C_d[i];
        }
 }

最佳答案

尝试添加

#include <device_launch_parameters.h>

关于c++ - Visual Studio 无法识别 CUDA 的 "ThreadIdx",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19429198/

相关文章:

c++ - 不寻常的范围解析运算符

c# - 在 visual studio 中重建 app.config?

c++ - 在数组中找到两个总和为 k 的元素

C++ 映射插入不良行为

c++ - CMFCButton::SetImage - 位图不会显示

c++ - 当一个人在 Visual Studio 2010 中编译一个 `C` 文件时,它是否被编译为 C++ 文件?

c# - 在哪里可以修改 Visual Studio 中详细的 C# 编译器优化设置?

c++ - 如何在 Visual Studio 中制作可分发的 C++ 程序

c++ - 一个简单的 SDL 应用程序不适用于使用 Visual Studio 2012 的 x64 配置

c++ - 声学数据高度图