cl_getdeviceinfo.c 4.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  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. #include "socl.h"
  17. #include "getinfo.h"
  18. /**
  19. * \brief Return dummy infos
  20. */
  21. CL_API_ENTRY cl_int CL_API_CALL
  22. soclGetDeviceInfo(cl_device_id device,
  23. cl_device_info param_name,
  24. size_t param_value_size,
  25. void * param_value,
  26. size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0
  27. {
  28. int i, found=0;
  29. for (i=0; i<socl_device_count; i++) {
  30. if (device == &socl_devices[i]) {
  31. found = 1;
  32. break;
  33. }
  34. }
  35. if (!found)
  36. return CL_INVALID_DEVICE;
  37. switch (param_name) {
  38. INFO_CASE(CL_DEVICE_TYPE, device->type)
  39. INFO_CASE(CL_DEVICE_VENDOR_ID, SOCL_DEVICE_VENDOR_ID)
  40. INFO_CASE(CL_DEVICE_MAX_COMPUTE_UNITS, device->max_compute_units)
  41. INFO_CASE(CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS, device->max_work_item_dimensions)
  42. INFO_CASE(CL_DEVICE_MAX_WORK_ITEM_SIZES, device->max_work_item_sizes)
  43. INFO_CASE(CL_DEVICE_MAX_WORK_GROUP_SIZE, device->max_work_group_size)
  44. INFO_CASE(CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR, device->preferred_vector_widths[0])
  45. INFO_CASE(CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT, device->preferred_vector_widths[1])
  46. INFO_CASE(CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT, device->preferred_vector_widths[2])
  47. INFO_CASE(CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG, device->preferred_vector_widths[3])
  48. INFO_CASE(CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT, device->preferred_vector_widths[4])
  49. INFO_CASE(CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE, device->preferred_vector_widths[5])
  50. INFO_CASE(CL_DEVICE_MAX_CLOCK_FREQUENCY, device->max_clock_frequency)
  51. INFO_CASE(CL_DEVICE_ADDRESS_BITS, device->address_bits)
  52. INFO_CASE(CL_DEVICE_MAX_MEM_ALLOC_SIZE, device->max_mem_alloc_size)
  53. INFO_CASE(CL_DEVICE_IMAGE_SUPPORT, device->image_support)
  54. INFO_CASE(CL_DEVICE_MAX_PARAMETER_SIZE, device->max_parameter_size)
  55. INFO_CASE(CL_DEVICE_MEM_BASE_ADDR_ALIGN, device->mem_base_addr_align)
  56. INFO_CASE(CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE, device->min_data_type_align_size)
  57. INFO_CASE(CL_DEVICE_SINGLE_FP_CONFIG, device->single_fp_config)
  58. INFO_CASE(CL_DEVICE_GLOBAL_MEM_CACHE_TYPE, device->global_mem_cache_type)
  59. INFO_CASE(CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE, device->global_mem_cacheline_size)
  60. INFO_CASE(CL_DEVICE_GLOBAL_MEM_CACHE_SIZE, device->global_mem_cache_size)
  61. INFO_CASE(CL_DEVICE_GLOBAL_MEM_SIZE, device->global_mem_size)
  62. INFO_CASE(CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE, device->max_constant_buffer_size)
  63. INFO_CASE(CL_DEVICE_MAX_CONSTANT_ARGS, device->max_constant_args)
  64. INFO_CASE(CL_DEVICE_LOCAL_MEM_TYPE, device->local_mem_type)
  65. INFO_CASE(CL_DEVICE_LOCAL_MEM_SIZE, device->local_mem_size)
  66. INFO_CASE(CL_DEVICE_ERROR_CORRECTION_SUPPORT, device->error_correction_support)
  67. INFO_CASE(CL_DEVICE_PROFILING_TIMER_RESOLUTION, device->profiling_timer_resolution)
  68. INFO_CASE(CL_DEVICE_ENDIAN_LITTLE, device->endian_little)
  69. INFO_CASE(CL_DEVICE_AVAILABLE, device->available)
  70. INFO_CASE(CL_DEVICE_COMPILER_AVAILABLE, device->compiler_available)
  71. INFO_CASE(CL_DEVICE_EXECUTION_CAPABILITIES, device->execution_capabilities)
  72. INFO_CASE(CL_DEVICE_QUEUE_PROPERTIES, device->queue_properties)
  73. case CL_DEVICE_PLATFORM: {
  74. cl_platform_id p = &socl_platform;
  75. INFO_CASE_EX2(p);
  76. }
  77. INFO_CASE(CL_DEVICE_NAME, device->name)
  78. INFO_CASE(CL_DEVICE_VENDOR, SOCL_VENDOR)
  79. INFO_CASE(CL_DRIVER_VERSION, SOCL_DRIVER_VERSION)
  80. INFO_CASE(CL_DEVICE_PROFILE, SOCL_PROFILE)
  81. INFO_CASE(CL_DEVICE_VERSION, SOCL_VERSION)
  82. INFO_CASE(CL_DEVICE_EXTENSIONS, device->extensions)
  83. default:
  84. return CL_INVALID_VALUE;
  85. }
  86. return CL_SUCCESS;
  87. }