Device can concurrently copy memory and execute a kernel
*)
kernelExecTimeoutEnabled : bool;
(*
Specified whether there is a run time limit on kernels
*)
integrated : bool;
(*
Device is integrated as opposed to discrete
*)
canMapHostMemory : bool;
(*
Device can map host memory with cudaHostAlloc/cudaHostGetDevicePointer
*)
computeMode : int;
(*
Compute mode
*)
concurrentKernels : bool;
(*
Device can possibly execute multiple kernels concurrently
*)
pciBusID : int;
(*
PCI bus ID of the device
*)
pciDeviceID : int;
(*
PCI device ID of the device
*)
driverVersion : int;
}
Specific information for Cuda-managed devices
Specific information for OpenCL-managed devices
type platformInfo = {
platform_profile : string;
(*
OpenCL profile string. Returns the profile name supported by the implementation. The profile name returned can be one of the following strings:
FULL_PROFILE - if the implementation supports the OpenCL specification (functionality defined as part of the core specification and does not require any extensions to be supported).
EMBEDDED_PROFILE - if the implementation supports the OpenCL embedded profile. The embedded profile is defined to be a subset for each version of OpenCL.
*)
platform_version : string;
(*
OpenCL version string. Returns the OpenCL version supported by the implementation. This version string has the following format: OpenCL < space >< major_version.minor_version >< space >< platform - specific information > The major_version.minor_version value returned will be 1.1.
*)
platform_name : string;
(*
Platform name string
*)
platform_vendor : string;
(*
Platform vendor string
*)
platform_extensions : string;
(*
Returns a space - separated list of extension names (the extension names themselves do not contain any spaces) supported by the platform. Extensions defined here must be supported by all devices associated with this platform.
OpenCL profile string. Returns the profile name supported by the device (see note). The profile name returned can be one of the following strings:
FULL_PROFILE - if the device supports the OpenCL specification (functionality defined as part of the core specification and does not require any extensions to be supported).
EMBEDDED_PROFILE - if the device supports the OpenCL embedded profile.
*)
version : string;
(*
OpenCL version string. Returns the OpenCL version supported by the device. This version string has the following format: OpenCL < space >< major_version.minor_version >< space >< vendor - specific information > The major_version.minor_version value returned will be 1.1.
*)
vendor : string;
(*
Vendor name string
*)
extensions : string;
(*
Returns a space - separated list of extension names (the extension names themselves do not contain any spaces). The list of extension names returned currently can include one or more of the following approved extension names:
cl_khr_fp64
cl_khr_int64_base_atomics
cl_khr_int64_extended_atomics
cl_khr_fp16
cl_khr_gl_sharing
cl_khr_gl_event
cl_khr_d3d10_sharing
*)
vendor_id : int;
(*
A unique device vendor identifier. An example of a unique device identifier could be the PCIe ID
*)
max_work_item_dimensions : int;
(*
Maximum dimensions that specify the global and local work-item IDs used by the data parallel execution model. (Refer to clEnqueueNDRangeKernel). The minimum value is 3
*)
address_bits : int;
(*
The default compute device address space size specified as an unsigned integer value in bits. Currently supported values are 32 or 64 bits.
*)
max_mem_alloc_size : int;
(*
Max size of memory object allocation in bytes. The minimum value is max (1/4th of CL_DEVICE_GLOBAL_MEM_SIZE, 128*1024*1024)
*)
image_support : bool;
(*
Is true if images are supported by the OpenCL device and false otherwise.
*)
max_read_image_args : int;
(*
Max number of simultaneous image objects that can be read by a kernel. The minimum value is 128 if image_support is true.
*)
max_write_image_args : int;
(*
Max number of simultaneous image objects that can be written to by a kernel. The minimum value is 8 if image_support is true.
*)
max_samplers : int;
(*
Maximum number of samplers that can be used in a kernel. The minimum value is 16 if image_support is true.
*)
mem_base_addr_align : int;
(*
Describes the alignment in bits of the base address of any allocated memory object.
*)
min_data_type_align_size : int;
(*
The smallest alignment in bytes which can be used for any data type.
*)
global_mem_cacheline_size : int;
(*
Size of global memory cache line in bytes.
*)
global_mem_cache_size : int;
(*
Size of global memory cache in bytes.
*)
max_constant_args : int;
(*
Max number of arguments declared with the __constant qualifier in a kernel. The minimum value is 8.
*)
endian_little : bool;
(*
Is true if the OpenCL device is a little endian device and false otherwise.
*)
available : bool;
(*
Is true if the device is available from Spoc
*)
compiler_available : bool;
(*
Is false if the implementation does not have a compiler available to compile the program source. Is true if the compiler is available. This can be false for the embedded platform profile only.
Describes single precision floating - point capability of the device. This is a bit - field that describes one or more of the following values:
CL_FP_DENORM - denorms are supported
CL_FP_INF_NAN - INF and quiet NaNs are supported
CL_FP_ROUND_TO_NEAREST - round to nearest even rounding mode supported
CL_FP_ROUND_TO_ZERO - round to zero rounding mode supported
CL_FP_ROUND_TO_INF - round to + ve and - ve infinity rounding modes supported
CL_FP_FMA - IEEE754 -2008 fused multiply - add is supported
CL_FP_SOFT_FLOAT - Basic floating - point operations (such as addition, subtraction, multiplication) are implemented in software. The mandated minimum floating - point capability is CL_FP_ROUND_TO_NEAREST | CL_FP_INF_NAN.
Describes the command - queue properties supported by the device. This is a bit - field that describes one or more of the following values:
CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE
CL_QUEUE_PROFILING_ENABLE These properties are described in the table for clCreateCommandQueue. The mandated minimum capability is CL_QUEUE_PROFILING_ENABLE.
Describes the OPTIONAL double precision floating - point capability of the OpenCL device. This is a bit - field that describes one or more of the following values:
CL_FP_DENORM - denorms are supported.
CL_FP_INF_NAN - INF and NaNs are supported.
CL_FP_ROUND_TO_NEAREST - round to nearest even rounding mode supported.
CL_FP_ROUND_TO_ZERO - round to zero rounding mode supported.
CL_FP_ROUND_TO_INF - round to + ve and - ve infinity rounding modes supported.
CP_FP_FMA - IEEE754 -2008 fused multiply - add is supported. The mandated minimum double precision floating - point capability is CL_FP_FMA | CL_FP_ROUND_TO_NEAREST | CL_FP_ROUND_TO_ZERO | CL_FP_ROUND_TO_INF | CL_FP_INF_NAN | CL_FP_DENORM.
*)
max_constant_buffer_size : int;
(*
Max size in bytes of a constant buffer allocation. The minimum value is 64 KB.
Describes the OPTIONAL half precision floating - point capability of the OpenCL device. This is a bit - field that describes one or more of the following values:
CL_FP_DENORM - denorms are supported.
CL_FP_INF_NAN - INF and NaNs are supported.
CL_FP_ROUND_TO_NEAREST - round to nearest even rounding mode supported.
CL_FP_ROUND_TO_ZERO - round to zero rounding mode supported.
CL_FP_ROUND_TO_INF - round to + ve and - ve infinity rounding modes supported.
CP_FP_FMA - IEEE754 -2008 fused multiply - add is supported.
CL_FP_SOFT_FLOAT - Basic floating - point operations (such as addition, subtraction, multiplication) are implemented in software. The required minimum half precision floating - point capability as implemented by this extension is CL_FP_ROUND_TO_ZERO or CL_FP_ROUND_TO_INF | CL_FP_INF_NAN.
*)
max_work_group_size : int;
(*
Maximum number of work-items in a work-group executing a kernel using the data parallel execution model. The minimum value is 1.
*)
image2D_max_height : int;
(*
Max height of 2D image in pixels. The minimum value is 8192 if image_support is true.
*)
image2D_max_width : int;
(*
Max width of 2D image in pixels. The minimum value is 8192 if image_support is true.
*)
image3D_max_depth : int;
(*
Max depth of 3D image in pixels. The minimum value is 2048 if image_support is true.
*)
image3D_max_height : int;
(*
Max height of 3D image in pixels. The minimum value is 2048 if image_support is true.
*)
image3D_max_width : int;
(*
Max width of 3D image in pixels. The minimum value is 2048 if image_support is true.
*)
max_parameter_size : int;
(*
Max size in bytes of the arguments that can be passed to a kernel. The minimum value is 1024. For this minimum value, only a maximum of 128 arguments can be passed to a kernel.
Maximum number of work-items that can be specified in each dimension of the work-group to clEnqueueNDRangeKernel. The minimum value is (1, 1, 1).
*)
prefered_vector_width_char : int;
(*
Preferred native vector width size for built - in scalar types that can be put into vectors. The vector width is defined as the number of scalar elements that can be stored in the vector. If the cl_khr_fp16 extension is not supported, CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF must return 0.
*)
prefered_vector_width_short : int;
(*
see prefered_vector_width_char
*)
prefered_vector_width_int : int;
(*
see prefered_vector_width_char
*)
prefered_vector_width_long : int;
(*
see prefered_vector_width_char
*)
prefered_vector_width_float : int;
(*
see prefered_vector_width_char
*)
prefered_vector_width_double : int;
(*
see prefered_vector_width_char
*)
profiling_timer_resolution : int;
(*
Describes the resolution of device timer. This is measured in nanoseconds.
*)
driver_version : string;
(*
OpenCL software driver version string in the form major_number.minor_number.