大家好,我初学CUDA
运行了网上很有名的例子
可是每次debug,总是一晃而过
也看不到结果是多少啊,应该怎么办呢?
程序如下:
#include <stdio.h>
#include <stdlib.h>
#include <cuda_runtime.h>
#define DATA_SIZE 1048576
int data[DATA_SIZE];
bool InitCUDA()
{
int count;
cudaGetDeviceCount(&count);
if(count == 0) {
fprintf(stderr, “There is no device.\n”);
return false;
}
int i;
for(i = 0; i < count; i++) {
cudaDeviceProp prop;
if(cudaGetDeviceProperties(&prop, i) == cudaSuccess) {
if(prop.major >= 1) {
break;
}
}
}
if(i == count) {
fprintf(stderr, “There is no device supporting CUDA 1.x.\n”);
return false;
}
cudaSetDevice(i);
return true;
}
void GenerateNumbers(int *number, int size)
{
for(int i = 0; i < size; i++) {
number[i] = rand() % 10;
}
}
global static void sumOfSquares(int num, int result)
{
int sum = 0;
int i;
for(i = 0; i < DATA_SIZE; i++) {
sum += num[i] * num[i];
}
*result = sum;
}
int main()
{
if(!InitCUDA()) {
return 0;
}
printf(“CUDA initialized.\n”);
return 0;
GenerateNumbers(data, DATA_SIZE);
int* gpudata, result;
cudaMalloc((void*) &gpudata, sizeof(int) * DATA_SIZE);
cudaMalloc((void**) &result, sizeof(int));
cudaMemcpy(gpudata, data, sizeof(int) * DATA_SIZE,
cudaMemcpyHostToDevice);
sumOfSquares<<<1, 1, 0>>>(gpudata, result);
int sum;
cudaMemcpy(&sum, result, sizeof(int), cudaMemcpyDeviceToHost);
cudaFree(gpudata);
cudaFree(result);
printf(“sum: %d\n”, sum);
}
另外,总是报出如下文字,算是正常吗
“CUDAWinApp2.exe”: 已加载“C:\WINDOWS\system32\setupapi.dll”,未加载任何符号。
“CUDAWinApp2.exe”: 已加载“C:\WINDOWS\system32\version.dll”,未加载任何符号。
“CUDAWinApp2.exe”: 已加载“C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.6028_x-ww_61e65202\comctl32.dll”,未加载任何符号。
“CUDAWinApp2.exe”: 已加载“C:\WINDOWS\system32\comctl32.dll”,未加载任何符号。
线程 ‘Win32 线程’ (0x80c) 已退出,返回值为 0 (0x0)。
CUDAWinApp2.exe 中的 0x7c812afb 处最可能的异常: Microsoft C++ 异常: 内存位置 0x0012fc78 处的 cudaError_enum。
程序“[3732] CUDAWinApp2.exe: 本机”已退出,返回值为 0 (0x0)。
[ 本帖最后由 hanermimi 于 2010-10-27 14:50 编辑 ]