Tips&Tricks

Image upscaling using convolutional neural networks in Vulkan

In the world of high-performance programming, true portable code has been a goal for a long time. Vulkan has been very successful at this, with Vulkan drivers being provided by every major GPU vendor and available for all common desktop and mobile operating systems. Platforms without first party support (e.g. Apple macOS/iOS) have compatibility layers […]

Image upscaling using convolutional neural networks in Vulkan Read More »

Basic Concepts: Writing OpenCL code for single and double precision

Support for double precision floating-point type double in OpenCL kernels requires an extension. AMD provides cl_khr_fp64 for newer high-edn hardware, but also a non-fully compliant cl_amd_fp64 extension for other hardware. NVIDIA and Intel support the cl_khr_fp64, so no exceptions need to be made for those drivers. The code you see bellow these lines is based

Basic Concepts: Writing OpenCL code for single and double precision Read More »

OpenCL Basics: Flags for the creating memory objects

In OpenCL large memory objects, residing in the main memory of the host or the global memory at the accelerator/GPU, need special treatment. First reason is that these memories are relatively slow. Second reason is that the most times serial copy of objects between these two memories take time. In this post I’d like to

OpenCL Basics: Flags for the creating memory objects Read More »

Targetting various architectures in OpenCL and CUDA

The question we aim to answer in this post is: “How to do you make software that performs on several platforms?”. Note: This article is not fully finished – I’ll add more information during the coming months. It’s busy here! Even in many Java-code you’ll find hard-coded filename-delimiters in the file-names, which then work on one

Targetting various architectures in OpenCL and CUDA Read More »