Skip to content

Limitations

doe300 edited this page Dec 18, 2019 · 6 revisions

General

  • Supports only the EMBEDDED_PROFILE of the OpenCL 1.2 standard (no 64-bit arithmetic, no denormal float numbers, etc.)
  • Due to the constraints of the hardware, the maximum work-group size is 12 work-items!

See also hardware limitations and performance limitations and unsupported libraries.

Using VC4CL in combination with other applications using the VideoCore IV GPU (e.g. the V3D Mesa driver) is untested and can cause issues on both sides!

Runtime-library

  • The maximum buffer-size which can be allocated (in a single allocation) is set to half of the available video memory (set via /boot/config.txt)
  • See the page about the runtime-library for limits specific to some API-functions

Standard-library

  • The data-types double (cl_khr_fp64), half (cl_khr_fp16) and long are unsupported, since the VideoCore IV GPU only provides 32-bit instructions.
  • Most of the mathematical functions are untested, have bad performance or wrong edge-case behavior

Compiler

  • The data-types double (cl_khr_fp64), half (cl_khr_fp16) and long are unsupported, since the VideoCore IV GPU only provides 32-bit instructions.
  • if the CLang used is updated, the PCH and modules file (target vc4cl-stdlib) need to be rebuilt (see here).

Machine code module

  • Supports modules (compilation units) with up to 1024 kernels, 8 MB of global data and 512 kB maximum stack-frame
  • Kernels support names with up to 1024 characters, 32 MB of code size and a maximum code offset of 128 MB (e.g. the last kernel starting at position 128 MB)
  • Parameters support a maximum of 4k characters for both parameter-name and type-name
  • Parameters support types (i.e. structs) with up to 4KB of size
Clone this wiki locally