- #include <stdio.h>
- #include <stdlib.h>
- #include <cuda_runtime.h>
- #define DATA_SIZE 1048576
- int data[DATA_SIZE];
- void GenerateNumbers(int *number, int size)
- {
- for(int i = 0; i < size; i++) {
- number[i] = rand() % 10;
- }
- }
- 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(∝, 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;
- }
- __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");
-
- 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(∑, result, sizeof(int), cudaMemcpyDeviceToHost);
- cudaFree(gpudata);
- cudaFree(result);
- printf("sum: %dn", sum);
-
- sum = 0;
- for(int i = 0; i < DATA_SIZE; i++) {
- sum += data[i] * data[i];
- }
- printf("sum (CPU): %dn", sum);
-
- system("pause");
-
- return 0;
- }
复制代码
就是这个简单的入门程序,在我的 CUDA 2.1 Beta VS2008编译成功并且能够运行,
但是在其他计算机上使用9800GTX+,WindowsVista,显卡驱动版本因为是其他人的电脑不清楚,之前安装过PhysX驱动,安装了CUDA2.0,直接运行我的计算机上面编译好的exe程序失败,提示找不到CUDART.DLL,请问这是怎么回事内?
谢谢大家啦~ |