• How benchmarks guided Codex to faster kernels in AltaLux V2

    The AltaLux V2 plugin enhances image processing through a multi-layered approach using CLAHE, improving local contrast but requiring more computation. Optimization focused on kernel vectorization using SIMD, with benchmarks guiding performance. The process revealed limitations of SIMD in certain operations and transitioned from SSE2 to SSSE3 for efficiency, ensuring an…

  • AltaLux 1.9.1.92: major update for performance, correctness, and documentation

    Version 1.9.1.92 represents the most significant update to AltaLux since its initial release. This version brings critical bug fixes, substantial performance improvements, comprehensive documentation, and enhanced user experience. Critical Bug Fix: Color Preservation The Problem Previous versions used an incorrect algorithm for preserving color when applying luminance enhancements. The old…

  • Parallel loops in the AltaLux kernel

    The AltaLux plugin for IrfanView is now open-source (here is the GitHub link) and it is worth analyzing the different methods used for parallelizing the computational kernel. The filter factory, contained in the CAltaLuxFilterFactory files, can create one of four possible instance types (actually there’s a fifth one that you…

  • Further multi-thread processing with Delphi

    In a previous article named “Easy multi-thread programming Delphi“, the AsyncCalls library was used to process multiple images at the same time. However, the processing of every single image was still strictly serial, even if image processing kernels are quite easy to accelerate spreading the load over multiple threads. In…

  • Easy multi-thread programming with Delphi

    In the AltaPixShare software app, when the user drags a group of images to the target location, the following code iterates over the list of images, and for each image creates the destination file: {CODE brush: delphi; ruler: true;}for i := 0 to Pred(ActiveImages.Count) do begin try CurrentImage := TProcessedImage(ActiveImages[i]);…

  • Multi-thread loops with Intel TBB

    A new article about using Intel TBB is here. It contains examples using C++ lambdas and joining multi-threaded loops with SIMD code In this article we will transform a plain C loop into a multi-threaded version using Intel Thread Building Blocks library (TBB). Here is the loop to transform: {CODE…