SOCL: An OpenCL Implementation with Automatic Multi-Device Adaptation Support

To fully tap into the potential of today's heterogeneous machines, offloading parts of an application on accelerators is not sufficient. The real challenge is to build systems where the application would permanently spread across the entire machine, that is, where parallel tasks would be dynamically scheduled over the full set of available processing units. In this report we present SOCL, an OpenCL implementation that improves and simplifies the programming experience on heterogeneous architectures. SOCL enables applications to dynamically dispatch computation kernels over processing devices so as to maximize their utilization. OpenCL applications can incrementally make use of light extensions to automatically schedule kernels in a controlled manner on multi-device architectures. A preliminary automatic granularity adaptation extension is also provided. We demonstrate the relevance of our approach by experimenting with several OpenCL applications on a range of representative heterogeneous architectures. We show that performance portability is enhanced by using SOCL extensions.

Data and Resources

Additional Info

Field Value
Source https://inria.hal.science/hal-00853423
Author Henry, Sylvain, Barthou, Denis, Denis, Alexandre, Namyst, Raymond, Counilh, Marie-Christine
Maintainer CCSD
Last Updated May 10, 2026, 01:07 (UTC)
Created May 10, 2026, 01:07 (UTC)
Identifier Report N°: RR-8346
Language en
Rights https://about.hal.science/hal-authorisation-v1/
contributor Laboratoire Bordelais de Recherche en Informatique (LaBRI) ; Université de Bordeaux (UB)-École Nationale Supérieure d'Électronique, Informatique et Radiocommunications de Bordeaux (ENSEIRB)-Centre National de la Recherche Scientifique (CNRS)
creator Henry, Sylvain
date 2013-08-22T00:00:00
harvest_object_id 5ab7a01f-f774-4fa8-b55d-5aeb0e956ee7
harvest_source_id 3374d638-d20b-4672-ba96-a23232d55657
harvest_source_title test moissonnage SELUNE
metadata_modified 2026-03-04T00:00:00
set_spec type:REPORT