UNPKG

webcl

Version:

OpenCL bindings for Node.js

128 lines (114 loc) 6.2 kB
#!/usr/bin/env node var WebCL = require('webcl'); var alert = console.log; function dumpCLData () { var s = ""; try { // First check if the WebCL extension is installed at all if (WebCL == undefined) { alert("Unfortunately your system does not support WebCL. " + "Make sure that you have the OpenCL extension installed."); return; } // List of OpenCL information parameter names. var infos = [ [ "CL_DEVICE_ADDRESS_BITS", WebCL.CL_DEVICE_ADDRESS_BITS ], [ "CL_DEVICE_AVAILABLE", WebCL.CL_DEVICE_AVAILABLE ], [ "CL_DEVICE_COMPILER_AVAILABLE", WebCL.CL_DEVICE_COMPILER_AVAILABLE ], [ "CL_DEVICE_DOUBLE_FP_CONFIG", WebCL.CL_DEVICE_DOUBLE_FP_CONFIG ], [ "CL_DEVICE_ENDIAN_LITTLE", WebCL.CL_DEVICE_ENDIAN_LITTLE ], [ "CL_DEVICE_ERROR_CORRECTION_SUPPORT", WebCL.CL_DEVICE_ERROR_CORRECTION_SUPPORT ], [ "CL_DEVICE_EXECUTION_CAPABILITIES", WebCL.CL_DEVICE_EXECUTION_CAPABILITIES ], [ "CL_DEVICE_EXTENSIONS", WebCL.CL_DEVICE_EXTENSIONS ], [ "CL_DEVICE_GLOBAL_MEM_CACHE_SIZE", WebCL.CL_DEVICE_GLOBAL_MEM_CACHE_SIZE ], [ "CL_DEVICE_GLOBAL_MEM_CACHE_TYPE", WebCL.CL_DEVICE_GLOBAL_MEM_CACHE_TYPE ], [ "CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE", WebCL.CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE ], [ "CL_DEVICE_GLOBAL_MEM_SIZE", WebCL.CL_DEVICE_GLOBAL_MEM_SIZE ], [ "CL_DEVICE_HALF_FP_CONFIG", WebCL.CL_DEVICE_HALF_FP_CONFIG ], [ "CL_DEVICE_IMAGE_SUPPORT", WebCL.CL_DEVICE_IMAGE_SUPPORT ], [ "CL_DEVICE_IMAGE2D_MAX_HEIGHT", WebCL.CL_DEVICE_IMAGE2D_MAX_HEIGHT ], [ "CL_DEVICE_IMAGE2D_MAX_WIDTH", WebCL.CL_DEVICE_IMAGE2D_MAX_WIDTH ], [ "CL_DEVICE_IMAGE3D_MAX_DEPTH", WebCL.CL_DEVICE_IMAGE3D_MAX_DEPTH ], [ "CL_DEVICE_IMAGE3D_MAX_HEIGHT", WebCL.CL_DEVICE_IMAGE3D_MAX_HEIGHT ], [ "CL_DEVICE_IMAGE3D_MAX_WIDTH", WebCL.CL_DEVICE_IMAGE3D_MAX_WIDTH ], [ "CL_DEVICE_LOCAL_MEM_SIZE", WebCL.CL_DEVICE_LOCAL_MEM_SIZE ], [ "CL_DEVICE_LOCAL_MEM_TYPE", WebCL.CL_DEVICE_LOCAL_MEM_TYPE ], [ "CL_DEVICE_MAX_CLOCK_FREQUENCY", WebCL.CL_DEVICE_MAX_CLOCK_FREQUENCY ], [ "CL_DEVICE_MAX_COMPUTE_UNITS", WebCL.CL_DEVICE_MAX_COMPUTE_UNITS ], [ "CL_DEVICE_MAX_CONSTANT_ARGS", WebCL.CL_DEVICE_MAX_CONSTANT_ARGS ], [ "CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE", WebCL.CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE ], [ "CL_DEVICE_MAX_MEM_ALLOC_SIZE", WebCL.CL_DEVICE_MAX_MEM_ALLOC_SIZE ], [ "CL_DEVICE_MAX_PARAMETER_SIZE", WebCL.CL_DEVICE_MAX_PARAMETER_SIZE ], [ "CL_DEVICE_MAX_READ_IMAGE_ARGS", WebCL.CL_DEVICE_MAX_READ_IMAGE_ARGS ], [ "CL_DEVICE_MAX_SAMPLERS", WebCL.CL_DEVICE_MAX_SAMPLERS ], [ "CL_DEVICE_MAX_WORK_GROUP_SIZE", WebCL.CL_DEVICE_MAX_WORK_GROUP_SIZE ], [ "CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS", WebCL.CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS ], [ "CL_DEVICE_MAX_WORK_ITEM_SIZES", WebCL.CL_DEVICE_MAX_WORK_ITEM_SIZES ], [ "CL_DEVICE_MAX_WRITE_IMAGE_ARGS", WebCL.CL_DEVICE_MAX_WRITE_IMAGE_ARGS ], [ "CL_DEVICE_MEM_BASE_ADDR_ALIGN", WebCL.CL_DEVICE_MEM_BASE_ADDR_ALIGN ], [ "CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE", WebCL.CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE ], [ "CL_DEVICE_NAME", WebCL.CL_DEVICE_NAME ], [ "CL_DEVICE_PLATFORM", WebCL.CL_DEVICE_PLATFORM ], [ "CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR", WebCL.CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR ], [ "CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT", WebCL.CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT ], [ "CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT", WebCL.CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT ], [ "CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG", WebCL.CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG ], [ "CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT", WebCL.CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT ], [ "CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE", WebCL.CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE ], [ "CL_DEVICE_PROFILE", WebCL.CL_DEVICE_PROFILE ], [ "CL_DEVICE_PROFILING_TIMER_RESOLUTION", WebCL.CL_DEVICE_PROFILING_TIMER_RESOLUTION ], [ "CL_DEVICE_QUEUE_PROPERTIES", WebCL.CL_DEVICE_QUEUE_PROPERTIES ], [ "CL_DEVICE_SINGLE_FP_CONFIG", WebCL.CL_DEVICE_SINGLE_FP_CONFIG ], [ "CL_DEVICE_TYPE", WebCL.CL_DEVICE_TYPE ], [ "CL_DEVICE_VENDOR", WebCL.CL_DEVICE_VENDOR ], [ "CL_DEVICE_VENDOR_ID", WebCL.CL_DEVICE_VENDOR_ID ], [ "CL_DEVICE_VERSION", WebCL.CL_DEVICE_VERSION ], [ "CL_DRIVER_VERSION", WebCL.CL_DRIVER_VERSION ] ]; // Get a list of available CL platforms, and another list of the // available devices on each platform. Platform and device information // is inquired into string s. var platforms = WebCL.getPlatformIDs (); s += "Found " + platforms.length + " platform" + (platforms.length == 1 ? "" : "s") + "." + "\n\n"; for (var i in platforms) { var plat = platforms[i]; var name = plat.getPlatformInfo (WebCL.CL_PLATFORM_NAME); s += "[" + i + "] \"" + name + "\"\n"; s += "vendor: " + plat.getPlatformInfo (WebCL.CL_PLATFORM_VENDOR) + "\n"; s += "version: " + plat.getPlatformInfo (WebCL.CL_PLATFORM_VERSION) + "\n"; s += "profile: " + plat.getPlatformInfo (WebCL.CL_PLATFORM_PROFILE) + "\n"; s += "extensions: " + plat.getPlatformInfo (WebCL.CL_PLATFORM_EXTENSIONS) + "\n"; var devices = plat.getDeviceIDs (WebCL.CL_DEVICE_TYPE_ALL); s += "Devices: " + devices.length + "\n"; for (var j in devices) { var dev = devices[j]; s += "[" + j + "] \"" + dev.getDeviceInfo(WebCL.CL_DEVICE_NAME) + "\"\n"; for (var k in infos) { s += infos[k][0] + ": "; try { if (infos[k][1] == WebCL.CL_DEVICE_PLATFORM) { s += "" + dev.getDeviceInfo(infos[k][1]).getPlatformInfo(WebCL.CL_PLATFORM_NAME) + ""; } else { s += "" + dev.getDeviceInfo(infos[k][1]) + ""; } } catch (e) { s += "Info not available"; } s += "\n"; } } } console.log(s); } catch(e) { console.log(s + "\n" + e.toString()); throw e; } } dumpCLData ();