ParaS is an implementation of the SYCL 2020 Specifications, developed to facilitate architectural and vendor neutral programming. It aims to achieve the principle of Code Once and Execute on All. The current version enables seamless execution across CPUs of x86 (Intel and AMD) and ARM as well as CUDA enabled NVIDIA GPUs.
Key Features of ParaS:
-
SYCL 2020 Standard Compliance: ParaS adheres closely to the SYCL standards, ensuring compatibility and enabling developers to leverage the extensive capabilities of SYCL for writing portable and efficient parallel code in modern C++.
-
Single-source Heterogeneous Programming: By supporting single-source programming, ParaS allows developers to write host and device code in the same file, significantly simplifying the development process and enhancing maintainability.
-
Multi-Backend Support: ParaS is engineered to support multiple hardware backends, including NVIDIA GPUs via the CUDA runtime and CPUs using the OpenMP runtime. This versatility enables developers to target a wide range of computing environments with a single, unified codebase, ensuring optimal performance and portability across different hardware platforms.
Bug Identified and Fixed:
-
parascc driver does not work when exported in $PATH:
Status: FIXED
Date: 03-JUN-2024
Description: The parascc driver executable was not functioning correctly when the directory containing it was added to the system's $PATH environment variable. Users were unable to invoke the parascc driver from any location within the terminal, resulting in an error indicating that the command was not found. The issue was resolved by modifying the driver's installation script to ensure proper handling of $PATH exports and executable permissions. -
device_getinfo() has extra spacing:
Status: FIXED
Date: 03-JUN-2024
Description: The device_getinfo() function was returning output with extraneous whitespace characters, leading to formatting inconsistencies and potential parsing issues in user applications. Specifically, the output string contained unnecessary spaces between data elements, which could cause problems when the information was used programmatically. The bug was fixed by adjusting the internal string formatting logic within the device_getinfo() function to eliminate the additional spaces and ensure clean, correctly formatted output.