Nicholas Ng

dblp:44/9716 · DBLP profile ↗
← Back
12ranked-venue papers
5as first author
0since 2021 · last 2019
—ORCID · none

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 7 · 3 first-authorArtificial intelligence and machine learning · 1Systems, architecture and hardware · 1Graphics, computer vision, multimedia, augmented reality and games · 1

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
4 papers
Programming languages and type systems · 57% Concurrent programming · 22% Program verification · 20%
Computer architecture, parallel and distributed computing, and storage systems
2 papers
Parallel and multicore computing · 46% Distributed systems · 27% Interconnection networks and networks-on-chip · 27%

Topics — the 13 heaviest of 14, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Programming languages and type systems
type systems
0.522019
Distributed programming using role-parametric session types in go: statically-typed endpoint APIs for dynamically-instantiated communication structures · Proc. ACM Program. Lang. 2019
Fencing off go: liveness and safety for channel-based programming · POPL 2017
Programming languages and type systems › type systems › behavioral type systems
multiparty session types
0.412019
Distributed programming using role-parametric session types in go: statically-typed endpoint APIs for dynamically-instantiated communication structures · Proc. ACM Program. Lang. 2019
Programming languages and type systems › type systems › behavioral type systems
session types
0.412019
Distributed programming using role-parametric session types in go: statically-typed endpoint APIs for dynamically-instantiated communication structures · Proc. ACM Program. Lang. 2019
Distributed systems
distributed programming
0.412019
Distributed programming using role-parametric session types in go: statically-typed endpoint APIs for dynamically-instantiated communication structures · Proc. ACM Program. Lang. 2019
Interconnection networks and networks-on-chip › interprocessor communication
message passing protocol
0.412019
Distributed programming using role-parametric session types in go: statically-typed endpoint APIs for dynamically-instantiated communication structures · Proc. ACM Program. Lang. 2019
Concurrent programming
message passing
0.312018
A static verification framework for message passing in Go using behavioural types · ICSE 2018
Program verification
static verification
0.312018
A static verification framework for message passing in Go using behavioural types · ICSE 2018
Programming languages and type systems › concurrent programming languages
channel-based concurrency
0.312017
Fencing off go: liveness and safety for channel-based programming · POPL 2017
Concurrent programming
deadlock detection
0.312017
Fencing off go: liveness and safety for channel-based programming · POPL 2017
Program verification
protocol verification
0.212015
Protocol-based verification of message-passing parallel programs · OOPSLA 2015
Parallel and multicore computing › parallel programming models
message passing
0.212015
Protocol-based verification of message-passing parallel programs · OOPSLA 2015
Parallel and multicore computing
MPI
0.212015
Protocol-based verification of message-passing parallel programs · OOPSLA 2015
Parallel and multicore computing
parallel programming models
0.212015
Protocol-based verification of message-passing parallel programs · OOPSLA 2015

Methods — techniques the papers use, named apart from their topics

endpoint projection · 0.8API generation · 0.8behavioral types · 0.6software verification · 0.4dependent type system · 0.4process calculi · 0.3session types · 0.3
YearPublicationVenuePosition
2019 Distributed programming using role-parametric session types in go: statically-typed endpoint APIs for dynamically-instantiated communication structures
abstract
This paper presents a framework for the static specification and safe programming of message passing protocols where the number and kinds of participants are dynamically instantiated. We develop the first theory of distributed multiparty session types (MPST) to support parameterised protocols with indexed roles—our framework statically infers the different kinds of participants induced by a protocol definition as role variants, and produces decoupled endpoint projections of the protocol onto each variant. This enables safe MPST-based programming of the parameterised endpoints in distributed settings: each endpoint can be implemented separately by different programmers, using different techniques (or languages). We prove the decidability of role variant inference and well-formedness checking, and the correctness of projection. We implement our theory as a toolchain for programming such role-parametric MPST protocols in Go. Our approach is to generate API families of lightweight, protocol- and variant-specific type wrappers for I/O. The APIs ensure a well-typed Go endpoint program (by native Go type checking) will perform only compliant I/O actions w.r.t. the source protocol. We leverage the abstractions of MPST to support the specification and implementation of Go applications involving multiple channels, possibly over mixed transports (e.g., Go channels, TCP), and channel passing via a unified programming interface. We evaluate the applicability and run-time performance of our generated APIs using microbenchmarks and real-world applications.
David Castro-Perez, Raymond Hu, Sung-Shik Jongmans, Nicholas Ng, Nobuko Yoshida
Proc. ACM Program. Lang.4
2018 An Improvement to Discrete Fuzzy Logic Control
abstract
A method of improving the performance of discrete fuzzy logic control (FLC) when applied to different systems will be proposed in this paper. Improvements to the controller performance have been made in terms of steady state error, lowered ripple heights, and decreased settling time, particularly with respect to a multi-machine power system. Regarding our methodology, a truth-table was first pre-calculated, allowing direct mapping of given inputs to a suitable output following basic fuzzy logic operations. Next, a novel method of increasing the resolution of the FLC when the output nears the reference signal was implemented. Finally, simulations were run to prove the effectiveness of the proposed method compared to conventional control schemes in both linear and non-linear systems.
Saw Jing Wen, Nicholas Ng, Choo Min Lim
ICARCV2
2018 A static verification framework for message passing in Go using behavioural types
abstract
The Go programming language has been heavily adopted in industry as a language that efficiently combines systems programming with concurrency. Go's concurrency primitives, inspired by process calculi such as CCS and CSP, feature channel-based communication and lightweight threads, providing a distinct means of structuring concurrent software. Despite its popularity, the Go programming ecosystem offers little to no support for guaranteeing the correctness of message-passing concurrent programs.
Julien Lange, Nicholas Ng, Bernardo Toninho, Nobuko Yoshida
ICSE2
2017 Fencing off go: liveness and safety for channel-based programming
abstract
Go is a production-level statically typed programming language whose design features explicit message-passing primitives and lightweight threads, enabling (and encouraging) programmers to develop concurrent systems where components interact through communication more so than by lock-based shared memory concurrency. Go can only detect global deadlocks at runtime, but provides no compile-time protection against all too common communication mismatches or partial deadlocks.
Julien Lange, Nicholas Ng, Bernardo Toninho, Nobuko Yoshida
POPL2
2016 Static deadlock detection for concurrent go by global session graph synthesis
abstract
Go is a programming language developed at Google, with channel-based concurrent features based on CSP. Go can detect global communication deadlocks at runtime when all threads of execution are blocked, but deadlocks in other paths of execution could be undetected. We present a new static analyser for concurrent Go code to find potential communication errors such as communication mismatch and deadlocks at compile time. Our tool extracts the communication operations as session types, which are then converted into Communicating Finite State Machines (CFSMs). Finally, we apply a recent theoretical result on choreography synthesis to generate a global graph representing the overall communication pattern of a concurrent program. If the synthesis is successful, then the program is free from communication errors. We have implemented the technique in a tool, and applied it to analyse common Go concurrency patterns and an open source application with over 700 lines of code.
Nicholas Ng, Nobuko Yoshida
CC1
2016 EURECA compilation: Automatic optimisation of cycle-reconfigurable circuits
abstract
EURECA architectures have been proposed as an enhancement to existing FPGAs, to enable cycle-by-cycle reconfiguration. Applications with irregular data accesses, which previously cannot be efficiently supported in hardware, can be efficiently mapped into EURECA architectures. One major challenge to apply the EURECA architectures to practical applications is the intensive design efforts required to analyse and optimise cycle-reconfigurable operations, in order to obtain accurate and high-performance results while underlying circuits reconfigure cycle by cycle. This work proposes novel compiler support for EURECA-based designs. The compiler adopts (a) techniques based on session types to automatically derive a runtime reconfiguration scheduler that guarantees design correctness, and (b) a streaming circuit model to ensure high-performance circuits. Three benchmark applications —large-scale sorting, Memcached, and Sparse Matrix Vector Multiplication (SpMV)— developed with the proposed compiler support show up to 11.2 times (21.8 times when architecture scales) reduction in area-delay product when compared with conventional architectures, and achieve up to 39% improvements compared with manually optimised EURECA designs.
Xinyu Niu, Nicholas Ng, Tomofumi Yuki, Nobuko Yoshida, Wayne Luk
FPL2
2015 Protocols by Default - Safe MPI Code Generation Based on Session Types
Nicholas Ng, José Gabriel F. Coutinho, Nobuko Yoshida
CC1
2015 Protocol-based verification of message-passing parallel programs
abstract
We present ParTypes, a type-based methodology for the verification of Message Passing Interface (MPI) programs written in the C programming language. The aim is to statically verify programs against protocol specifications, enforcing properties such as fidelity and absence of deadlocks. We develop a protocol language based on a dependent type system for message-passing parallel programs, which includes various communication operators, such as point-to-point messages, broadcast, reduce, array scatter and gather. For the verification of a program against a given protocol, the protocol is first translated into a representation read by VCC, a software verifier for C. We successfully verified several MPI programs in a running time that is independent of the number of processes or other input parameters. This contrasts with alternative techniques, notably model checking and runtime verification, that suffer from the state-explosion problem or that otherwise depend on parameters to the program itself. We experimentally evaluated our approach against state-of-the-art tools for MPI to conclude that our approach offers a scalable solution.
Hugo A. López 0001, Eduardo R. B. Marques, Francisco Martins, Nicholas Ng, César Augusto Ribeiro dos Santos, Vasco Thudichum Vasconcelos, Nobuko Yoshida
OOPSLA4
2015 Pabble: parameterised Scribble
abstract
Many parallel and distributed message-passing programs are written in a parametric way over available resources, in particular the number of nodes and their topologies, so that a single parallel program can scale over different environments. This article presents a parameterised protocol description language, Pabble , which can guarantee safety and progress in a large class of practical, complex parameterised message-passing programs through static checking. Pabble can describe an overall interaction topology, using a concise and expressive notation, designed for a variable number of participants arranged in multiple dimensions. These parameterised protocols in turn automatically generate local protocols for type checking parameterised MPI programs for communication safety and deadlock freedom. In spite of undecidability of endpoint projection and type checking in the underlying parameterised session type theory, our method guarantees the termination of end point projection and type checking.
Nicholas Ng, Nobuko Yoshida
Serv. Oriented Comput. Appl.1
2014 Pabble: Parameterised Scribble for Parallel Programming
abstract
Many parallel and distributed message-passing programs are written in a parametric way over available resources, in particular the number of nodes and their topologies, so that a single parallel program can scale over different environments. This paper presents a parameterised protocol description language, Pabble, which can guarantee safety and progress in a large class of practical, complex parameterised message-passing programs through static checking. Pabble can describe an overall interaction topology, using a concise and expressive notation, designed for a variable number of participants arranged in multiple dimensions. These parameterised protocols in turn automatically generate local protocols for type checking parameterised MPI programs for communication safety and deadlock freedom. In spite of undecidability of endpoint projection and type checking in the underlying parameterised session type theory, our method guarantees the termination of endpoint projection and type checking.
Nicholas Ng, Nobuko Yoshida
PDP1
2012 Verification of MPI Programs Using Session Types
Kohei Honda 0001, Eduardo R. B. Marques, Francisco Martins, Nicholas Ng, Vasco Thudichum Vasconcelos, Nobuko Yoshida
EuroMPI4
2011 Safe Parallel Programming with Session Java
Nicholas Ng, Nobuko Yoshida, Olivier Pernet, Raymond Hu, Yiannos Kryftis
COORDINATION1