debug.h 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. /* StarPU --- Runtime system for heterogeneous multicore architectures.
  2. *
  3. * Copyright (C) 2010,2011 University of Bordeaux
  4. *
  5. * StarPU is free software; you can redistribute it and/or modify
  6. * it under the terms of the GNU Lesser General Public License as published by
  7. * the Free Software Foundation; either version 2.1 of the License, or (at
  8. * your option) any later version.
  9. *
  10. * StarPU is distributed in the hope that it will be useful, but
  11. * WITHOUT ANY WARRANTY; without even the implied warranty of
  12. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  13. *
  14. * See the GNU Lesser General Public License in COPYING.LGPL for more details.
  15. */
  16. #ifndef SOCL_DEBUG_H
  17. #define SOCL_DEBUG_H
  18. #ifdef STARPU_VERBOSE
  19. #define DEBUG
  20. #include <stdio.h>
  21. #define DEBUG_MSG(...) do { fprintf(stderr, "[SOCL] [%s] ", __func__); fprintf(stderr, __VA_ARGS__); } while (0);
  22. #define DEBUG_MSG_NOHEAD(...) fprintf(stderr, __VA_ARGS__)
  23. #define DEBUG_ERROR(...) do { fprintf(stderr, "[SOCL] ERROR: "__VA_ARGS__); exit(1); } while (0);
  24. #else
  25. #define DEBUG_MSG(...) while(0);
  26. #define DEBUG_MSG_NOHEAD(...) while(0);
  27. #define DEBUG_ERROR(...) while(0);
  28. #endif
  29. #define ERROR_MSG(...) do { fprintf(stderr, "[SOCL] [%s] ERROR: ", __func__); fprintf(stderr, __VA_ARGS__); } while (0);
  30. #define ERROR_MSG_NOHEAD(...) fprintf(stderr, __VA_ARGS__)
  31. #define ERROR_STOP(...) do { ERROR_MSG(__VA_ARGS__); exit(1); } while(0);
  32. #ifdef STARPU_VERBOSE
  33. void DEBUG_CL(char *s, cl_int err) {
  34. #define ERR_CASE(a) case a: DEBUG_MSG("[OpenCL] %s CL error: %s\n", s, #a); break;
  35. switch(err) {
  36. case CL_SUCCESS:
  37. DEBUG_MSG("[OpenCL] %s SUCCESS.\n", s);
  38. break;
  39. ERR_CASE(CL_DEVICE_NOT_FOUND)
  40. ERR_CASE(CL_DEVICE_NOT_AVAILABLE)
  41. ERR_CASE(CL_COMPILER_NOT_AVAILABLE)
  42. ERR_CASE(CL_MEM_OBJECT_ALLOCATION_FAILURE)
  43. ERR_CASE(CL_OUT_OF_RESOURCES)
  44. ERR_CASE(CL_OUT_OF_HOST_MEMORY)
  45. ERR_CASE(CL_PROFILING_INFO_NOT_AVAILABLE)
  46. ERR_CASE(CL_MEM_COPY_OVERLAP)
  47. ERR_CASE(CL_IMAGE_FORMAT_MISMATCH)
  48. ERR_CASE(CL_IMAGE_FORMAT_NOT_SUPPORTED)
  49. ERR_CASE(CL_BUILD_PROGRAM_FAILURE)
  50. ERR_CASE(CL_MAP_FAILURE)
  51. ERR_CASE(CL_INVALID_VALUE)
  52. ERR_CASE(CL_INVALID_DEVICE_TYPE)
  53. ERR_CASE(CL_INVALID_PLATFORM)
  54. ERR_CASE(CL_INVALID_DEVICE)
  55. ERR_CASE(CL_INVALID_CONTEXT)
  56. ERR_CASE(CL_INVALID_QUEUE_PROPERTIES)
  57. ERR_CASE(CL_INVALID_COMMAND_QUEUE)
  58. ERR_CASE(CL_INVALID_HOST_PTR)
  59. ERR_CASE(CL_INVALID_MEM_OBJECT)
  60. ERR_CASE(CL_INVALID_IMAGE_FORMAT_DESCRIPTOR)
  61. ERR_CASE(CL_INVALID_IMAGE_SIZE)
  62. ERR_CASE(CL_INVALID_SAMPLER)
  63. ERR_CASE(CL_INVALID_BINARY)
  64. ERR_CASE(CL_INVALID_BUILD_OPTIONS)
  65. ERR_CASE(CL_INVALID_PROGRAM)
  66. ERR_CASE(CL_INVALID_PROGRAM_EXECUTABLE)
  67. ERR_CASE(CL_INVALID_KERNEL_NAME)
  68. ERR_CASE(CL_INVALID_KERNEL_DEFINITION)
  69. ERR_CASE(CL_INVALID_KERNEL)
  70. ERR_CASE(CL_INVALID_ARG_INDEX)
  71. ERR_CASE(CL_INVALID_ARG_VALUE)
  72. ERR_CASE(CL_INVALID_ARG_SIZE)
  73. ERR_CASE(CL_INVALID_KERNEL_ARGS)
  74. ERR_CASE(CL_INVALID_WORK_DIMENSION)
  75. ERR_CASE(CL_INVALID_WORK_GROUP_SIZE)
  76. ERR_CASE(CL_INVALID_WORK_ITEM_SIZE)
  77. ERR_CASE(CL_INVALID_GLOBAL_OFFSET)
  78. ERR_CASE(CL_INVALID_EVENT_WAIT_LIST)
  79. ERR_CASE(CL_INVALID_EVENT)
  80. ERR_CASE(CL_INVALID_OPERATION)
  81. ERR_CASE(CL_INVALID_GL_OBJECT)
  82. ERR_CASE(CL_INVALID_BUFFER_SIZE)
  83. ERR_CASE(CL_INVALID_MIP_LEVEL)
  84. ERR_CASE(CL_INVALID_GLOBAL_WORK_SIZE)
  85. default:
  86. DEBUG_MSG("%s CL error: Error message not supported by print_cl_error (%d).\n", s, err);
  87. }
  88. }
  89. #else
  90. #define DEBUG_CL(...) while(0);
  91. #endif
  92. #endif /* SOCL_DEBUG_H */