Hi Josef, Thanks for the CC.
@Aryan Please find my responses inline below. On Monday, February 23rd, 2026 at 4:26 PM, Josef Melcr <[email protected]> wrote: > Hi Aryan, > > not a mentor, just wanted to let you know that you are in the correct > place to discuss this :) I cc'd the mentors of this project, but please > be patient, mentors are busy people. > > > Best regards, > > Josef > > On 2/23/26 4:03 PM, Aryan Jain via Gcc wrote: > > Hi, > > > > Just wanted to follow up on this in case it got buried! Or if there is an > > alternative mode of communication which is preferred! > > > > Thanks, > > Aryan. > > > > Sent from Outlook for iOS<https://aka.ms/o0ukef> > > ________________________________ > > From: Aryan Jain <[email protected]> > > Sent: Saturday, February 21, 2026 11:57:17 PM > > To: [email protected] <[email protected]> > > Subject: GSoC 2026: Interest in libgomp Optimizations for Scheduler-Guided > > OpenMP Execution in Cloud VMs > > > > Hello, > > > > My name is Aryan Jain, and I am a computer science student at Nanyang > > Technological University (Singapore). I am writing to express my > > interest in contributing to the "Libgomp Optimizations for Scheduler > > Guided OpenMP Execution in Cloud VMs" project as a GSoC 2026 > > contributor. > > > > I have been preparing by going through the following steps: > > > > - Watched Himadri's FOSDEM 2026 talk on the project and read through > > the slides. I found the Phantom vCPU concept and the pv-barrier-sync > > approach very interesting, particularly how paravirtualized scheduling > > insights can inform per-thread spin vs. block decisions at barriers. Thanks for watching the talk and your interest in the project. > > - Successfully checked out the GCC source from Git and built it from > > source using --disable-bootstrap. Ran the testsuite. Great start. Next, you can load the libgomp from your GCC build with your test OpenMP program. > > - Wrote and compiled a few basic OpenMP programs with -fopenmp to > > familiarize myself with parallel regions, barriers, and environment > > variables like OMP_NUM_THREADS and OMP_WAIT_POLICY. I also suggest playing with the EPCC benchmarks [1] [1] https://github.com/EPCCed/epcc-openmp-microbenchmarks/ > > - Browsed the libgomp source code, specifically parallel.c > > (gomp_resolve_num_threads), env.c (environment variable parsing), and > > the barrier implementation. > > Awesome. For GOMP_OMP_DYNAMIC_POLICY, the next places to look at would be the gomp_dynamic_max_threads() function. And for the pvsched OMP_WAIT_POLICY, the next place to look at would be wait.h. bar.c, and bar.h. It would also be useful to get yourself familiarized with the functions gomp_team_start() and gomp_thread_start(). > > My background is in C/C++ systems programming. I have experience with > > concurrency, low-latency systems design, and GPU programming (CUDA on > > NVIDIA A100s). I am comfortable working with large codebases and have > > a solid understanding of OS scheduling concepts. > > Good to know :). > > I have a few questions to help me get started: > > > > 1. Are there any additional papers or resources beyond the FOSDEM talk > > that would help me understand the Phantom Tracker mechanism in more > > depth? This work is yet to be published in an academic venue. However, the final version of my PhD dissertation will become available by March 16. In the meantime, the (awful) placeholder version with stale results is available here [2]. [2] https://inria.hal.science/tel-05438117v1 > > 2. Is there a good starter task or small bug fix in the libgomp area > > that I could work on to familiarize myself with the contribution > > workflow? The obvious place to start would be [3]. Maybe Tobias or Thomas add more about the workflow if necessary. For the project specific first task, I suggest building OpenMP implementation of UA (from the NAS benchmarks [4]) with your custom libgomp build and running it with input class B. [3] https://gcc-newbies-guide.readthedocs.io/en/latest/ [4] https://www.nas.nasa.gov/software/npb.html > > 3. For the GOMP_DYNAMIC_POLICY deliverable , would the paravirtualized > > scheduling information come through an existing kernel interface > > (e.g., /proc or a hypercall), or is that part of what needs to be > > designed? > > We are currently discussing whether to include Phantom Tracker as a deliverable for the project. If we decide to do it, then the work will include: 1. the core logic implementation in eBPF 2. cleaning up / refactoring of an existing host-guest shared kernel memory driver for QEMU Whether to include this deliverable primarily depends on the availability of an eBPF expert to join the project as a co-mentor. If you don't see an update on the GCC project page regarding this by the time the applications open (March 16), then it is safe to assume that the Phantom Tracker is not a deliverable and I will be implementing it by myself. Thanks, Himadri
