main.cu 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. #include <iostream>
  2. #include "file1.h"
  3. #include "file2.h"
  4. int file4_launch_kernel(int x);
  5. int file5_launch_kernel(int x);
  6. int choose_cuda_device()
  7. {
  8. int nDevices = 0;
  9. cudaError_t err = cudaGetDeviceCount(&nDevices);
  10. if (err != cudaSuccess) {
  11. std::cerr << "Failed to retrieve the number of CUDA enabled devices"
  12. << std::endl;
  13. return 1;
  14. }
  15. for (int i = 0; i < nDevices; ++i) {
  16. cudaDeviceProp prop;
  17. cudaError_t err = cudaGetDeviceProperties(&prop, i);
  18. if (err != cudaSuccess) {
  19. std::cerr << "Could not retrieve properties from CUDA device " << i
  20. << std::endl;
  21. return 1;
  22. }
  23. if (prop.major >= 3) {
  24. err = cudaSetDevice(i);
  25. if (err != cudaSuccess) {
  26. std::cout << "Could not select CUDA device " << i << std::endl;
  27. } else {
  28. return 0;
  29. }
  30. }
  31. }
  32. std::cout << "Could not find a CUDA enabled card supporting compute >=3.0"
  33. << std::endl;
  34. return 1;
  35. }
  36. int main(int argc, char** argv)
  37. {
  38. int ret = choose_cuda_device();
  39. if (ret) {
  40. return 0;
  41. }
  42. cudaError_t err;
  43. file4_launch_kernel(42);
  44. err = cudaGetLastError();
  45. if (err != cudaSuccess) {
  46. std::cerr << "file4_launch_kernel: kernel launch failed: "
  47. << cudaGetErrorString(err) << std::endl;
  48. return 1;
  49. }
  50. file5_launch_kernel(42);
  51. err = cudaGetLastError();
  52. if (err != cudaSuccess) {
  53. std::cerr << "file5_launch_kernel: kernel launch failed: "
  54. << cudaGetErrorString(err) << std::endl;
  55. return 1;
  56. }
  57. return 0;
  58. }