Cool Stuff: Parallel Programming

I often mention “cool stuff” in talks – this page is a link to more information for various “cool stuff” so you can connect with the material directly.

This page is an early work-in-progress

Learn SYCL in an Hour (Maybe Less)

My webinar “Learn SYCL in an Hour (Maybe Less)” is available to watch whenever you like. 

In order to follow along yourself and get the most out of the experience, you should do the following first:

  1. Create an account (or sign-in) at cloud.intel.com.
    To get an account – click “Get Started” and select “Standard = Free” by clicking “Subscribe” and following the prompts to create a free account.
    Once you have an account, verify it works by logging in and launching a Jupyter notebook by clicking the “Launch JupyterLab” in the upper right of the web page console.cloud.intel.com/training.
  2. Download a free copy of the SYCL book (2nd Edition, PDF format).

You are ready to follow along with the webinar, and learn SYCL in under an hour. Plus, you have the added bonus of having an account where you can continue to try writing and running SYCL applications even after the webinar.

As an alternative, you are welcome to use any system with a SYCL compiler installed. We will not have time to help you get that setup so we recommend using the Intel Developer Cloud online as an easy way to ensure you are ready to go.

If you want to get a jump on class – you can go ahead and clone the repo, and then compile and run the program. Here are the exact commands to do that (assuming Linux and a standard Intel tools installation):

git clone --recursive --branch sc23 https://github.com/codeplaysoftware/syclacademy.git
cd syclacademy/Code_Exercises/Exercise_01_Big_Hello_SYCL/
source /opt/intel/oneapi/setvars.sh
cp ../Images/goldfish.png .
icpx -fsycl -o tiny tiny.cpp
./tiny
icpx -fsycl solution.cpp
./a.out goldfish.png

Latest tools from Intel:  2024.0

Software developers around the world rely on these excellent products from Intel – for serious AI, HPC, and enterprise-level applications.  The full functionality of all tools is available free of charge to everyone.  Standards mean nothing if they are not backed by high-quality implementations – therefore, for more than three decades, Intel has delivered high-quality support of standards including C, C++, Fortran, Python, OpenMP, MPI, SYCL, oneAPI, and more.

The official download site is intel.com/content/www/us/en/developer/tools/oneapi/toolkits.html

My introductory blog is at 2024-tools-standards-perf-dependable-innovation.html

Intel Developer Cloud

Sign up for immediate access to the latest Intel technology without downloads or hardware setup.

Training courses are available for free.  Visit https://console.cloud.intel.com/training after you sign-up (free at https://cloud.intel.com).

The material for our SC23 tutorial, using Intel Developer Cloud, can be accessed starting at tinyurl+getdevcloud.

UXL: Unified Accelerator Foundation

The Unified Acceleration (UXL) Foundation exists to define a standards-based, cross-architecture open specification for accelerated computing and to foster the open-source implementations of the specification.

More information can be found at https://github.com/uxlfoundation/foundation.

The community is invited to join the meetings, review the oneAPI Specification, and read the information in this repo. Contributions can be made by joining the Special Interest Groups (SIGs) or posting comments or questions as GitHub issues. General questions can go to this repo, and issues specific to parts of the specification can go to the Specification repo.

The public calendar of UXL Foundation meetings is available using Google Calendar.

Learn about SYCL​ (https://sycl.tech)

Several Books by James Reinders

Download the book – https://link.springer.com/book/10.1007/978-1-4842-9691-2

Visit sycl.tech – a site that has emerged as an unequaled resource for SYCL programmers.

Background material

Recommended reading: “A New Golden Age for Computer Architecture

by John L. Hennessy, David A. Patterson
Communications of the ACM, February 2019, Vol. 62 No. 2, Pages 48-60
10.1145/3282307

Additional resources

CUDA to SYCL information (training, examples, etc.)

Raytracing From CUDA to DPC++ (C++ with SYCL)

Shao Voon Wong, Singapore

Extends the Original Ray Tracing in One Weekend: The Book Series exercise to GPUs via CUDA and SYCL, and shares the experience (and code) in doing so.  A very informative read! This is a walk-through of converting a code from parallel ray-tracing code to CUDA, and the work needed to make that CUDA code run on CPU using parallel for_each() and then converted the code to SYCL 2020 using the DPC++ compiler (LLVM C++ with SYCL support).

oneAPI GPU Optimization Guide Developer Guide

Each section of the GPU optimization guide focuses on different topics to guide the creation of optimized solutions.

Michel Migdal’s talk (video) on “From CUDA to SYCL”

https://youtube.com/watch?v=QQB3k6jwwe8%3Fwmode%3Dtransparent%26start%3D15%26jqoemcache%3D9xWWS

(his slides are online as well)

Evaluation of Intel’s DPC++ Compatibility Tool in heterogeneous computing

by Germán Castañoa, Youssef Faqir-Rhazouia, Carlos Garcíaab, Manuel Prieto-Matíasab
Journal of Parallel and Distributed Computing
Volume 165, July 2022, Pages 120-129
10.1016/j.jpdc.2022.03.017