main.cu 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #include <iostream>
  2. #include "cuda.h"
  3. #ifdef _WIN32
  4. # define IMPORT __declspec(dllimport)
  5. #else
  6. # define IMPORT
  7. #endif
  8. IMPORT int launch_kernel(int x);
  9. int choose_cuda_device()
  10. {
  11. int nDevices = 0;
  12. cudaError_t err = cudaGetDeviceCount(&nDevices);
  13. if (err != cudaSuccess) {
  14. std::cerr << "Failed to retrieve the number of CUDA enabled devices"
  15. << std::endl;
  16. return 1;
  17. }
  18. for (int i = 0; i < nDevices; ++i) {
  19. cudaDeviceProp prop;
  20. cudaError_t err = cudaGetDeviceProperties(&prop, i);
  21. if (err != cudaSuccess) {
  22. std::cerr << "Could not retrieve properties from CUDA device " << i
  23. << std::endl;
  24. return 1;
  25. }
  26. std::cout << "prop.major: " << prop.major << std::endl;
  27. err = cudaSetDevice(i);
  28. if (err != cudaSuccess) {
  29. std::cout << "Could not select CUDA device " << i << std::endl;
  30. } else {
  31. return 0;
  32. }
  33. }
  34. std::cout << "Could not find a CUDA enabled card" << std::endl;
  35. return 1;
  36. }
  37. int main()
  38. {
  39. int ret = choose_cuda_device();
  40. if (ret) {
  41. return 0;
  42. }
  43. cudaError_t err;
  44. launch_kernel(1);
  45. err = cudaGetLastError();
  46. if (err != cudaSuccess) {
  47. std::cerr << "launch_kernel: kernel launch should have passed.\n "
  48. "Error message: "
  49. << cudaGetErrorString(err) << std::endl;
  50. return 1;
  51. }
  52. return 0;
  53. }