C++ &引用;ThreadIdx";visual studio无法识别CUDA的名称

C++ &引用;ThreadIdx";visual studio无法识别CUDA的名称,c++,visual-studio-2010,visual-studio,cuda,gpgpu,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.

在下面的示例中,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];
        }
 }
#包括
#包括
#包括
#包括
#定义N 256
__全局无效矩阵向量多gpu 1 256(浮点*A\u d,浮点*B\u d,浮点*C\u d);
int main(){
int i,j;
浮点数A[N],B[N*N],C[N];
浮动*A_d,*B_d,*C_d;
dim3块(1,1,1);
dim3螺纹(256,1,1);
对于(j=0;j尝试添加

#include <device_launch_parameters.h>
#包括
尝试添加

#include <device_launch_parameters.h>
#包括

请键入“cuda红色下划线”在右上角的搜索框中,您将获得大量有关这方面的信息。红色下划线本身是一个intellisense功能,它本身并不阻止您编译或构建CUDA代码。我猜这是Visual Studio的CUDA支持中的一个设计限制。Kovi的答案解决了问题。如果您需要also语法高亮,请参阅和。请键入“cuda红色下划线”在右上角的搜索框中,您将获得大量有关这方面的信息。红色下划线本身是一个intellisense功能,它本身并不阻止您编译或构建CUDA代码。我猜这是Visual Studio的CUDA支持中的一个设计限制。Kovi的答案解决了问题。如果您需要also语法highligthing,请参见和。是的!谢谢Kovi!但是我不明白为什么程序的执行似乎成功了,所以问题只是VisualStudio中的一个显示问题?VisualStudio不编译cu文件,所以它不需要知道什么是threadidx…cu文件是用nvcc编译的(它被称为VS)这就是编译没有任何错误的原因耶!谢谢你,科维!好吧,但我不明白为什么程序的执行似乎是成功的,所以问题只是VisualStudio中的一个显示问题?VisualStudio不编译cu文件,所以它不需要知道什么是threadidx…cu文件是用nvcc编译的(被VS调用)这是编译没有任何错误的原因