Abstrasy
2.0 (beta)

Premiers essais du module 'OpenCL

J'implémente pour le moment le nouveau module 'OpenCL qui permettra d'utiliser directement cette technologie dans les scripts Abstrasy.

Bien sûr, au moment où j'écris ces lignes, l'implémentation est réduite mais elle fonctionne.

Donc, bien que toujours à l'état embryonnaire, le module 'OpenCL est tout de même assez révélateur des avantages que peut procurer Abstrasy.

En réalité, pour utiliser l'OpenCL, l'interpréteur récupère et charge tout seul l'API JOCL qui est intégrée au paquetage principal Abstrasy. Il n'est donc pas nécessaire d'ajouter soi-même cette bibliothèque au classpath. L'interpréteur s'en occupe et “à chaud”.

Voyez ci-dessous un script d'exemple qui affiche à l'écran les informations du matériel OpenCL disponible. Comme vous pouvez sans doute le constater, le module 'OpenCL n'est pas un simple wrapper de l'API JOCL. Il propose une interface adatée pour le langage. Il profite ainsi de nombreux avantages et d'une grande simplicité.

#
# The MIT License
#
# Copyright © 2013-2015 Luc BRUNINX.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy of this software
# and associated documentation files (the “Software”), to deal in the Software without restriction,
# including without limitation the rights to use, copy, modify, merge, publish, distribute,
# sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all copies or
# substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
# BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 
#
 
(import 'OpenCL)
 
#
# Enumérer toutes les plate-formes OpenCL disponibles sur la machine.
#
(for 'p (iterator OpenCL:Platforms:ALL) {
  # informations de la plate-forme...
  (display "PLATFORM : " p)
  (display "   ID         : " p:ID)
  (display "   NAME       : " p:NAME)
  (display "   VENDOR     : " p:VENDOR)
  (display "   VERSION    : " p:VERSION)
  (display "   PROFILE    : " p:PROFILE)
  (display "   EXTENSIONS : " (raw-string p:EXTENSIONS))
  (for 't (iterator p:EXTENSIONS) {
    (display "                   " t)
  })
 
  (display)
 
  #
  # Enumérer tous les composants matériels disponibles pour cette plate-forme.
  #
  (for 'd (iterator (p:get-all-devices)) {
    # informations du matériel...
    (display "   DEVICE : " d)
    (display "      ID                            : " d:ID)
    (display "      NAME                          : " d:NAME)
    (display "      VENDOR                        : " d:VENDOR)
    (display "      VENDOR_ID                     : " (hex-string d:VENDOR_ID))
    (display "      VERSION                       : " d:VERSION)
    (display "      DRIVER_VERSION                : " d:DRIVER_VERSION)
    (display "      OPENCL_C_VERSION              : " d:OPENCL_C_VERSION)
    (display "      DEVICE_TYPE                   : " (hex-string d:DEVICE_TYPE))
    (display "      DEVICE_TYPE_SET               : " (raw-string d:DEVICE_TYPE_SET))
    (for 't (iterator d:DEVICE_TYPE_SET) {
      (display "                                         " t)
    })
    (display "      PROFILE                       : " d:PROFILE)
    (display "      EXTENSIONS                    : " (raw-string d:EXTENSIONS))
    (for 'ext (iterator d:EXTENSIONS) {
      (display "                                         " ext)
    })
    (display "      MAX_COMPUTE_UNITS             : " d:MAX_COMPUTE_UNITS)    
    (display "      MAX_WORK_ITEM_DIMENSIONS      : " d:MAX_WORK_ITEM_DIMENSIONS)
    (display "      MAX_WORK_ITEM_SIZES           : " d:MAX_WORK_ITEM_SIZES)
    (display "      MAX_WORK_GROUP_SIZE           : " d:MAX_WORK_GROUP_SIZE)
    (display "      MAX_CLOCK_FREQUENCY           : " d:MAX_CLOCK_FREQUENCY)
    (display "      ADDRESS_BITS                  : " d:ADDRESS_BITS)
    (display "      PREFERRED_VECTOR_WIDTH_CHAR   : " d:PREFERRED_VECTOR_WIDTH_CHAR)
    (display "      PREFERRED_VECTOR_WIDTH_SHORT  : " d:PREFERRED_VECTOR_WIDTH_SHORT)
    (display "      PREFERRED_VECTOR_WIDTH_INT    : " d:PREFERRED_VECTOR_WIDTH_INT)
    (display "      PREFERRED_VECTOR_WIDTH_LONG   : " d:PREFERRED_VECTOR_WIDTH_LONG)
    (display "      PREFERRED_VECTOR_WIDTH_HALF   : " d:PREFERRED_VECTOR_WIDTH_HALF)
    (display "      PREFERRED_VECTOR_WIDTH_FLOAT  : " d:PREFERRED_VECTOR_WIDTH_FLOAT)
    (display "      PREFERRED_VECTOR_WIDTH_DOUBLE : " d:PREFERRED_VECTOR_WIDTH_DOUBLE)
    (display "      NATIVE_VECTOR_WIDTH_CHAR      : " d:NATIVE_VECTOR_WIDTH_CHAR)
    (display "      NATIVE_VECTOR_WIDTH_SHORT     : " d:NATIVE_VECTOR_WIDTH_SHORT)
    (display "      NATIVE_VECTOR_WIDTH_INT       : " d:NATIVE_VECTOR_WIDTH_INT)
    (display "      NATIVE_VECTOR_WIDTH_LONG      : " d:NATIVE_VECTOR_WIDTH_LONG)
    (display "      NATIVE_VECTOR_WIDTH_HALF      : " d:NATIVE_VECTOR_WIDTH_HALF)
    (display "      NATIVE_VECTOR_WIDTH_FLOAT     : " d:NATIVE_VECTOR_WIDTH_FLOAT)
    (display "      NATIVE_VECTOR_WIDTH_DOUBLE    : " d:NATIVE_VECTOR_WIDTH_DOUBLE)
    (display "      MAX_MEM_ALLOC_SIZE            : " d:MAX_MEM_ALLOC_SIZE)
    (display "      IMAGE_SUPPORT                 : " d:IMAGE_SUPPORT)
    (display "      MAX_READ_IMAGE_ARGS           : " d:MAX_READ_IMAGE_ARGS)
    (display "      MAX_WRITE_IMAGE_ARGS          : " d:MAX_WRITE_IMAGE_ARGS)
    (display "      IMAGE2D_MAX_WIDTH             : " d:IMAGE2D_MAX_WIDTH)
    (display "      IMAGE2D_MAX_HEIGHT            : " d:IMAGE2D_MAX_HEIGHT)
    (display "      IMAGE3D_MAX_WIDTH             : " d:IMAGE3D_MAX_WIDTH)
    (display "      IMAGE3D_MAX_HEIGHT            : " d:IMAGE3D_MAX_HEIGHT)
    (display "      IMAGE3D_MAX_DEPTH             : " d:IMAGE3D_MAX_DEPTH)
    (display "      MAX_SAMPLERS                  : " d:MAX_SAMPLERS)
    (display "      MAX_PARAMETER_SIZE            : " d:MAX_PARAMETER_SIZE)
    (display "      MEM_BASE_ADDR_ALIGN           : " d:MEM_BASE_ADDR_ALIGN)
    (display "      MIN_DATA_TYPE_ALIGN_SIZE      : " d:MIN_DATA_TYPE_ALIGN_SIZE)
    (display "      SINGLE_FP_CONFIG              : " d:SINGLE_FP_CONFIG)
    (display "      SINGLE_FP_CONFIG_SET          : " (raw-string d:SINGLE_FP_CONFIG_SET))
    (for 't (iterator d:SINGLE_FP_CONFIG_SET) {
      (display "                                         " t)
    })
    (display "      GLOBAL_MEM_CACHE_TYPE         : " d:GLOBAL_MEM_CACHE_TYPE)
    (display "      GLOBAL_MEM_CACHE_TYPE_SET     : " (raw-string d:GLOBAL_MEM_CACHE_TYPE_SET))
    (for 't (iterator d:GLOBAL_MEM_CACHE_TYPE_SET) {
      (display "                                         " t)
    })
    (display "      GLOBAL_MEM_CACHELINE_SIZE     : " d:GLOBAL_MEM_CACHELINE_SIZE)
    (display "      GLOBAL_MEM_CACHE_SIZE         : " d:GLOBAL_MEM_CACHE_SIZE)
    (display "      LOCAL_MEM_TYPE                : " d:LOCAL_MEM_TYPE)
    (display "      LOCAL_MEM_TYPE_SET            : " (raw-string d:LOCAL_MEM_TYPE_SET))
    (for 't (iterator d:LOCAL_MEM_TYPE_SET) {
      (display "                                         " t)
    })
    (display "      LOCAL_MEM_SIZE                : " d:LOCAL_MEM_SIZE)
    (display "      ERROR_CORRECTION_SUPPORT      : " d:ERROR_CORRECTION_SUPPORT)
    (display "      HOST_UNIFIED_MEMORY           : " d:HOST_UNIFIED_MEMORY)
    (display "      PROFILING_TIMER_RESOLUTION    : " d:PROFILING_TIMER_RESOLUTION)
    (display "      ENDIAN_LITTLE                 : " d:ENDIAN_LITTLE)
    (display "      AVAILABLE                     : " d:AVAILABLE)
    (display "      COMPILER_AVAILABLE            : " d:COMPILER_AVAILABLE)
    (display "      EXECUTION_CAPABILITIES        : " d:EXECUTION_CAPABILITIES)
    (display "      EXECUTION_CAPABILITIES_SET    : " (raw-string d:EXECUTION_CAPABILITIES_SET))
    (for 't (iterator d:EXECUTION_CAPABILITIES_SET) {
      (display "                                         " t)
    })
    (display "      QUEUE_PROPERTIES              : " d:QUEUE_PROPERTIES)
    (display "      QUEUE_PROPERTIES_SET          : " (raw-string d:QUEUE_PROPERTIES_SET))
    (for 't (iterator d:QUEUE_PROPERTIES_SET) {
      (display "                                         " t)
    })
    (display "      PLATFORM                      : " d:PLATFORM)
 
    (display)
 
  })
 
  (display)
 
})

Sur ma machine, je dispose d'une carte NVIDIA QUADRO K5000 et le script ci-dessus donne ceci comme résultat:

PLATFORM : NVIDIA CUDA : NVIDIA Corporation : OpenCL 1.1 CUDA 6.0.1
   ID         : cl_platform_id[0x7f514c0a9600]
   NAME       : NVIDIA CUDA
   VENDOR     : NVIDIA Corporation
   VERSION    : OpenCL 1.1 CUDA 6.0.1
   PROFILE    : FULL_PROFILE
   EXTENSIONS : (finite-set #|0x31D1A84F|#)
                   cl_khr_icd
                   cl_nv_pragma_unroll
                   cl_nv_device_attribute_query
                   cl_nv_compiler_options
                   cl_khr_gl_sharing
                   cl_khr_byte_addressable_store

   DEVICE : Quadro K5000 : NVIDIA Corporation : OpenCL 1.1 CUDA
      ID                            : cl_device_id[0x7f514c2428d0]
      NAME                          : Quadro K5000
      VENDOR                        : NVIDIA Corporation
      VENDOR_ID                     : 0x10DEL
      VERSION                       : OpenCL 1.1 CUDA
      DRIVER_VERSION                : 331.38
      OPENCL_C_VERSION              : OpenCL C 1.1 
      DEVICE_TYPE                   : 0x4L
      DEVICE_TYPE_SET               : (finite-set #|0x2D6B2D61|#)
                                         '@!GPU
      PROFILE                       : FULL_PROFILE
      EXTENSIONS                    : (finite-set #|0x33E61296|#)
                                         cl_khr_global_int32_extended_atomics
                                         cl_khr_icd
                                         cl_nv_pragma_unroll
                                         cl_khr_global_int32_base_atomics
                                         cl_khr_fp64
                                         cl_nv_device_attribute_query
                                         cl_nv_compiler_options
                                         cl_khr_local_int32_extended_atomics
                                         cl_khr_gl_sharing
                                         cl_khr_byte_addressable_store
                                         cl_khr_local_int32_base_atomics
      MAX_COMPUTE_UNITS             : 8
      MAX_WORK_ITEM_DIMENSIONS      : 3L
      MAX_WORK_ITEM_SIZES           : (long-ints 1024L 1024L 64L)
      MAX_WORK_GROUP_SIZE           : 1024L
      MAX_CLOCK_FREQUENCY           : 705L
      ADDRESS_BITS                  : 32
      PREFERRED_VECTOR_WIDTH_CHAR   : 1
      PREFERRED_VECTOR_WIDTH_SHORT  : 1
      PREFERRED_VECTOR_WIDTH_INT    : 1
      PREFERRED_VECTOR_WIDTH_LONG   : 1
      PREFERRED_VECTOR_WIDTH_HALF   : 0
      PREFERRED_VECTOR_WIDTH_FLOAT  : 1
      PREFERRED_VECTOR_WIDTH_DOUBLE : 1
      NATIVE_VECTOR_WIDTH_CHAR      : 1
      NATIVE_VECTOR_WIDTH_SHORT     : 1
      NATIVE_VECTOR_WIDTH_INT       : 1
      NATIVE_VECTOR_WIDTH_LONG      : 1
      NATIVE_VECTOR_WIDTH_HALF      : 0
      NATIVE_VECTOR_WIDTH_FLOAT     : 1
      NATIVE_VECTOR_WIDTH_DOUBLE    : 1
      MAX_MEM_ALLOC_SIZE            : 1073561600L
      IMAGE_SUPPORT                 : (true)
      MAX_READ_IMAGE_ARGS           : 256
      MAX_WRITE_IMAGE_ARGS          : 16
      IMAGE2D_MAX_WIDTH             : 32768L
      IMAGE2D_MAX_HEIGHT            : 32768L
      IMAGE3D_MAX_WIDTH             : 4096L
      IMAGE3D_MAX_HEIGHT            : 4096L
      IMAGE3D_MAX_DEPTH             : 4096L
      MAX_SAMPLERS                  : 32
      MAX_PARAMETER_SIZE            : 4352L
      MEM_BASE_ADDR_ALIGN           : 4096
      MIN_DATA_TYPE_ALIGN_SIZE      : 128
      SINGLE_FP_CONFIG              : 63L
      SINGLE_FP_CONFIG_SET          : (finite-set #|0x25E4BCCE|#)
                                         '@!FP_ROUND_TO_INF
                                         '@!FP_INF_NAN
                                         '@!FP_ROUND_TO_ZERO
                                         '@!FP_FMA
                                         '@!FP_DENORM
                                         '@!FP_ROUND_TO_NEAREST
      GLOBAL_MEM_CACHE_TYPE         : 2L
      GLOBAL_MEM_CACHE_TYPE_SET     : (finite-set #|0x69583587|#)
                                         '@!READ_WRITE_CACHE
      GLOBAL_MEM_CACHELINE_SIZE     : 128
      GLOBAL_MEM_CACHE_SIZE         : 131072L
      LOCAL_MEM_TYPE                : 1L
      LOCAL_MEM_TYPE_SET            : (finite-set #|0x1D2C0DE8|#)
                                         '@!LOCAL
      LOCAL_MEM_SIZE                : 49152L
      ERROR_CORRECTION_SUPPORT      : (false)
      HOST_UNIFIED_MEMORY           : (false)
      PROFILING_TIMER_RESOLUTION    : 0
      ENDIAN_LITTLE                 : (true)
      AVAILABLE                     : (true)
      COMPILER_AVAILABLE            : (true)
      EXECUTION_CAPABILITIES        : 1L
      EXECUTION_CAPABILITIES_SET    : (finite-set #|0x1EDDCE79|#)
                                         '@!EXEC_KERNEL
      QUEUE_PROPERTIES              : 3L
      QUEUE_PROPERTIES_SET          : (finite-set #|0x1E5F03A0|#)
                                         '@!QUEUE_PROFILING_ENABLE
                                         '@!QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE
      PLATFORM                      : NVIDIA CUDA : NVIDIA Corporation : OpenCL 1.1 CUDA 6.0.1


Ready...

A première vue, ce résulat peut étonner. Mais, il est correcte. L'interface OpenCL NVIDIA ne présente pas les CUDA cores, mais les SMX. Du coup, les informations ci-dessus sont plus évidentes. La carte NVIDIA QUADRO K5000 possède bien 8 SMX (et chacun contient 192 unités de calculs - les CUDA cores).

A titre indicatif, voici le résultat obtenu sur un iMac. Ici, le script énumère chaque équipement matériel (devices) GPU et CPU :

PLATFORM : Apple : Apple : OpenCL 1.2 (Apr 25 2014 22:04:25)
   ID         : cl_platform_id[0x7fff0000]
   NAME       : Apple
   VENDOR     : Apple
   VERSION    : OpenCL 1.2 (Apr 25 2014 22:04:25)
   PROFILE    : FULL_PROFILE
   EXTENSIONS : (finite-set #|0x5F4D17BF|#)
                   cl_APPLE_clut
                   cl_APPLE_query_kernel_names
                   cl_khr_gl_event
                   cl_APPLE_ContextLoggingFunctions
                   cl_APPLE_SetMemObjectDestructor
                   cl_APPLE_gl_sharing

   DEVICE : Intel(R) Core(TM) i5-4570R CPU @ 2.70GHz : Intel : OpenCL 1.2 
      ID                            : cl_device_id[0xffffffff]
      NAME                          : Intel(R) Core(TM) i5-4570R CPU @ 2.70GHz
      VENDOR                        : Intel
      VENDOR_ID                     : 0xFFFFFFFFL
      VERSION                       : OpenCL 1.2 
      DRIVER_VERSION                : 1.1
      OPENCL_C_VERSION              : OpenCL C 1.2 
      DEVICE_TYPE                   : 0x2L
      DEVICE_TYPE_SET               : (finite-set #|0x50554A86|#)
                                         '@!CPU
      PROFILE                       : FULL_PROFILE
      EXTENSIONS                    : (finite-set #|0x43150316|#)
                                         cl_APPLE_clut
                                         cl_khr_global_int32_base_atomics
                                         cl_khr_fp64
                                         cl_APPLE_biased_fixed_point_image_formats
                                         cl_khr_gl_event
                                         cl_khr_3d_image_writes
                                         cl_APPLE_ContextLoggingFunctions
                                         cl_khr_int64_base_atomics
                                         cl_khr_image2d_from_buffer
                                         cl_APPLE_SetMemObjectDestructor
                                         cl_khr_byte_addressable_store
                                         cl_APPLE_gl_sharing
                                         cl_khr_global_int32_extended_atomics
                                         cl_APPLE_query_kernel_names
                                         cl_APPLE_command_queue_priority
                                         cl_APPLE_fp64_basic_ops
                                         cl_khr_int64_extended_atomics
                                         cl_khr_local_int32_extended_atomics
                                         cl_APPLE_fixed_alpha_channel_orders
                                         cl_khr_local_int32_base_atomics
      MAX_COMPUTE_UNITS             : 4
      MAX_WORK_ITEM_DIMENSIONS      : 3L
      MAX_WORK_ITEM_SIZES           : (long-ints 1024L 1L 1L)
      MAX_WORK_GROUP_SIZE           : 1024L
      MAX_CLOCK_FREQUENCY           : 2700L
      ADDRESS_BITS                  : 64
      PREFERRED_VECTOR_WIDTH_CHAR   : 16
      PREFERRED_VECTOR_WIDTH_SHORT  : 8
      PREFERRED_VECTOR_WIDTH_INT    : 4
      PREFERRED_VECTOR_WIDTH_LONG   : 2
      PREFERRED_VECTOR_WIDTH_HALF   : 0
      PREFERRED_VECTOR_WIDTH_FLOAT  : 4
      PREFERRED_VECTOR_WIDTH_DOUBLE : 2
      NATIVE_VECTOR_WIDTH_CHAR      : 16
      NATIVE_VECTOR_WIDTH_SHORT     : 8
      NATIVE_VECTOR_WIDTH_INT       : 4
      NATIVE_VECTOR_WIDTH_LONG      : 2
      NATIVE_VECTOR_WIDTH_HALF      : 0
      NATIVE_VECTOR_WIDTH_FLOAT     : 4
      NATIVE_VECTOR_WIDTH_DOUBLE    : 2
      MAX_MEM_ALLOC_SIZE            : 2147483648L
      IMAGE_SUPPORT                 : (true)
      MAX_READ_IMAGE_ARGS           : 128
      MAX_WRITE_IMAGE_ARGS          : 8
      IMAGE2D_MAX_WIDTH             : 8192L
      IMAGE2D_MAX_HEIGHT            : 8192L
      IMAGE3D_MAX_WIDTH             : 2048L
      IMAGE3D_MAX_HEIGHT            : 2048L
      IMAGE3D_MAX_DEPTH             : 2048L
      MAX_SAMPLERS                  : 16
      MAX_PARAMETER_SIZE            : 4096L
      MEM_BASE_ADDR_ALIGN           : 1024
      MIN_DATA_TYPE_ALIGN_SIZE      : 128
      SINGLE_FP_CONFIG              : 191L
      SINGLE_FP_CONFIG_SET          : (finite-set #|0x0CA386CB|#)
                                         '@!FP_ROUND_TO_INF
                                         '@!FP_FMA
                                         '@!FP_ROUND_TO_ZERO
                                         '@!FP_INF_NAN
                                         '@!FP_DENORM
                                         '@!FP_ROUND_TO_NEAREST
      GLOBAL_MEM_CACHE_TYPE         : 2L
      GLOBAL_MEM_CACHE_TYPE_SET     : (finite-set #|0x5A67FF8B|#)
                                         '@!READ_WRITE_CACHE
      GLOBAL_MEM_CACHELINE_SIZE     : 4194304
      GLOBAL_MEM_CACHE_SIZE         : 64L
      LOCAL_MEM_TYPE                : 2L
      LOCAL_MEM_TYPE_SET            : (finite-set #|0x201C8F3B|#)
                                         '@!GLOBAL
      LOCAL_MEM_SIZE                : 32768L
      ERROR_CORRECTION_SUPPORT      : (false)
      HOST_UNIFIED_MEMORY           : (true)
      PROFILING_TIMER_RESOLUTION    : 0
      ENDIAN_LITTLE                 : (true)
      AVAILABLE                     : (true)
      COMPILER_AVAILABLE            : (true)
      EXECUTION_CAPABILITIES        : 3L
      EXECUTION_CAPABILITIES_SET    : (finite-set #|0x4BFA359D|#)
                                         '@!EXEC_KERNEL
                                         '@!EXEC_NATIVE_KERNEL
      QUEUE_PROPERTIES              : 2L
      QUEUE_PROPERTIES_SET          : (finite-set #|0x5BFF67F7|#)
                                         '@!QUEUE_PROFILING_ENABLE
      PLATFORM                      : Apple : Apple : OpenCL 1.2 (Apr 25 2014 22:04:25)

   DEVICE : Iris Pro : Intel : OpenCL 1.2 
      ID                            : cl_device_id[0x1024500]
      NAME                          : Iris Pro
      VENDOR                        : Intel
      VENDOR_ID                     : 0x1024500L
      VERSION                       : OpenCL 1.2 
      DRIVER_VERSION                : 1.2(Jun  9 2014 13:24:19)
      OPENCL_C_VERSION              : OpenCL C 1.2 
      DEVICE_TYPE                   : 0x4L
      DEVICE_TYPE_SET               : (finite-set #|0x3E0150A4|#)
                                         '@!GPU
      PROFILE                       : FULL_PROFILE
      EXTENSIONS                    : (finite-set #|0x7AA06508|#)
                                         cl_APPLE_clut
                                         cl_khr_gl_depth_images
                                         cl_khr_global_int32_base_atomics
                                         cl_khr_gl_event
                                         cl_khr_depth_images
                                         cl_APPLE_ContextLoggingFunctions
                                         cl_khr_image2d_from_buffer
                                         cl_APPLE_SetMemObjectDestructor
                                         cl_khr_byte_addressable_store
                                         cl_APPLE_gl_sharing
                                         cl_khr_global_int32_extended_atomics
                                         cl_APPLE_query_kernel_names
                                         cl_khr_local_int32_extended_atomics
                                         cl_khr_local_int32_base_atomics
      MAX_COMPUTE_UNITS             : 280
      MAX_WORK_ITEM_DIMENSIONS      : 3L
      MAX_WORK_ITEM_SIZES           : (long-ints 512L 512L 512L)
      MAX_WORK_GROUP_SIZE           : 512L
      MAX_CLOCK_FREQUENCY           : 1200L
      ADDRESS_BITS                  : 64
      PREFERRED_VECTOR_WIDTH_CHAR   : 1
      PREFERRED_VECTOR_WIDTH_SHORT  : 1
      PREFERRED_VECTOR_WIDTH_INT    : 1
      PREFERRED_VECTOR_WIDTH_LONG   : 1
      PREFERRED_VECTOR_WIDTH_HALF   : 0
      PREFERRED_VECTOR_WIDTH_FLOAT  : 1
      PREFERRED_VECTOR_WIDTH_DOUBLE : 0
      NATIVE_VECTOR_WIDTH_CHAR      : 1
      NATIVE_VECTOR_WIDTH_SHORT     : 1
      NATIVE_VECTOR_WIDTH_INT       : 1
      NATIVE_VECTOR_WIDTH_LONG      : 1
      NATIVE_VECTOR_WIDTH_HALF      : 0
      NATIVE_VECTOR_WIDTH_FLOAT     : 1
      NATIVE_VECTOR_WIDTH_DOUBLE    : 0
      MAX_MEM_ALLOC_SIZE            : 402653184L
      IMAGE_SUPPORT                 : (true)
      MAX_READ_IMAGE_ARGS           : 128
      MAX_WRITE_IMAGE_ARGS          : 8
      IMAGE2D_MAX_WIDTH             : 16384L
      IMAGE2D_MAX_HEIGHT            : 16384L
      IMAGE3D_MAX_WIDTH             : 2048L
      IMAGE3D_MAX_HEIGHT            : 2048L
      IMAGE3D_MAX_DEPTH             : 2048L
      MAX_SAMPLERS                  : 16
      MAX_PARAMETER_SIZE            : 1024L
      MEM_BASE_ADDR_ALIGN           : 1024
      MIN_DATA_TYPE_ALIGN_SIZE      : 128
      SINGLE_FP_CONFIG              : 30L
      SINGLE_FP_CONFIG_SET          : (finite-set #|0x60ECF11C|#)
                                         '@!FP_ROUND_TO_INF
                                         '@!FP_ROUND_TO_ZERO
                                         '@!FP_INF_NAN
                                         '@!FP_ROUND_TO_NEAREST
      GLOBAL_MEM_CACHE_TYPE         : 0L
      GLOBAL_MEM_CACHE_TYPE_SET     : (finite-set #|0x408CF229|#)
                                         '@!NONE
      GLOBAL_MEM_CACHELINE_SIZE     : 0
      GLOBAL_MEM_CACHE_SIZE         : 0L
      LOCAL_MEM_TYPE                : 1L
      LOCAL_MEM_TYPE_SET            : (finite-set #|0x743C0EEC|#)
                                         '@!LOCAL
      LOCAL_MEM_SIZE                : 65536L
      ERROR_CORRECTION_SUPPORT      : (false)
      HOST_UNIFIED_MEMORY           : (true)
      PROFILING_TIMER_RESOLUTION    : 0
      ENDIAN_LITTLE                 : (true)
      AVAILABLE                     : (true)
      COMPILER_AVAILABLE            : (true)
      EXECUTION_CAPABILITIES        : 1L
      EXECUTION_CAPABILITIES_SET    : (finite-set #|0x0D4DAD46|#)
                                         '@!EXEC_KERNEL
      QUEUE_PROPERTIES              : 2L
      QUEUE_PROPERTIES_SET          : (finite-set #|0x5BFF67F7|#)
                                         '@!QUEUE_PROFILING_ENABLE
      PLATFORM                      : Apple : Apple : OpenCL 1.2 (Apr 25 2014 22:04:25)


Ready...
articles/premiers_essais_du_module_opencl.txt · Dernière modification: 2014/07/19 21:21 (modification externe)

Retour
Table des matires

 

     
Licence Creative Commons
   Get abstrasy at SourceForge.net. Fast, secure and Free Open Source software downloads