CG

C.A. Georgescu

info

Please Note

3 records found

Lattice Gas Automata (LGA) is a classical method for simulating physical phenomena, including Computational Fluid Dynamics (CFD). Quantum LGA (QLGA) is the family of methods that implement LGA schemes on quantum computers. In recent years, QLGA has garnered attention from researchers thanks to its potential of efficiently modeling CFD processes by either reducing memory requirements or providing simultaneous representations of exponentially many LGA states. In this work, we introduce novel building blocks for QLGA algorithms that rely on computational basis state encodings. We address every step of the algorithm, from initial conditions to measurement, and provide detailed complexity analyses that account for all discretization choices of the system under simulation. We introduce multiple ways of instantiating initial conditions, efficient boundary condition implementations for novel geometrical patterns, a novel collision operator that models less restricted interactions than previous implementations, and quantum circuits that extract quantities of interest out of the quantum state. For each building block, we provide intuitive examples and open-source implementations of the underlying quantum circuits. ...
We present QLBM, a Python software package designed to facilitate the development, simulation, and analysis of Quantum Lattice Boltzmann Methods (QBMs). QLBM is a modular framework that introduces a quantum component abstraction hierarchy tailored to the implementation of novel QBMs. The framework interfaces with state-of-the-art quantum software infrastructure to enable efficient simulation and validation pipelines, and leverages novel execution and pre-processing techniques that significantly reduce the computational resources required to develop quantum circuits. We demonstrate the versatility of the software by showcasing multiple QBMs in 2D and 3D with complex boundary conditions, integrated within automated benchmarking utilities. Accompanying the source code are extensive test suites, thorough online documentation resources, analysis tools, visualization methods, and demos that aim to increase the accessibility of QBMs while encouraging reproducibility and collaboration. Program summary: Program Title: QLBM CPC Library link to program files: https://doi.org/10.17632/28hkvsg7p2.1 Developer's repository link: https://github.com/QCFD-Lab/qlbm Licensing provisions: MPL-2.0 Programming language: Python3 Supplementary material: The documentation of is available at https://qcfd-lab.github.io/qlbm/. Nature of problem: The advent of quantum algorithms for computational fluid dynamics brings with it challenges that are new to the established field of computational physics. These challenges include the lack of standardized implementations of the still nascent quantum methods, the intense computational demands of developing and simulating quantum algorithms on hardware available today, and the absence of tools that integrate novel developments into established infrastructure. Because of these current limitations, physicists and mathematicians expend superfluous resources on tasks that more mature computational physics branches have surmounted long ago. Solution method: QLBM is a software package that provides an end-to-end development environment for quantum lattice Boltzmann methods. The modular design and flexible quantum circuit library provide a base for extending and generalizing quantum algorithms. Performance enhancements exploit the paradigm of quantum computing simulations to accelerate the speed at which researchers can verify the validity of their methods. Its integration with state-of-the-art quantum computing software and visualization tools increases the algorithms' accessibility. These features allow QLBM to effectively generate, simulate, and analyze quantum circuits for 2D and 3D computational fluid dynamics problems. ...
Conference paper (2024) - Călin Georgescu, Mitchell Olsthoorn, Pouria Derakhshanfar, Marat Akhin, Annibale Panichella
Compiler correctness is a cornerstone of reliable software development. However, systematic testing of compilers is infeasible, given the vast space of possible programs and the complexity of modern programming languages. In this context, differential testing offers a practical methodology as it addresses the oracle problem by comparing the output of alternative compilers given the same set of programs as input. In this paper, we investigate the effectiveness of differential testing in finding bugs within the Kotlin compilers developed at JetBrains. We propose a black-box generative approach that creates input programs for the K1 and K2 compilers. First, we build workable models of Kotlin semantic (semantic interface) and syntactic (enriched context-free grammar) language features, which are subsequently exploited to generate random code snippets. Second, we extend random sampling by introducing two genetic algorithms (GAs) that aim to generate more diverse input programs. Our case study shows that the proposed approach effectively detects bugs in K1 and K2; these bugs have been confirmed and (some) fixed by JetBrains developers. While we do not observe a significant difference w.r.t. the number of defects uncovered by the different search algorithms, random search and GAs are complementary as they find different categories of bugs. Finally, we provide insights into the relationships between the size, complexity, and fault detection capability of the generated input programs. ...