POPPUR爱换

 找回密码
 注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

搜索
查看: 6520|回复: 6
打印 上一主题 下一主题

CUDA:在其他电脑上运行提示缺少CUDART.DLL而不能运行

[复制链接]
跳转到指定楼层
1#
发表于 2008-12-5 00:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <cuda_runtime.h>
  4. #define DATA_SIZE 1048576

  5. int data[DATA_SIZE];

  6. void GenerateNumbers(int *number, int size)
  7. {
  8.     for(int i = 0; i < size; i++) {
  9.         number[i] = rand() % 10;
  10.     }
  11. }


  12. bool InitCUDA()
  13. {
  14.     int count;

  15.     cudaGetDeviceCount(&count);
  16.     if(count == 0) {
  17.         fprintf(stderr, "There is no device.n");
  18.         return false;
  19.     }

  20.     int i;
  21.     for(i = 0; i < count; i++) {
  22.         cudaDeviceProp prop;
  23.         if(cudaGetDeviceProperties(∝, i) == cudaSuccess) {
  24.             if(prop.major >= 1) {
  25.                 break;
  26.             }
  27.         }
  28.     }

  29.     if(i == count) {
  30.         fprintf(stderr, "There is no device supporting CUDA 1.x.n");
  31.         return false;
  32.     }

  33.     cudaSetDevice(i);

  34.     return true;
  35. }

  36. __global__ static void sumOfSquares(int *num, int* result)
  37. {
  38.     int sum = 0;
  39.     int i;
  40.     for(i = 0; i < DATA_SIZE; i++) {
  41.         sum += num[i] * num[i];
  42.     }

  43.     *result = sum;
  44. }


  45. int main()
  46. {
  47.     if(!InitCUDA()) {
  48.         return 0;
  49.     }

  50.     printf("CUDA initialized.n");
  51.    
  52.      GenerateNumbers(data, DATA_SIZE);

  53.     int* gpudata, *result;
  54.     cudaMalloc((void**) &gpudata, sizeof(int) * DATA_SIZE);
  55.     cudaMalloc((void**) &result, sizeof(int));
  56.     cudaMemcpy(gpudata, data, sizeof(int) * DATA_SIZE,
  57.         cudaMemcpyHostToDevice);
  58.         
  59.             sumOfSquares<<<1, 1, 0>>>(gpudata, result);

  60.     int sum;
  61.     cudaMemcpy(∑, result, sizeof(int), cudaMemcpyDeviceToHost);
  62.     cudaFree(gpudata);
  63.     cudaFree(result);

  64.     printf("sum: %dn", sum);
  65.    
  66.    sum = 0;
  67.     for(int i = 0; i < DATA_SIZE; i++) {
  68.         sum += data[i] * data[i];
  69.     }
  70.     printf("sum (CPU): %dn", sum);


  71.    
  72.     system("pause");
  73.    
  74.     return 0;
  75. }
复制代码


就是这个简单的入门程序,在我的 CUDA 2.1 Beta VS2008编译成功并且能够运行,

但是在其他计算机上使用9800GTX+,WindowsVista,显卡驱动版本因为是其他人的电脑不清楚,之前安装过PhysX驱动,安装了CUDA2.0,直接运行我的计算机上面编译好的exe程序失败,提示找不到CUDART.DLL,请问这是怎么回事内?
  
  
谢谢大家啦~
2#
 楼主| 发表于 2008-12-5 00:09 | 只看该作者
问题补充:Visual Stdio 2008环境配置是直接安装CUDA_VS_Wizard  x32 2.0beta而配置的,
然后直接在VS2008里面新建CUDA工程而开始制作的,期间没有动过任何其他环境配置。
回复 支持 反对

使用道具 举报

3#
 楼主| 发表于 2008-12-5 13:32 | 只看该作者
现在已经好啦,cudart.dll一起弄过去就好啦,谢谢诸位。
回复 支持 反对

使用道具 举报

4#
发表于 2008-12-5 13:40 | 只看该作者
和你编译的模式有关吧,你选择的是驱动模式还是 kernel 模式?
回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 2008-12-5 23:14 | 只看该作者
kernel 模式,经过请教Mr.OpenHero先生,发现要那个dll一起发布才行.

谢谢啦~
回复 支持 反对

使用道具 举报

6#
发表于 2008-12-5 23:33 | 只看该作者
哇,终于看到做CUDA的大大了,那我也来问下,我做的PhysX的程序在非NVIDIA显卡的系统上提示找不到nvcuda.dll,拷了一个nvcuda.dll进去也不行(非法操作),难道PhysX是NV专用的吗?我记得PhysX可以软件模拟啊{mellow:]
回复 支持 反对

使用道具 举报

7#
 楼主| 发表于 2008-12-6 18:18 | 只看该作者
原帖由 bird11530000 于 2008-12-5 23:33 发表
哇,终于看到做CUDA的大大了,那我也来问下,我做的PhysX的程序在非NVIDIA显卡的系统上提示找不到nvcuda.dll,拷了一个nvcuda.dll进去也不行(非法操作),难道PhysX是NV专用的吗?我记得PhysX可以软件模拟啊{mellow ...


額,這種問題還是去CSDN看看,那里面牛人比較多.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

广告投放或合作|网站地图|处罚通告|

GMT+8, 2024-11-2 13:22

Powered by Discuz! X3.4

© 2001-2017 POPPUR.

快速回复 返回顶部 返回列表