UNPKG

nodecl

Version:

An implementation of the JavaScript bindings for OpenCL

466 lines (463 loc) 16.3 kB
/* * nodecl - An implementation of the JavaScript bindings for OpenCL. * https://github.com/jiahansu/nodecl * * Copyright (c) 2013-2013, Jia-Han Su (https://github.com/jiahansu) * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Jia-Han Su nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY JIA-HAN SU AND CONTRIBUTORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ var my = require("myclass"), bridjs = require("bridjs"), Signature = bridjs.Signature, ImageDesc, BufferRegion, NodeCLException = require("./nodecl_exception"), Type = require("./cl_type"); module.exports = my.Class({ STATIC: { getVersion: function() { return 0; } }, Type: Type, SUCCESS: 0, DEVICE_NOT_FOUND: -1, DEVICE_NOT_AVAILABLE: -2, COMPILER_NOT_AVAILABLE: -3, MEM_OBJECT_ALLOCATION_FAILURE: -4, OUT_OF_RESOURCES: -5, OUT_OF_HOST_MEMORY: -6, PROFILING_INFO_NOT_AVAILABLE: -7, MEM_COPY_OVERLAP: -8, IMAGE_FORMAT_MISMATCH: -9, IMAGE_FORMAT_NOT_SUPPORTED: -10, BUILD_PROGRAM_FAILURE: -11, MAP_FAILURE: -12, MISALIGNED_SUB_BUFFER_OFFSET: -13, EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST: -14, COMPILE_PROGRAM_FAILURE: -15, LINKER_NOT_AVAILABLE: -16, LINK_PROGRAM_FAILURE: -17, DEVICE_PARTITION_FAILED: -18, KERNEL_ARG_INFO_NOT_AVAILABLE: -19, INVALID_VALUE: -30, INVALID_DEVICE_TYPE: -31, INVALID_PLATFORM: -32, INVALID_DEVICE: -33, INVALID_CONTEXT: -34, INVALID_QUEUE_PROPERTIES: -35, INVALID_COMMAND_QUEUE: -36, INVALID_HOST_PTR: -37, INVALID_MEM_OBJECT: -38, INVALID_IMAGE_FORMAT_DESCRIPTOR: -39, INVALID_IMAGE_SIZE: -40, INVALID_SAMPLER: -41, INVALID_BINARY: -42, INVALID_BUILD_OPTIONS: -43, INVALID_PROGRAM: -44, INVALID_PROGRAM_EXECUTABLE: -45, INVALID_KERNEL_NAME: -46, INVALID_KERNEL_DEFINITION: -47, INVALID_KERNEL: -48, INVALID_ARG_INDEX: -49, INVALID_ARG_VALUE: -50, INVALID_ARG_SIZE: -51, INVALID_KERNEL_ARGS: -52, INVALID_WORK_DIMENSION: -53, INVALID_WORK_GROUP_SIZE: -54, INVALID_WORK_ITEM_SIZE: -55, INVALID_GLOBAL_OFFSET: -56, INVALID_EVENT_WAIT_LIST: -57, INVALID_EVENT: -58, INVALID_OPERATION: -59, INVALID_GL_OBJECT: -60, INVALID_BUFFER_SIZE: -61, INVALID_MIP_LEVEL: -62, INVALID_GLOBAL_WORK_SIZE: -63, INVALID_PROPERTY: -64, INVALID_IMAGE_DESCRIPTOR: -65, INVALID_COMPILER_OPTIONS: -66, INVALID_LINKER_OPTIONS: -67, INVALID_DEVICE_PARTITION_COUNT: -68, /* OpenCL Version */ VERSION_1_0: 1, VERSION_1_1: 1, VERSION_1_2: 1, /* cl_bool */ FALSE: 0, TRUE: 1, BLOCKING: 1, NON_BLOCKING: 0, /* cl_platform_info */ PLATFORM_PROFILE: 0x0900, PLATFORM_VERSION: 0x0901, PLATFORM_NAME: 0x0902, PLATFORM_VENDOR: 0x0903, PLATFORM_EXTENSIONS: 0x0904, /* cl_device_type - bitfield */ DEVICE_TYPE_DEFAULT: (1 << 0), DEVICE_TYPE_CPU: (1 << 1), DEVICE_TYPE_GPU: (1 << 2), DEVICE_TYPE_ACCELERATOR: (1 << 3), DEVICE_TYPE_CUSTOM: (1 << 4), DEVICE_TYPE_ALL: 0xFFFFFFFF, /* cl_device_info */ DEVICE_TYPE: 0x1000, DEVICE_VENDOR_ID: 0x1001, DEVICE_MAX_COMPUTE_UNITS: 0x1002, DEVICE_MAX_WORK_ITEM_DIMENSIONS: 0x1003, DEVICE_MAX_WORK_GROUP_SIZE: 0x1004, DEVICE_MAX_WORK_ITEM_SIZES: 0x1005, DEVICE_PREFERRED_VECTOR_WIDTH_CHAR: 0x1006, DEVICE_PREFERRED_VECTOR_WIDTH_SHORT: 0x1007, DEVICE_PREFERRED_VECTOR_WIDTH_INT: 0x1008, DEVICE_PREFERRED_VECTOR_WIDTH_LONG: 0x1009, DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT: 0x100A, DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE: 0x100B, DEVICE_MAX_CLOCK_FREQUENCY: 0x100C, DEVICE_ADDRESS_BITS: 0x100D, DEVICE_MAX_READ_IMAGE_ARGS: 0x100E, DEVICE_MAX_WRITE_IMAGE_ARGS: 0x100F, DEVICE_MAX_MEM_ALLOC_SIZE: 0x1010, DEVICE_IMAGE2D_MAX_WIDTH: 0x1011, DEVICE_IMAGE2D_MAX_HEIGHT: 0x1012, DEVICE_IMAGE3D_MAX_WIDTH: 0x1013, DEVICE_IMAGE3D_MAX_HEIGHT: 0x1014, DEVICE_IMAGE3D_MAX_DEPTH: 0x1015, DEVICE_IMAGE_SUPPORT: 0x1016, DEVICE_MAX_PARAMETER_SIZE: 0x1017, DEVICE_MAX_SAMPLERS: 0x1018, DEVICE_MEM_BASE_ADDR_ALIGN: 0x1019, DEVICE_MIN_DATA_TYPE_ALIGN_SIZE: 0x101A, DEVICE_SINGLE_FP_CONFIG: 0x101B, DEVICE_GLOBAL_MEM_CACHE_TYPE: 0x101C, DEVICE_GLOBAL_MEM_CACHELINE_SIZE: 0x101D, DEVICE_GLOBAL_MEM_CACHE_SIZE: 0x101E, DEVICE_GLOBAL_MEM_SIZE: 0x101F, DEVICE_MAX_CONSTANT_BUFFER_SIZE: 0x1020, DEVICE_MAX_CONSTANT_ARGS: 0x1021, DEVICE_LOCAL_MEM_TYPE: 0x1022, DEVICE_LOCAL_MEM_SIZE: 0x1023, DEVICE_ERROR_CORRECTION_SUPPORT: 0x1024, DEVICE_PROFILING_TIMER_RESOLUTION: 0x1025, DEVICE_ENDIAN_LITTLE: 0x1026, DEVICE_AVAILABLE: 0x1027, DEVICE_COMPILER_AVAILABLE: 0x1028, DEVICE_EXECUTION_CAPABILITIES: 0x1029, DEVICE_QUEUE_PROPERTIES: 0x102A, DEVICE_NAME: 0x102B, DEVICE_VENDOR: 0x102C, DRIVER_VERSION: 0x102D, DEVICE_PROFILE: 0x102E, DEVICE_VERSION: 0x102F, DEVICE_EXTENSIONS: 0x1030, DEVICE_PLATFORM: 0x1031, DEVICE_DOUBLE_FP_CONFIG: 0x1032, /* 0x1033 reserved for CL_DEVICE_HALF_FP_CONFIG */ DEVICE_PREFERRED_VECTOR_WIDTH_HALF: 0x1034, DEVICE_HOST_UNIFIED_MEMORY: 0x1035, DEVICE_NATIVE_VECTOR_WIDTH_CHAR: 0x1036, DEVICE_NATIVE_VECTOR_WIDTH_SHORT: 0x1037, DEVICE_NATIVE_VECTOR_WIDTH_INT: 0x1038, DEVICE_NATIVE_VECTOR_WIDTH_LONG: 0x1039, DEVICE_NATIVE_VECTOR_WIDTH_FLOAT: 0x103A, DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE: 0x103B, DEVICE_NATIVE_VECTOR_WIDTH_HALF: 0x103C, DEVICE_OPENCL_C_VERSION: 0x103D, DEVICE_LINKER_AVAILABLE: 0x103E, DEVICE_BUILT_IN_KERNELS: 0x103F, DEVICE_IMAGE_MAX_BUFFER_SIZE: 0x1040, DEVICE_IMAGE_MAX_ARRAY_SIZE: 0x1041, DEVICE_PARENT_DEVICE: 0x1042, DEVICE_PARTITION_MAX_SUB_DEVICES: 0x1043, DEVICE_PARTITION_PROPERTIES: 0x1044, DEVICE_PARTITION_AFFINITY_DOMAIN: 0x1045, DEVICE_PARTITION_TYPE: 0x1046, DEVICE_REFERENCE_COUNT: 0x1047, DEVICE_PREFERRED_INTEROP_USER_SYNC: 0x1048, DEVICE_PRINTF_BUFFER_SIZE: 0x1049, DEVICE_IMAGE_PITCH_ALIGNMENT: 0x104A, DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT: 0x104B, /* cl_device_fp_config - bitfield */ FP_DENORM: (1 << 0), FP_INF_NAN: (1 << 1), FP_ROUND_TO_NEAREST: (1 << 2), FP_ROUND_TO_ZERO: (1 << 3), FP_ROUND_TO_INF: (1 << 4), FP_FMA: (1 << 5), FP_SOFT_FLOAT: (1 << 6), FP_CORRECTLY_ROUNDED_DIVIDE_SQRT: (1 << 7), /* cl_device_mem_cache_type */ NONE: 0x0, READ_ONLY_CACHE: 0x1, READ_WRITE_CACHE: 0x2, /* cl_device_local_mem_type */ LOCAL: 0x1, GLOBAL: 0x2, /* cl_device_exec_capabilities - bitfield */ EXEC_KERNEL: (1 << 0), EXEC_NATIVE_KERNEL: (1 << 1), /* cl_command_queue_properties - bitfield */ QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE: (1 << 0), QUEUE_PROFILING_ENABLE: (1 << 1), /* cl_context_info */ CONTEXT_REFERENCE_COUNT: 0x1080, CONTEXT_DEVICES: 0x1081, CONTEXT_PROPERTIES: 0x1082, CONTEXT_NUM_DEVICES: 0x1083, /* cl_context_properties */ CONTEXT_PLATFORM: 0x1084, CONTEXT_INTEROP_USER_SYNC: 0x1085, /* cl_device_partition_property */ DEVICE_PARTITION_EQUALLY: 0x1086, DEVICE_PARTITION_BY_COUNTS: 0x1087, DEVICE_PARTITION_BY_COUNTS_LIST_END: 0x0, DEVICE_PARTITION_BY_AFFINITY_DOMAIN: 0x1088, /* cl_device_affinity_domain */ DEVICE_AFFINITY_DOMAIN_NUMA: (1 << 0), DEVICE_AFFINITY_DOMAIN_L4_CACHE: (1 << 1), DEVICE_AFFINITY_DOMAIN_L3_CACHE: (1 << 2), DEVICE_AFFINITY_DOMAIN_L2_CACHE: (1 << 3), DEVICE_AFFINITY_DOMAIN_L1_CACHE: (1 << 4), DEVICE_AFFINITY_DOMAIN_NEXT_PARTITIONABLE: (1 << 5), /* cl_command_queue_info */ QUEUE_CONTEXT: 0x1090, QUEUE_DEVICE: 0x1091, QUEUE_REFERENCE_COUNT: 0x1092, QUEUE_PROPERTIES: 0x1093, /* cl_mem_flags - bitfield */ MEM_READ_WRITE: (1 << 0), MEM_WRITE_ONLY: (1 << 1), MEM_READ_ONLY: (1 << 2), MEM_USE_HOST_PTR: (1 << 3), MEM_ALLOC_HOST_PTR: (1 << 4), MEM_COPY_HOST_PTR: (1 << 5), // reserved (1 << 6) MEM_HOST_WRITE_ONLY: (1 << 7), MEM_HOST_READ_ONLY: (1 << 8), MEM_HOST_NO_ACCESS: (1 << 9), /* cl_mem_migration_flags - bitfield */ MIGRATE_MEM_OBJECT_HOST: (1 << 0), MIGRATE_MEM_OBJECT_CONTENT_UNDEFINED: (1 << 1), /* cl_channel_order */ R: 0x10B0, A: 0x10B1, RG: 0x10B2, RA: 0x10B3, RGB: 0x10B4, RGBA: 0x10B5, BGRA: 0x10B6, ARGB: 0x10B7, INTENSITY: 0x10B8, LUMINANCE: 0x10B9, Rx: 0x10BA, RGx: 0x10BB, RGBx: 0x10BC, DEPTH: 0x10BD, DEPTH_STENCIL: 0x10BE, /* cl_channel_type */ SNORM_INT8: 0x10D0, SNORM_INT16: 0x10D1, UNORM_INT8: 0x10D2, UNORM_INT16: 0x10D3, UNORM_SHORT_565: 0x10D4, UNORM_SHORT_555: 0x10D5, UNORM_INT_101010: 0x10D6, SIGNED_INT8: 0x10D7, SIGNED_INT16: 0x10D8, SIGNED_INT32: 0x10D9, UNSIGNED_INT8: 0x10DA, UNSIGNED_INT16: 0x10DB, UNSIGNED_INT32: 0x10DC, HALF_FLOAT: 0x10DD, FLOAT: 0x10DE, UNORM_INT24: 0x10DF, /* cl_mem_object_type */ MEM_OBJECT_BUFFER: 0x10F0, MEM_OBJECT_IMAGE2D: 0x10F1, MEM_OBJECT_IMAGE3D: 0x10F2, MEM_OBJECT_IMAGE2D_ARRAY: 0x10F3, MEM_OBJECT_IMAGE1D: 0x10F4, MEM_OBJECT_IMAGE1D_ARRAY: 0x10F5, MEM_OBJECT_IMAGE1D_BUFFER: 0x10F6, /* cl_mem_info */ MEM_TYPE: 0x1100, MEM_FLAGS: 0x1101, MEM_SIZE: 0x1102, MEM_HOST_PTR: 0x1103, MEM_MAP_COUNT: 0x1104, MEM_REFERENCE_COUNT: 0x1105, MEM_CONTEXT: 0x1106, MEM_ASSOCIATED_MEMOBJECT: 0x1107, MEM_OFFSET: 0x1108, /* cl_image_info */ IMAGE_FORMAT: 0x1110, IMAGE_ELEMENT_SIZE: 0x1111, IMAGE_ROW_PITCH: 0x1112, IMAGE_SLICE_PITCH: 0x1113, IMAGE_WIDTH: 0x1114, IMAGE_HEIGHT: 0x1115, IMAGE_DEPTH: 0x1116, IMAGE_ARRAY_SIZE: 0x1117, IMAGE_BUFFER: 0x1118, IMAGE_NUM_MIP_LEVELS: 0x1119, IMAGE_NUM_SAMPLES: 0x111A, /* cl_addressing_mode */ ADDRESS_NONE: 0x1130, ADDRESS_CLAMP_TO_EDGE: 0x1131, ADDRESS_CLAMP: 0x1132, ADDRESS_REPEAT: 0x1133, ADDRESS_MIRRORED_REPEAT: 0x1134, /* cl_filter_mode */ FILTER_NEAREST: 0x1140, FILTER_LINEAR: 0x1141, /* cl_sampler_info */ SAMPLER_REFERENCE_COUNT: 0x1150, SAMPLER_CONTEXT: 0x1151, SAMPLER_NORMALIZED_COORDS: 0x1152, SAMPLER_ADDRESSING_MODE: 0x1153, SAMPLER_FILTER_MODE: 0x1154, /* cl_map_flags - bitfield */ MAP_READ: (1 << 0), MAP_WRITE: (1 << 1), MAP_WRITE_INVALIDATE_REGION: (1 << 2), /* cl_program_info */ PROGRAM_REFERENCE_COUNT: 0x1160, PROGRAM_CONTEXT: 0x1161, PROGRAM_NUM_DEVICES: 0x1162, PROGRAM_DEVICES: 0x1163, PROGRAM_SOURCE: 0x1164, PROGRAM_BINARY_SIZES: 0x1165, PROGRAM_BINARIES: 0x1166, PROGRAM_NUM_KERNELS: 0x1167, PROGRAM_KERNEL_NAMES: 0x1168, /* cl_program_build_info */ PROGRAM_BUILD_STATUS: 0x1181, PROGRAM_BUILD_OPTIONS: 0x1182, PROGRAM_BUILD_LOG: 0x1183, PROGRAM_BINARY_TYPE: 0x1184, /* cl_program_binary_type */ PROGRAM_BINARY_TYPE_NONE: 0x0, PROGRAM_BINARY_TYPE_COMPILED_OBJECT: 0x1, PROGRAM_BINARY_TYPE_LIBRARY: 0x2, PROGRAM_BINARY_TYPE_EXECUTABLE: 0x4, /* cl_build_status */ BUILD_SUCCESS: 0, BUILD_NONE: -1, BUILD_ERROR: -2, BUILD_IN_PROGRESS: -3, /* cl_kernel_info */ KERNEL_FUNCTION_NAME: 0x1190, KERNEL_NUM_ARGS: 0x1191, KERNEL_REFERENCE_COUNT: 0x1192, KERNEL_CONTEXT: 0x1193, KERNEL_PROGRAM: 0x1194, KERNEL_ATTRIBUTES: 0x1195, /* cl_kernel_arg_info */ KERNEL_ARG_ADDRESS_QUALIFIER: 0x1196, KERNEL_ARG_ACCESS_QUALIFIER: 0x1197, KERNEL_ARG_TYPE_NAME: 0x1198, KERNEL_ARG_TYPE_QUALIFIER: 0x1199, KERNEL_ARG_NAME: 0x119A, /* cl_kernel_arg_address_qualifier */ KERNEL_ARG_ADDRESS_GLOBAL: 0x119B, KERNEL_ARG_ADDRESS_LOCAL: 0x119C, KERNEL_ARG_ADDRESS_CONSTANT: 0x119D, KERNEL_ARG_ADDRESS_PRIVATE: 0x119E, /* cl_kernel_arg_access_qualifier */ KERNEL_ARG_ACCESS_READ_ONLY: 0x11A0, KERNEL_ARG_ACCESS_WRITE_ONLY: 0x11A1, KERNEL_ARG_ACCESS_READ_WRITE: 0x11A2, KERNEL_ARG_ACCESS_NONE: 0x11A3, /* cl_kernel_arg_type_qualifer */ KERNEL_ARG_TYPE_NONE: 0, KERNEL_ARG_TYPE_CONST: (1 << 0), KERNEL_ARG_TYPE_RESTRICT: (1 << 1), KERNEL_ARG_TYPE_VOLATILE: (1 << 2), /* cl_kernel_work_group_info */ KERNEL_WORK_GROUP_SIZE: 0x11B0, KERNEL_COMPILE_WORK_GROUP_SIZE: 0x11B1, KERNEL_LOCAL_MEM_SIZE: 0x11B2, KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE: 0x11B3, KERNEL_PRIVATE_MEM_SIZE: 0x11B4, KERNEL_GLOBAL_WORK_SIZE: 0x11B5, /* cl_event_info */ EVENT_COMMAND_QUEUE: 0x11D0, EVENT_COMMAND_TYPE: 0x11D1, EVENT_REFERENCE_COUNT: 0x11D2, EVENT_COMMAND_EXECUTION_STATUS: 0x11D3, EVENT_CONTEXT: 0x11D4, /* cl_command_type */ COMMAND_NDRANGE_KERNEL: 0x11F0, COMMAND_TASK: 0x11F1, COMMAND_NATIVE_KERNEL: 0x11F2, COMMAND_READ_BUFFER: 0x11F3, COMMAND_WRITE_BUFFER: 0x11F4, COMMAND_COPY_BUFFER: 0x11F5, COMMAND_READ_IMAGE: 0x11F6, COMMAND_WRITE_IMAGE: 0x11F7, COMMAND_COPY_IMAGE: 0x11F8, COMMAND_COPY_IMAGE_TO_BUFFER: 0x11F9, COMMAND_COPY_BUFFER_TO_IMAGE: 0x11FA, COMMAND_MAP_BUFFER: 0x11FB, COMMAND_MAP_IMAGE: 0x11FC, COMMAND_UNMAP_MEM_OBJECT: 0x11FD, COMMAND_MARKER: 0x11FE, COMMAND_ACQUIRE_GL_OBJECTS: 0x11FF, COMMAND_RELEASE_GL_OBJECTS: 0x1200, COMMAND_READ_BUFFER_RECT: 0x1201, COMMAND_WRITE_BUFFER_RECT: 0x1202, COMMAND_COPY_BUFFER_RECT: 0x1203, COMMAND_USER: 0x1204, COMMAND_BARRIER: 0x1205, COMMAND_MIGRATE_MEM_OBJECTS: 0x1206, COMMAND_FILL_BUFFER: 0x1207, COMMAND_FILL_IMAGE: 0x1208, /* command execution status */ COMPLETE: 0x0, RUNNING: 0x1, SUBMITTED: 0x2, QUEUED: 0x3, /* cl_buffer_create_type */ BUFFER_CREATE_TYPE_REGION: 0x1220, /* cl_profiling_info */ PROFILING_COMMAND_QUEUED: 0x1280, PROFILING_COMMAND_SUBMIT: 0x1281, PROFILING_COMMAND_START: 0x1282, PROFILING_COMMAND_END: 0x1283, DEVICE_COMPUTE_CAPABILITY_MAJOR_NV : 0x4000, DEVICE_COMPUTE_CAPABILITY_MINOR_NV : 0x4001, DEVICE_REGISTERS_PER_BLOCK_NV : 0x4002, DEVICE_WARP_SIZE_NV : 0x4003, DEVICE_GPU_OVERLAP_NV : 0x4004, DEVICE_KERNEL_EXEC_TIMEOUT_NV : 0x4005, DEVICE_INTEGRATED_MEMORY_NV : 0x4006, DEVICE_GLOBAL_FREE_MEMORY_AMD : 0x4039, DEVICE_SIMD_PER_COMPUTE_UNIT_AMD : 0x4040, DEVICE_SIMD_WIDTH_AMD : 0x4041, DEVICE_SIMD_INSTRUCTION_WIDTH_AMD : 0x4042, DEVICE_WAVEFRONT_WIDTH_AMD : 0x4043, DEVICE_GLOBAL_MEM_CHANNELS_AMD : 0x4044, DEVICE_GLOBAL_MEM_CHANNEL_BANKS_AMD : 0x4045, DEVICE_GLOBAL_MEM_CHANNEL_BANK_WIDTH_AMD : 0x4046, DEVICE_LOCAL_MEM_SIZE_PER_COMPUTE_UNIT_AMD : 0x4047, DEVICE_LOCAL_MEM_BANKS_AMD : 0x4048 });