Design and Implementation of ShenWei Universal C/C++

08/01/2022
by   Huanqi Cao, et al.
0

The ShenWei many-core series processors powering multiple cutting-edge supercomputers are equipped with their unique on-chip heterogeneous architecture. They have long required programmers to write separate codes for the control part on Management Processing Element (MPE) and accelerated part on Compute Processing Element (CPE), which is similar to open standards like OpenCL. Such a programming model results in shattered code and bad maintainability, and also make it hard to migrate existing projects targeting commodity processors. Borrowing the experience from CUDA and DPC++ and leveraging the unique unified main memory on ShenWei many-core architecture, we propose ShenWei Universal C/C++ (SWUC), a language extension to C/C++ that enables fluent programming acrossing the boundary of MPE and CPE. Through the use of several new attributes and compiler directives, users are able to write codes running on MPE and CPE in a single file. In case of C++, SWUC further support lambda expressions on CPEs, making it possible to have the code flow better matching the logical design. SWUC also manages to make the Athread library interfaces available, easing the learning curve for original ShenWei users. These powerful features together ensures SWUC to simplify the programming on ShenWei many-core processors and migration of existing C/C++ applications.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
09/10/2023

O2ATH: An OpenMP Offloading Toolkit for the Sunway Heterogeneous Manycore Platform

The next generation Sunway supercomputer employs the SW26010pro processo...
research
07/19/2021

Dynamic Lockstep Processors for Applications with Functional Safety Relevance

Lockstep processing is a recognized technique for helping to secure func...
research
10/28/2020

ePython: An implementation of Python for the many-core Epiphany coprocessor

The Epiphany is a many-core, low power, low on-chip memory architecture ...
research
01/16/2023

Shared memory parallelism in Modern C++ and HPX

Parallel programming remains a daunting challenge, from the struggle to ...
research
05/05/2023

StarPlat: A Versatile DSL for Graph Analytics

Graphs model several real-world phenomena. With the growth of unstructur...
research
07/27/2019

SSDFS: Towards LFS Flash-Friendly File System without GC operation

Solid state drives have a number of interesting characteristics. However...
research
05/09/2022

Making ProB compatible with SWI-Prolog

Even though the core of the Prolog programming language has been standar...

Please sign up or login with your details

Forgot password? Click here to reset