Hello, On Wed, Mar 27 2024, Soumya Ranjan wrote: > Hello! > Thanks for your response Martin! > Sorry for the late response, I've been researching the project, going over > the source code and preparing the proposal. After a lot of thought, I've > decided to go with the "Offloading to a separate process on the same host" > project, mostly because I feel like I've reasonable background on this > project, as I've worked on OpenMP, GPU Programming and have done coursework > on compilers and operating systems. Yes, I am no longer a student. I > recently graduated from the University of California, Irvine with a > master's degree in Computer Engineering (About 3 months back) and I've > recently joined Qualcomm as a firmware engineer. I realized that I have a > lot of free time, that I mostly spend playing video games, and I've always > wanted to get into open source development, so I thought this would be a > good opportunity, given how much I use gcc for everything. >
This sounds great. First, please note that timing of the GSoC contributor application deadline (on the upcoming Tuesday) is a bit unfortunate because of Easter, many involved mentors have a long weekend (public holiday on Friday or Monday or, like me, both). So please even if you do not receive any feedback, make sure to apply - and don't leave it until the last day. IIUC a proposal can be always updated later. I'll have to admit that I read your proposal only quickly and it makes sense. I'd just like to point out that the VGPU part is really a second (though perhaps much larger and interesting) part of the project, the first part would be to simulate a CPU-like accelerator with a separate memory. But most of this work would be necessary for VGPU part too. What is more, the VGPU part is likely to be hard, so if your time constraints allow it and doing both is your goal, I'd suggest to apply for an 350-hour (large) project. I'll see if I can cough out any more feedback in time but as I wrote above, generally it is good and don't wait - t least not with the initial application. Good luck! Martin > Why specifically this project - > OpenMP's support for offloading to physical GPUs broadens the horizon for > high-performance computing applications, the complexity of setting up such > environments and the lack of adequate tooling for development and debugging > can hinder productivity. The VGPU project directly addresses these > challenges by providing a developer-friendly offloading target that > emulates GPU execution on the host CPU, bridging the existing tooling gap > and significantly enhancing developer productivity in the realm of parallel > computing. > > Anyway, getting into the details of the project, from my understanding, the > goals are - > 1) To implement a virtual GPU (VGPU) environment that mirrors physical GPU > architecture including support for different levels of parallelism (warp, > thread block, etc.). > 2) To enable the VGPU to serve as an offload target within the LLVM/OpenMP > framework. This includes adding a host-ISA offloaded code generation mode > that allows the compilation of OpenMP applications using GPU-specific paths > and runtimes, facilitating a more accurate emulation of GPU environments. > 3) To implement a plugin for libgomp that communicates with the libgomp > offloading machinery to manage the execution of offloaded code in a new > process, simulating the behavior of actual GPU devices. > 4) To optimize the VGPU to ensure that OpenMP applications executed on it > incur minimal performance overhead compared to native host execution, > thereby making it a viable option for development and testing purposes. > > Here's a rough timeline (Based on the timeline on the gsoc website) - > Pre-coding (Until May 27) - > 1) Setting up a development environment including LLVM/OpenMP and necessary > debugging tools. > 2) Conducting thorough literature review on existing GPU simulation > techniques and OpenMP offloading mechanisms. > > Week 1-3: Initial Infrastructure > 1) Design VGPU architecture (simulate gpu parallel execution models (warps, > blocks) and memory hierarchy (global, shared, private)) > 2) Implement the core vgpu infrastructure, like basic memory management. > > Week 4-6: Integration with LLVM/OpenMP and Host-ISA Offload Mode > 1) Develop LLVM IR generation for VGPU target, thereby ensuring openMP > directives can be compiled into vgpu-compatible code. > 2) Add a new mode in the LLVM/OpenMP framework for generating offloaded > code specifically for the VGPU target. > 3) Get simple openMP applications to compile and execute on the VGPU. > > By Midterm evaluation, hopefully should have basic openmp applications > offloaded on the VGPU. > > Week 7-9: Extending functionality and Implementing libgomp Plugin > 1) Extend VGPU to support more functionality like loops, sections, parallel > blocks. > 2) Implement a plug-in for libgomp that interfaces with its offloading > machinery. > 3) Maybe look to integrate with debugging tools, so users can step through > offloaded regions and profile code. > > Week 10-12: Evaluation and Final Submission > 1) Benchmark against physical GPU's to evaluate the VGPU's performance. > 2) Prepare a final project report documenting the development process, > challenges, results and future work. > > I know this is a pretty high-level description, but I will try my best to > stick to this. This submission is mainly to go over the content. I would > appreciate any feedback I can get, and will make sure to submit a more > detailed description on my final submission. Awaiting your feedback. > Thanks, > Soumya Ranjan