Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data. A simulation from public publication records: the people listed were not invited and did not agree to review.
? Tutorial for this page

Hui Guo 0007

dblp:70/2221-7 · DBLP profile ↗
← Back
5ranked-venue papers
4as first author
0since 2021 · last 2020
—ORCID · conflict

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

Software engineering, systems software and programming languages · 4 · 3 first-authorSystems, architecture and hardware · 2 · 2 first-author

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
Compilers and program optimization · 38% Debugging and program repair · 18% Software testing · 15%
Computer architecture, parallel and distributed computing, and storage systems
1 paper
High-performance computing · 100%

Topics — the 8 heaviest of 9, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Debugging and program repair
fault localization
0.522020
pLiner: isolating lines of floating-point code for compiler-induced variability · SC 2020
A comprehensive study of real-world numerical bug characteristics · ASE 2017
Program analysis
symbolic execution
0.412020
Efficient generation of error-inducing floating-point inputs via symbolic execution · ICSE 2020
Software testing
test input generation
0.412020
Efficient generation of error-inducing floating-point inputs via symbolic execution · ICSE 2020
Compilers and program optimization
dependence analysis
0.312018
Exploiting community structure for floating-point precision tuning · ISSTA 2018
Compilers and program optimization › approximate computing › precision tuning
floating-point precision tuning
0.312018
Exploiting community structure for floating-point precision tuning · ISSTA 2018
Software maintenance and evolution
software defects
0.312017
A comprehensive study of real-world numerical bug characteristics · ASE 2017
High-performance computing
scientific computing systems
0.112020
pLiner: isolating lines of floating-point code for compiler-induced variability · SC 2020
Empirical software engineering
software fault analysis
0.112017
A comprehensive study of real-world numerical bug characteristics · ASE 2017

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

precision enhancement · 0.9guided search · 0.9symbolic execution · 0.4code coverage maximization · 0.4hierarchical search · 0.3edge profiling · 0.3dependence analysis · 0.3community detection · 0.3empirical study · 0.3bug categorization · 0.3
YearPublicationVenuePosition
2020 Efficient generation of error-inducing floating-point inputs via symbolic execution
abstract
Floating point is widely used in software to emulate arithmetic over reals. Unfortunately, floating point leads to rounding errors that propagate and accumulate during execution. Generating inputs to maximize the numerical error is critical when evaluating the accuracy of floating-point code. In this paper, we formulate the problem of generating high error-inducing floating-point inputs as a code coverage maximization problem solved using symbolic execution. Specifically, we define inaccuracy checks to detect large precision loss and cancellation. We inject these checks at strategic program locations to construct specialized branches that, when covered by a given input, are likely to lead to large errors in the result. We apply symbolic execution to generate inputs that exercise these specialized branches, and describe optimizations that make our approach practical. We implement a tool named FPGen and present an evaluation on 21 numerical programs including matrix computation and statistics libraries. We show that FPGen exposes errors for 20 of these programs and triggers errors that are, on average, over 2 orders of magnitude larger than the state of the art.
Hui Guo 0007, Cindy Rubio-González
ICSE1
2020 pLiner: isolating lines of floating-point code for compiler-induced variability
abstract
Scientific applications are often impacted by numerical inconsistencies when using different compilers or when a compiler is used with different optimization levels; such inconsistencies hinder reproducibility and can be hard to diagnose. We present PLINER, a tool to automatically pinpoint code lines that trigger compiler-induced variability. PLINER uses a novel approach to enhance floating-point precision at different levels of code granularity, and performs a guided search to identify locations affected by numerical inconsistencies. We demonstrate PLINER on a real-world numerical inconsistency that required weeks to diagnose, which PLINER isolates in minutes. We also evaluate PLiNER on 100 synthetic programs, and the NAS Parallel Benchmarks (NPB). On the synthetic programs, PLiNER detects the affected lines of code 87% of the time while the stateof-the-art approach only detects the affected lines 6% of the time. Furthermore, PLINER successfully isolates all numerical inconsistencies found in the NPB.
Hui Guo 0007, Ignacio Laguna, Cindy Rubio-González
SC1
2018 Exploiting community structure for floating-point precision tuning
abstract
Floating-point types are notorious for their intricate representation. The effective use of mixed precision, i.e., using various precisions in different computations, is critical to achieve a good balance between accuracy and performance. Unfortunately, reasoning about mixed precision is difficult even for numerical experts. Techniques have been proposed to systematically search over floating-point variables and/or program instructions to find a faster, mixed-precision version of a given program. These techniques, however, are characterized by their black box nature, and face scalability limitations due to the large search space. In this paper, we exploit the community structure of floating-point variables to devise a scalable hierarchical search for precision tuning. Specifically, we perform dependence analysis and edge profiling to create a weighted dependence graph that presents a network of floating-point variables. We then formulate hierarchy construction on the network as a community detection problem, and present a hierarchical search algorithm that iteratively lowers precision with regard to communities. We implement our algorithm in the tool HiFPTuner, and show that it exhibits higher search efficiency over the state of the art for 75.9% of the experiments taking 59.6% less search time on average. Moreover, HiFPTuner finds more profitable configurations for 51.7% of the experiments, with one known to be as good as the global optimum found through exhaustive search.
Hui Guo 0007, Cindy Rubio-González
ISSTA1
2017 A comprehensive study of real-world numerical bug characteristics
abstract
Numerical software is used in a wide variety of applications including safety-critical systems, which have stringent correctness requirements, and whose failures have catastrophic consequences that endanger human life. Numerical bugs are known to be particularly difficult to diagnose and fix, largely due to the use of approximate representations of numbers such as floating point. Understanding the characteristics of numerical bugs is the first step to combat them more effectively. In this paper, we present the first comprehensive study of real-world numerical bugs. Specifically, we identify and carefully examine 269 numerical bugs from five widely-used numerical software libraries: NumPy, SciPy, LAPACK, GNU Scientific Library, and Elemental. We propose a categorization of numerical bugs, and discuss their frequency, symptoms and fixes. Our study opens new directions in the areas of program analysis, testing, and automated program repair of numerical software, and provides a collection of real-world numerical bugs.
Anthony Di Franco, Hui Guo 0007, Cindy Rubio-González
ASE2
2014 EATBit: Effective automated test for binary translation with high code coverage
abstract
Binary translation makes it convenient to emulate one instruction set by another. Nowadays, it is growing in popularity in various applications, especially the embedded platforms. When it comes to the test of binary translators, traditional methodologies which still mainly rely on manual unit test is costly, labor intensive and often not adequate to test complicated algorithms in the translators. Some standard benchmark suites, like SPEC CPU2006, are compiled with different compilation options for further tests. However, the translation modules still have over 30% of their code unexecuted after such tests, according to our experimental results. Methodologies based on randomization can generate a vast variety of tests, thus improve the code coverage in the translation system. In this paper, we propose such an approach named EATBit. Test binaries are generated with randomly selected instructions and operands. The binaries and a large amount of input data are then refined to exclude invalid ones. Experimental results on a real binary translator demonstrate that EATBit can not only improve code coverage by over 20%, but also find some new bugs in the translator successfully.
Hui Guo 0007, Zhenjiang Wang, Ruining He
DATE1