uncomplicate.clojurecl.info

Info functions for all OpenCL objects (platforms, devices, etc…).

The OpenCL standard defines info functions for all cl structures. Typically in OpenCL C, you would have a reference to an object representing, for example, platform, and then call a dedicated info function, in this case clGetPlatformInfo with a parameter param_name that specifies which of the several available informations you want about that object. If you need all information, then you need to call this function as many times as different kinds of information there is.

ClojureCL provides many conveniences for obtaining information about cl objects:

  1. There is a universal, high-level, info function that works for all kinds of cl objects (platform, context, device, memory, etc.) and displays all available information. This function also accepts a keyword argument for returning only a specific kind of information, not all information. The information will be converted from low-level C enums to a Clojre-friendly format that uses keywords, sequences, sets, etc. It will release all additional cl objects that it has to use to obtain information. If there is an OpenCL error in obtaining the information, which may happen if the driver does not support that kind of information, the ExceptionInfo will be returned as a result for that particular information, instead of raising an exception. This function is useful in when the information is going to be displayed to the user.

  2. For each information kind, there is a dedicated, low-level, function that returns the raw, unconverted information. If the result is a cl object that needs to be released after use, it is the responsibility of the caller to call the core/release function. If the information is not supported, the exception is raised. These functions are convenient in the parts of the program where the returned info is used by other parts of the program, for example to calculate some parameters for an algorithm.

  3. Some information is not only about the objects, for example program, but about the specific use of that object, for example a program build. In that case, aditional X-info function is provided, for example build-info.

Most keywords in the info function are exactly the same as the corresponding low-level function name, except in a few cases where that would produce a clash with some other functionality. You can check the available keywords in the documentation of appropriate positional methods: ->PlatformInfo, ->DeviceInfo, ->CommandQueueInfo, ->ContextInfo, ->KernelInfo, ->KernelArgInfo, ->ProgramInfo, ->ProgramBuildinfo, ->EventInfo, ->Profilinginfo, ->MemObjectInfo, etc…

###Cheat Sheet

Low-level info functions grouped by resource type:

Hihg-level info and keywords (in a few cases different than low-level function names)

->PlatformInfo, ->DeviceInfo, ->CommandQueueInfo, ->ContextInfo, ->KernelInfo, ->KernelArgInfo, ->ProgramInfo, ->ProgramBuildinfo, ->EventInfo, ->Profilinginfo, ->MemObjectInfo,

address-bits

(address-bits device)

arg-access-qualifier

(arg-access-qualifier kernel arg)

arg-address-qualifier

(arg-address-qualifier kernel arg)

arg-info

(arg-info kernel arg info-type)(arg-info kernel arg)(arg-info kernel)

arg-name

(arg-name kernel arg)

arg-type-name

(arg-type-name kernel arg)

arg-type-qualifier

(arg-type-qualifier kernel arg)

associated-memobject

(associated-memobject mo)

attributes

(attributes kernel)

available

(available device)

binaries

(binaries p)

binary-sizes

(binary-sizes p)

binary-type

(binary-type program device)

build-info

(build-info program device info-type)(build-info program device)

build-log

(build-log program device)

build-options

(build-options program device)

build-status

(build-status program device)

built-in-kernels

(built-in-kernels device)

command-type

(command-type event)

compiler-available

(compiler-available device)

device-type

(device-type device)

device-version

(device-version device)

devices-in-context

(devices-in-context context)

double-fp-config

(double-fp-config device)

driver-version

(driver-version device)

durations

(durations pi)

end

(end event)

endian-little

(endian-little device)

error-correction-support

(error-correction-support device)

event-command-queue

(event-command-queue event)

event-context

(event-context event)

execution-capabilities

(execution-capabilities device)

execution-status

(execution-status event)

flags

(flags mo)

function-name

(function-name kernel)

global-mem-cache-size

(global-mem-cache-size device)

global-mem-cache-type

(global-mem-cache-type device)

global-mem-cacheline-size

(global-mem-cacheline-size device)

global-mem-size

(global-mem-size device)

global-variable-preferred-total-size

(global-variable-preferred-total-size device)

global-variable-total-size

(global-variable-total-size program device)

icd-suffix-khr

(icd-suffix-khr platform)

image-base-address-alignment

(image-base-address-alignment device)

image-max-array-size

(image-max-array-size device)

image-max-buffer-size

(image-max-buffer-size device)

image-pitch-alignment

(image-pitch-alignment device)

image-support

(image-support device)

image2d-max-height

(image2d-max-height device)

image2d-max-width

(image2d-max-width device)

image3d-max-depth

(image3d-max-depth device)

image3d-max-height

(image3d-max-height device)

image3d-max-width

(image3d-max-width device)

Info

protocol

members

info

(info this info-type)(info this)

InfoExtensions

protocol

members

extensions

(extensions this)

InfoName

protocol

members

name-info

(name-info this)

InfoProfile

protocol

members

profile

(profile this)

InfoProperties

protocol

members

properties

(properties this)

InfoReferenceCount

protocol

members

reference-count

(reference-count this)

InfoVendor

protocol

members

vendor

(vendor this)

kernel-context

(kernel-context kernel)

kernel-names

(kernel-names p)

kernel-program

(kernel-program kernel)

linker-available

(linker-available device)

local-mem-size

(local-mem-size device)

local-mem-type

(local-mem-type device)

map-count

(map-count mo)

max-clock-frequency

(max-clock-frequency device)

max-compute-units

(max-compute-units device)

max-constant-args

(max-constant-args device)

max-constant-buffer-size

(max-constant-buffer-size device)

max-global-variable-size

(max-global-variable-size device)

max-mem-aloc-size

(max-mem-aloc-size device)

max-on-device-events

(max-on-device-events device)

max-on-device-queues

(max-on-device-queues device)

max-parameter-size

(max-parameter-size device)

max-pipe-args

(max-pipe-args device)

max-read-image-args

(max-read-image-args device)

max-read-write-image-args

(max-read-write-image-args device)

max-samplers

(max-samplers device)

max-work-group-size

(max-work-group-size device)

max-work-item-dimensions

(max-work-item-dimensions device)

max-work-item-sizes

(max-work-item-sizes device)

max-write-image-args

(max-write-image-args device)

mem-base-addr-align

(mem-base-addr-align device)

mem-context

(mem-context mo)

mem-size

(mem-size mo)

mem-type

(mem-type mo)

native-vector-width-char

(native-vector-width-char device)

native-vector-width-double

(native-vector-width-double device)

native-vector-width-float

(native-vector-width-float device)

native-vector-width-half

(native-vector-width-half device)

native-vector-width-int

(native-vector-width-int device)

native-vector-width-long

(native-vector-width-long device)

native-vector-width-short

(native-vector-width-short device)

num-args

(num-args kernel)

num-devices-in-context

(num-devices-in-context context)

offset

(offset mo)

opencl-c-version

(opencl-c-version device)

parent-device

(parent-device device)

partition-affinity-domain

(partition-affinity-domain device)

partition-max-sub-devices

(partition-max-sub-devices device)

partition-properties

(partition-properties device)

partition-type

(partition-type device)

pipe-max-active-reservations

(pipe-max-active-reservations device)

pipe-max-packet-size

(pipe-max-packet-size device)

platform

(platform device)

preferred-global-atomic-alignment

(preferred-global-atomic-alignment device)

preferred-interop-user-sync

(preferred-interop-user-sync device)

preferred-local-atomic-alignment

(preferred-local-atomic-alignment device)

preferred-platform-atomic-alignment

(preferred-platform-atomic-alignment device)

preferred-vector-width-char

(preferred-vector-width-char device)

preferred-vector-width-double

(preferred-vector-width-double device)

preferred-vector-width-float

(preferred-vector-width-float device)

preferred-vector-width-half

(preferred-vector-width-half device)

preferred-vector-width-int

(preferred-vector-width-int device)

preferred-vector-width-long

(preferred-vector-width-long device)

preferred-vector-width-short

(preferred-vector-width-short device)

printf-buffer-size

(printf-buffer-size device)

profiling-info

(profiling-info event info)(profiling-info event)

profiling-timer-resolution

(profiling-timer-resolution device)

program-context

(program-context p)

program-devices

(program-devices p)

program-num-devices

(program-num-devices p)

program-num-kernels

(program-num-kernels p)

program-source

(program-source p)

queue-context

(queue-context queue)

queue-device

(queue-device queue)

queue-on-device-max-size

(queue-on-device-max-size device)

queue-on-device-preferred-size

(queue-on-device-preferred-size device)

queue-on-device-properties

(queue-on-device-properties device)

queue-on-host-properties

(queue-on-host-properties device)

queue-size

(queue-size queue)

queued

(queued event)

single-fp-config

(single-fp-config device)

spir-versions

(spir-versions device)

start

(start event)

submit

(submit event)

svm-capabilities

(svm-capabilities device)

uses-svm-pointer

(uses-svm-pointer mo)

vendor-id

(vendor-id device)

version

(version platform)