VLDB 2026 Research / reviewers in the wild / expert
Junchao Zhang 0002
dblp:03/4135-2
· DBLP profile ↗
10ranked-venue papers
3as first author
4since 2021 · last 2025
0000-0003-0367-2358ORCID · verified
Domains — the database's venue-derived domains; a paper can count in several
Systems, architecture and hardware · 7 · 3 first-author · 2 since 2021Theory of computation · 1 · 1 since 2021Applied, interdisciplinary, general and emerging computing · 1
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2025 | Towards Seamless Interoperability of MPI-OpenMP ApplicationsabstractA chasm exists between mathematical software libraries written for MPI-based applications and those written for OpenMP applications. Recently, however, PETSc enables the simple use of its MPI-based linear solvers from OpenMP applications. Separately, the MPICH MPI development team has started a new project to allow almost seamless MPI use in OpenMP applications. Both proposed approaches would result in a similar user experience. We discuss the reasons for these projects and their potential for providing more numerical library choices for OpenMP applications, including the unlimited assortment of linear solvers available in PETSc. In addition, we present the performance of an application using the first approach, demonstrating its efficacy. Barry Smith 0002, Marsha J. Berger, Junchao Zhang 0002, Hui Zhou 0012 |
ACM Trans. Math. Softw. | 3 |
| 2023 | Frustrated With MPI+Threads? Try MPIxThreads!abstractMPI + Threads, embodied by the MPI/OpenMP hybrid programming model, is a parallel programming paradigm where threads are used for on-node shared-memory parallelization and MPI is used for multi-node distributed-memory parallelization. OpenMP provides an incremental approach to parallelize code, while MPI, with its isolated address space and explicit messaging API, affords straightforward paths to obtain good parallel performance. However, MPI + Threads is not an ideal solution. Since MPI is unaware of the thread context, it cannot be used for interthread communication. This results in duplicated efforts to create separate and sometimes nested solutions for similar parallel tasks. In addition, because the MPI library is required to obey message-ordering semantics, mixing threads and MPI via MPI_THREAD_MULTIPLE can easily result in miserable performance due to accidental serializations. Hui Zhou 0012, Kenneth Raffenetti, Junchao Zhang 0002, Yanfei Guo, Rajeev Thakur |
EuroMPI | 3 |
| 2022 | The PetscSF Scalable Communication LayerabstractPetscSF, the communication component of the Portable, Extensible Toolkit for Scientific Computation (PETSc), is designed to provide PETSc's communication infrastructure suitable for exascale computers that utilize GPUs and other accelerators. PetscSF provides a simple application programming interface (API) for managing common communication patterns in scientific computations by using a star-forest graph representation. PetscSF supports several implementations based on MPI and NVSHMEM, whose selection is based on the characteristics of the application or the target architecture. An efficient and portable model for network and intra-node communication is essential for implementing large-scale applications. The Message Passing Interface, which has been the de facto standard for distributed memory systems, has developed into a large complex API that does not yet provide high performance on the emerging heterogeneous CPU-GPU-based exascale systems. In this article, we discuss the design of PetscSF, how it can overcome some difficulties of working directly with MPI on GPUs, and we demonstrate its performance, scalability, and novel features. Junchao Zhang 0002, Jed Brown, Satish Balay, Jacob Faibussowitsch, Matthew G. Knepley, Oana Marin, Richard Tran Mills, Todd S. Munson, Barry Smith 0002, Stefano Zampini |
IEEE Trans. Parallel Distributed Syst. | 1 |
| 2021 | Toward performance-portable PETSc for GPU-based exascale systems
Richard Tran Mills, Mark F. Adams, Satish Balay, Jed Brown, Alp Dener, Matthew G. Knepley, Scott Kruger, Hannah Morgan, Todd S. Munson, Karl Rupp, Barry Smith 0002, Stefano Zampini, Hong Zhang 0006, Junchao Zhang 0002 |
Parallel Comput. | 14 |
| 2016 | Compiler-Assisted Overlapping of Communication and Computation in MPI ApplicationsabstractThe performance of distributed-memory applications, many of which are written in MPI, critically depends on how well the applications can ameliorate the long latency of data movement by overlapping them with ongoing computations, thereby minimizing wait time. This paper presents a study of the various optimization techniques to enable such overlapping in large MPI applications and presents a framework that uses an analytical performance model and an optimizing compiler to systematically enable a majority of such optimizations. In particular, we first generate an analytical performance model of the application execution flow to automatically identify potential communication hot spots that may induce long wait time. Next, for each communication hot spot, we search the execution flow graph to find surrounding loops that include sufficient local computation to overlap with the communication. Then, blocking MPI communications are decoupled into non-blocking operations when necessary, and their surrounding loop is transformed to hide the communication latencies behind local computations. We evaluated our framework using 7 MPI applications from the NAS benchmark suite. Our optimizations can attain 3% to 72% speedup over the original implementations. Jichi Guo, Qing Yi, Jiayuan Meng, Junchao Zhang 0002, Pavan Balaji |
CLUSTER | 4 |
| 2015 | Implementation and Evaluation of MPI Nonblocking Collective I/OabstractThe well-known gap between relative CPU speeds and storage bandwidth results in the need for new strategies for managing I/O demands. In large-scale MPI applications, collective I/O has long been an effective way to achieve higher I/O rates, but it poses two constraints. First, although overlapping collective I/O and computation represents the next logical step toward a faster time to solution, MPI's existing collective I/O API provides only limited support for doing so. Second, collective routines (both for I/O and communication) impose a synchronization cost in addition to a communication cost. The upcoming MPI 3.1 standard will provide a new set of nonblocking collective I/O operations to satisfy the need of applications. We present here initial work on the implementation of MPI nonblocking collective I/O operations in the MPICH MPI library. Our implementation begins with the extended two-phase algorithm used in ROMIO's collective I/O implementation. We then utilize a state machine and the extended generalized request interface to maintain the progress of nonblocking collective I/O operations. The evaluation results indicate that our implementation performs as well as blocking collective I/O in terms of I/O bandwidth and is capable of overlapping I/O and other operations. We believe that our implementation can help users try nonblocking collective I/O operations in their applications. Robert Latham, Junchao Zhang 0002, Pavan Balaji |
CCGRID | 3 |
| 2015 | Analyzing MPI-3.0 Process-Level Shared Memory: A Case Study with Stencil ComputationsabstractThe recently released MPI-3.0 standard introduced a process-level shared-memory interface which enables processes within the same node to have direct load/store access to each others' memory. Such an interface allows applications to declare data structures that are shared by multiple MPI processes on the node. In this paper, we study the capabilities and performance implications of using MPI-3.0 shared memory, in the context of a five-point stencil computation. Our analysis reveals that the use of MPI-3.0 shared memory has several unforeseen performance implications including disrupting certain compiler optimizations and incorrectly using suboptimal page sizes inside the OS. Based on this analysis, we propose several methodologies for working around these issues and improving communication performance by 40-85% compared to the current MPI-1.0 based approach. Junchao Zhang 0002, Kazutomo Yoshii, Shigang Li 0002, Yunquan Zhang, Pavan Balaji |
CCGRID | 2 |
| 2015 | Automatic tuning of sparse matrix-vector multiplication on multicore clusters
Shigang Li 0002, Changjun Hu, Junchao Zhang 0002, Yunquan Zhang |
Sci. China Inf. Sci. | 3 |
| 2015 | Design of a Multithreaded Barnes-Hut Algorithm for Multicore ClustersabstractWe describe in this paper an implementation of the Barnes-Hut algorithm on multicore clusters. Based on a partitioned global address space (PGAS) library, the design integrates intranode multithreading and internode one-sided communication, exemplifying a PGAS + X programming style. Within a node, the computation is decomposed into tasks (subtasks) and multitasking is used to hide network latency. We study the tradeoffs between locality in private caches and locality in shared caches and bring the insights into the design. As a result, our implementation consumes less memory per core, invokes less internode communication, and enjoys better load-balancing strategies. The final code achieves up to 41 percent performance improvement over a non-multithreaded counterpart. Through detailed comparison, we also show its advantages over other well-known Barnes-Hut implementations, both in programming complexity and in performance. Junchao Zhang 0002, Babak Behzad, Marc Snir |
IEEE Trans. Parallel Distributed Syst. | 1 |
| 2011 | Optimizing the Barnes-Hut algorithm in UPCabstractPGAS languages' support of a global name space facilitates the expression of parallel algorithms, since communication is implicit. This is especially convenient when writing irregular applications with data-dependent, dynamically changing communication patterns. However, programming in a shared memory style, with no explicit control of communication, may result in poor performance. The problem may be due to weaknesses of current implementations of PGAS languages or limitations inherent in these languages. To clarify which is the case, we discuss an implementation in UPC of the Barnes-Hut algorithm. A literal port of a good quality shared-memory implementation (merely replacing shared arrays with partitioned global arrays) achieves abysmal performance -- more than 1000 times worse than a message-passing implementation. We achieve in UPC a performance comparable to message-passing with a series of optimizations. Most of these optimizations could be performed with limited changes in the source code using an enhanced run-time and a few language extensions or pragmas. We discuss the implications to the programmer, the compiler and PGAS languages themselves. Junchao Zhang 0002, Babak Behzad, Marc Snir |
SC | 1 |