Skip to content

Commit ac83831

Browse files
Adding Cling blog and video fix attempt
1 parent a6637d7 commit ac83831

File tree

5 files changed

+105
-80
lines changed

5 files changed

+105
-80
lines changed

.agent/workflows/run-server.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
---
2+
description: Run the Jekyll server with the correct Ruby environment
3+
---
4+
5+
1. Ensure the Ruby environment is loaded and start the Jekyll server.
6+
// turbo
7+
2. Run the server
8+
```powershell
9+
$env:PATH += ";C:\Ruby34-x64\bin"; bundle exec jekyll serve --config _configs/_config.yml
10+
```

Gemfile

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
source "https://rubygems.org"
22

3-
#gem "jekyll"
3+
gem "jekyll"
44

55
group :jekyll_plugins do
66
gem "jekyll-sitemap"
77
end
88

99
gem "tzinfo-data", platforms: [:mingw, :mswin, :x64_mingw, :jruby]
1010

11-
gem "wdm", "~> 0.1.1", :install_if => Gem.win_platform?
11+
gem "wdm", "~> 0.2.0", :install_if => Gem.win_platform?
12+
gem "webrick"
13+
gem "logger"
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
---
2+
title: "Interactive Heterogeneous Computing with Cling and SYCL"
3+
date: 2025-12-18
4+
layout: update
5+
tags:
6+
- root
7+
- cling
8+
- sycl
9+
- cern
10+
- llvm
11+
---
12+
13+
Cling, the interactive C++ interpreter, one of the core components of ROOT, is essential for exploratory data analysis in High Energy Physics. Before the SYCLOPS project, Cling was tied to an older LLVM toolchain and did not have proper support for modern heterogeneous programming models such as SYCL. CUDA was supported, but only in a limited and not very flexible way. As a result, users were mostly restricted to CPU workflows, and there was no straightforward way to experiment interactively with SYCL or accelerator oriented C++ inside ROOT or inside Jupyter.
14+
15+
During SYCLOPS, a large part of the work focused on modernising this foundation so that ROOT could eventually support interactive heterogeneous computing. The first major task was to upgrade the LLVM backend in Cling, first to LLVM 18 and later to LLVM 20. This was a difficult change because ROOT relies on a very large test suite, with more than three thousand tests accumulated over many years. These tests caught subtle regressions. The upgrade required changes in the JIT engine, in the incremental compilation logic, and in ROOT’s dictionary generation pipeline. Since all of these depend closely on LLVM internals, some upstreaming effort was also needed. This work was necessary in order to make ROOT compatible with newer C++ standards such as C++20 and also to prepare the ground for AdaptiveCpp, which requires a modern LLVM toolchain for SYCL code.
16+
17+
Once this modernisation was in place, we introduced SYCL support directly in Cling as part of the SYCLOPS effort, and this support has now been merged into ROOT starting with version 6.38. The feature is available when ROOT is built with the -Dexperimental_adaptivecpp flag. With this, users can write and run SYCL kernels interactively inside ROOT, which also means inside Jupyter notebooks. We prepared [simple tutorials](https://root.cern/doc/master/group__tutorial__heterogeneous.html) to help new users get started.
18+
19+
Functional testing and performance checks were carried out for both CPU (OpenMP) and GPU (CUDA) backends through the interpreter. The behaviour was consistent across both targets. We also validated the portability of the approach by building and running SYCL-Cling on RISC-V systems. This confirmed that the new infrastructure can serve as a general platform for heterogeneous development.
20+
21+
This reduces the entry barrier for physicists who want to try GPU acceleration without leaving the ROOT environment. The work also opens the door to teams at CERN and outside who are actively investigating heterogeneous computing models and need an environment where they can iterate quickly.
22+
23+
[![SYCL-Cling Video](https://img.youtube.com/vi/aEu7t0AQOb4/0.jpg)](https://youtu.be/aEu7t0AQOb4)

_includes/headers/expanded.html

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,17 @@ <h1>Advancing AI/data mining for extremely large and diverse data for Europe and
99
</div>
1010
<div class="middle">
1111
<div class="video">
12-
<a class="youtube"
13-
href="https://www.youtube.com/watch?v=-UZDfad-4eI"
14-
target="_blank"
15-
rel="noopener">Watch on YouTube.com</a>
12+
<a class="youtube" href="https://www.youtube.com/watch?v=-UZDfad-4eI" target="_blank"
13+
rel="noopener">Watch on YouTube.com</a>
1614

17-
<video controls muted autoplay>
18-
<source src="https://d25jew5a8evv5b.cloudfront.net/intro.mp4" type="video/mp4">
19-
</video>
15+
<iframe width="560" height="315"
16+
src="https://www.youtube.com/embed/-UZDfad-4eI?autoplay=1&mute=1&loop=1&playlist=-UZDfad-4eI"
17+
title="SYCLOPS Intro Video" frameborder="0"
18+
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
19+
allowfullscreen style="width: 100%; height: 100%;">
20+
</iframe>
2021
</div>
2122
</div>
2223
</div>
2324
</div>
24-
</section>
25+
</section>

_layouts/page.html

Lines changed: 59 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -8,40 +8,29 @@
88
{%- endif -%}
99

1010
<html lang="en">
11+
1112
<head>
1213
<title>{{site.title}}</title>
1314

1415
<!-- Meta -->
1516
<meta charset="UTF-8">
16-
<meta http-equiv="x-ua-compatible"
17-
content="ie=edge"/>
18-
<meta name="viewport"
19-
content="width=device-width, initial-scale=1"/>
20-
<meta name="description"
21-
content="{{site.description}}"/>
17+
<meta http-equiv="x-ua-compatible" content="ie=edge" />
18+
<meta name="viewport" content="width=device-width, initial-scale=1" />
19+
<meta name="description" content="{{site.description}}" />
2220

2321
<!-- Stylesheets -->
24-
<link rel="stylesheet"
25-
href="{{'/static/css/styled.css' | absolute_url}}">
26-
<link href="https://fonts.googleapis.com/icon?family=Material+Icons"
27-
rel="stylesheet">
28-
<link rel="preconnect"
29-
href="https://fonts.googleapis.com">
30-
<link rel="preconnect"
31-
href="https://fonts.gstatic.com"
32-
crossorigin>
22+
<link rel="stylesheet" href="{{'/static/css/styled.css' | absolute_url}}">
23+
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
24+
<link rel="preconnect" href="https://fonts.googleapis.com">
25+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
3326
<link href="https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,400;0,700;1,400;1,700&display=swap"
34-
rel="stylesheet">
35-
<link rel="icon"
36-
type="image/png"
37-
href="{{'favicon.png' | absolute_url}}"/>
27+
rel="stylesheet">
28+
<link rel="icon" type="image/png" href="{{'favicon.png' | absolute_url}}" />
3829

3930
<!-- Scripts -->
4031
<script src="https://code.jquery.com/jquery-3.7.1.min.js"
41-
integrity="sha256-/JqT3SQfawRcv/BIHPThkBvs0OEvtFFmqPF/lYI/Cxo="
42-
crossorigin="anonymous"></script>
43-
<script src="{{'/static/js/jquery.cookiesaccepted.js' | absolute_url}}"
44-
type="text/javascript"></script>
32+
integrity="sha256-/JqT3SQfawRcv/BIHPThkBvs0OEvtFFmqPF/lYI/Cxo=" crossorigin="anonymous"></script>
33+
<script src="{{'/static/js/jquery.cookiesaccepted.js' | absolute_url}}" type="text/javascript"></script>
4534

4635
<!-- Fathom -->
4736
<script src="https://cdn.usefathom.com/script.js" data-site="{{ site.fa }}" defer></script>
@@ -75,57 +64,57 @@
7564
data:
7665
https://cdn.usefathom.com;
7766
frame-src
78-
'self';"
79-
http-equiv="Content-Security-Policy"/>
67+
'self'
68+
https://www.youtube.com;" http-equiv="Content-Security-Policy" />
8069
</head>
70+
8171
<body>
82-
{%- if header == 'expanded' -%}
83-
{%- include _includes/headers/expanded.html -%}
84-
{%- else -%}
85-
{%- include _includes/headers/standard.html -%}
86-
{%- endif -%}
87-
<!-- Page Content Container -->
88-
<div id="content">
89-
{{ content }}
90-
</div>
72+
{%- if header == 'expanded' -%}
73+
{%- include _includes/headers/expanded.html -%}
74+
{%- else -%}
75+
{%- include _includes/headers/standard.html -%}
76+
{%- endif -%}
77+
<!-- Page Content Container -->
78+
<div id="content">
79+
{{ content }}
80+
</div>
9181

92-
<!-- Footer -->
93-
<section id="footer">
94-
<div class="wrapper">
95-
<div>
96-
<div class="copyright">&copy; Copyright {{ 'now' | date: "%Y" }} SYCLOPS</div>
97-
<div class="attribution">
98-
Codasip and the Codasip logo are registered trademarks or trademarks of Codasip Group.
99-
Codeplay and the Codeplay logo are registered trademarks of Codeplay Software Ltd.
100-
CERN and the CERN logo are trademarks and brand of EUROPEAN ORGANIZATION FOR NUCLEAR RESEARCH.
82+
<!-- Footer -->
83+
<section id="footer">
84+
<div class="wrapper">
85+
<div>
86+
<div class="copyright">&copy; Copyright {{ 'now' | date: "%Y" }} SYCLOPS</div>
87+
<div class="attribution">
88+
Codasip and the Codasip logo are registered trademarks or trademarks of Codasip Group.
89+
Codeplay and the Codeplay logo are registered trademarks of Codeplay Software Ltd.
90+
CERN and the CERN logo are trademarks and brand of EUROPEAN ORGANIZATION FOR NUCLEAR RESEARCH.
91+
</div>
92+
<div class="eu-funding">
93+
<img src="{{'static/images/eu-flag.svg' | absolute_url}}" alt="EU Flag" />
94+
This Horizon Europe Project "SYCLOPS" has received funding from the European Union HE Research and
95+
Innovation programme under grant agreement No 101092877. Codeplay Software, as a UK participant
96+
in this project is supported by UK Research and Innovation Scheme grant numbers 10048920.
97+
</div>
10198
</div>
102-
<div class="eu-funding">
103-
<img src="{{'static/images/eu-flag.svg' | absolute_url}}" alt="EU Flag" />
104-
This Horizon Europe Project "SYCLOPS" has received funding from the European Union HE Research and
105-
Innovation programme under grant agreement No 101092877. Codeplay Software, as a UK participant
106-
in this project is supported by UK Research and Innovation Scheme grant numbers 10048920.
99+
<div>
100+
<div class="socials">
101+
<a href="{{site.twitter}}" target="_blank" rel="noopener">
102+
<img src="{{'static/images/socials/twitter.svg' | absolute_url}}" alt="Twitter Icon"
103+
title="Visit our Twitter" />
104+
</a>
105+
<a href="{{site.youtube}}" target="_blank" rel="noopener">
106+
<img src="{{'static/images/socials/youtube.svg' | absolute_url}}" alt="YouTube Icon"
107+
title="Visit our YouTube" />
108+
</a>
109+
</div>
110+
<div class="policies">
111+
<a href="{{'cookies' | absolute_url}}">Cookie Policy</a>
112+
<a href="{{'privacy' | absolute_url}}">Privacy Policy</a>
113+
</div>
107114
</div>
108115
</div>
109-
<div>
110-
<div class="socials">
111-
<a href="{{site.twitter}}" target="_blank" rel="noopener">
112-
<img src="{{'static/images/socials/twitter.svg' | absolute_url}}"
113-
alt="Twitter Icon"
114-
title="Visit our Twitter" />
115-
</a>
116-
<a href="{{site.youtube}}" target="_blank" rel="noopener">
117-
<img src="{{'static/images/socials/youtube.svg' | absolute_url}}"
118-
alt="YouTube Icon"
119-
title="Visit our YouTube" />
120-
</a>
121-
</div>
122-
<div class="policies">
123-
<a href="{{'cookies' | absolute_url}}">Cookie Policy</a>
124-
<a href="{{'privacy' | absolute_url}}">Privacy Policy</a>
125-
</div>
126-
</div>
127-
</div>
128-
</section>
129-
{%- include _includes/cookies.html -%}
116+
</section>
117+
{%- include _includes/cookies.html -%}
130118
</body>
131-
</html>
119+
120+
</html>

0 commit comments

Comments
 (0)