Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CUDA和C++;简单项目 我试图创建一个CUDA + C++项目。基本上是一个.cpp项目,需要一些CUDA内核。所以我只是简单地遵循了这个例子,它基本上添加了两个向量。内核执行求和工作: _C++_Visual Studio 2012_Cuda - Fatal编程技术网

CUDA和C++;简单项目 我试图创建一个CUDA + C++项目。基本上是一个.cpp项目,需要一些CUDA内核。所以我只是简单地遵循了这个例子,它基本上添加了两个向量。内核执行求和工作:

CUDA和C++;简单项目 我试图创建一个CUDA + C++项目。基本上是一个.cpp项目,需要一些CUDA内核。所以我只是简单地遵循了这个例子,它基本上添加了两个向量。内核执行求和工作: ,c++,visual-studio-2012,cuda,C++,Visual Studio 2012,Cuda,这是密码 #include <iostream> #include "cuda_runtime.h" #include "cuda.h" #include "device_launch_parameters.h" using namespace std; __global__ void saxpy(int n, float a, float *x, float *y) { int i = blockIdx.x*blockDim.x + threadIdx.x; if (i

这是密码

#include <iostream>
#include "cuda_runtime.h"
#include "cuda.h"
#include "device_launch_parameters.h"

using namespace std;

__global__ void saxpy(int n, float a, float *x, float *y)
{
  int i = blockIdx.x*blockDim.x + threadIdx.x;
  if (i < n) y[i] = a*x[i] + y[i];
}

int main(void)
{
  int N = 1<<20;
  float *x, *y, *d_x, *d_y;
  x = (float*)malloc(N*sizeof(float));
  y = (float*)malloc(N*sizeof(float));

  cudaMalloc(&d_x, N*sizeof(float));
  cudaMalloc(&d_y, N*sizeof(float));

  for (int i = 0; i < N; i++) {
    x[i] = 1.0f;
    y[i] = 2.0f;
  }

  cudaMemcpy(d_x, x, N*sizeof(float), cudaMemcpyHostToDevice);
  cudaMemcpy(d_y, y, N*sizeof(float), cudaMemcpyHostToDevice);

  // Perform SAXPY on 1M elements
  saxpy<<<(N+255)/256, 256>>>(N, 2.0, d_x, d_y);

  cudaMemcpy(y, d_y, N*sizeof(float), cudaMemcpyDeviceToHost);

  float maxError = 0.0f;
  for (int i = 0; i < N; i++)
    maxError = max(maxError, abs(y[i]-4.0f));
  cout << "Max error: " << maxError;
}
如果行
saxpy(N,2.0,d_x,d_y)被注释掉,然后出现此错误:

1>------ Rebuild All started: Project: CUDATest001, Configuration: Debug x64 ------
1>  CUDATestZeroZeroOne.cpp
1>CUDATestZeroZeroOne.obj : error LNK2001: unresolved external symbol threadIdx
1>CUDATestZeroZeroOne.obj : error LNK2001: unresolved external symbol blockIdx
1>CUDATestZeroZeroOne.obj : error LNK2001: unresolved external symbol blockDim
1>D:\Projects\CUDATest001\x64\Debug\CUDATest001.exe : fatal error LNK1120: 3 unresolved externals
========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========
我正在使用vs2012+CUDA 5.5。我从一个空的C++ Win32控制台项目开始,添加了一个.cpp文件,其中包含了上面所有的代码。< /强>我现在甚至不确定它应该是.Cu还是.cp文件?


有人知道怎么做吗?谢谢。

在项目的上下文菜单中,单击
生成自定义设置。打开
CUDA 5.5
目标


.cpp
文件的上下文菜单中,单击
重命名
并将其重命名为
.cu


在您刚刚重命名的
.cu
文件的上下文菜单中,选择
属性
。然后转到
General
,确保
Item Type
设置为
CUDA C/C++

重建


启动新的CUDA项目时,您可以选择
Templates>NVIDIA>CUDA 5.5>CUDA 5.5运行时
,以获得一个不需要任何修改即可编译的项目。

在项目的上下文菜单中,单击
构建自定义设置
。打开
CUDA 5.5
目标


.cpp
文件的上下文菜单中,单击
重命名
并将其重命名为
.cu


在您刚刚重命名的
.cu
文件的上下文菜单中,选择
属性
。然后转到
General
,确保
Item Type
设置为
CUDA C/C++

重建


启动一个新的CUDA项目时,您可以选择
Templates>NVIDIA>CUDA 5.5>CUDA 5.5 Runtime
,以获得一个不需要任何修改就可以编译的项目。

您是否尝试过将文件类型更改为
.cu
?@sgar91:是,它不会更改任何内容。即使我将扩展名改为cu,它仍然在解决方案窗口中显示cpp文件。编译时也会出现同样的错误。您是否尝试将文件类型更改为
.cu
?@sgar91:是,它不会更改任何内容。即使我将扩展名改为cu,它仍然在解决方案窗口中显示cpp文件。编译也会给出同样的错误。是的,第三个建议会有所不同。这么多线程,但没有一个提到使用项目类型CUDAC/C++。谢谢!!是的,第三条建议会有所不同。这么多线程,但没有一个提到使用项目类型CUDAC/C++。谢谢!!
1>------ Rebuild All started: Project: CUDATest001, Configuration: Debug x64 ------
1>  CUDATestZeroZeroOne.cpp
1>CUDATestZeroZeroOne.obj : error LNK2001: unresolved external symbol threadIdx
1>CUDATestZeroZeroOne.obj : error LNK2001: unresolved external symbol blockIdx
1>CUDATestZeroZeroOne.obj : error LNK2001: unresolved external symbol blockDim
1>D:\Projects\CUDATest001\x64\Debug\CUDATest001.exe : fatal error LNK1120: 3 unresolved externals
========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========