<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Software | Kun WANG</title><link>https://kunwang.info/tags/software/</link><atom:link href="https://kunwang.info/tags/software/index.xml" rel="self" type="application/rss+xml"/><description>Software</description><generator>HugoBlox Kit (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Wed, 11 May 2022 00:00:00 +0000</lastBuildDate><image><url>https://kunwang.info/media/icon_hu_23dc6ba021a93541.png</url><title>Software</title><link>https://kunwang.info/tags/software/</link></image><item><title>Quantum Error Processing Toolkit</title><link>https://kunwang.info/softwares/qep/</link><pubDate>Wed, 11 May 2022 00:00:00 +0000</pubDate><guid>https://kunwang.info/softwares/qep/</guid><description>
&lt;details class="print:hidden xl:hidden" &gt;
&lt;summary&gt;Table of Contents&lt;/summary&gt;
&lt;div class="text-sm"&gt;
&lt;nav id="TableOfContents"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#brief-introduction"&gt;Brief Introduction&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#functions"&gt;Functions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#metrics"&gt;Metrics&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#team-contribution"&gt;Team Contribution&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/nav&gt;
&lt;/div&gt;
&lt;/details&gt;
&lt;h3 id="brief-introduction"&gt;Brief Introduction&lt;/h3&gt;
&lt;p&gt;I led the development of
&lt;strong&gt;the open-source
toolkit&lt;/strong&gt;.
My proficiency in quantum computing has enabled me to identify critical needs and
select the most suitable quantum solutions.
Simultaneously, my expertise in computer science has empowered me to
design robust and efficient data structures, algorithms, and software architectures,
and uphold a well-structured software development life cycle,
ensuring the timely delivery of these solutions with high quality.&lt;/p&gt;
&lt;p&gt;QEP stands at the forefront as an innovative and pioneering open-source quantum error processing toolkit,
representing a core component seamlessly integrated into the
,
which is a full-stack quantum software and hardware platform developed by Baidu.
This toolkit serves a paramount purpose in characterizing and enhancing the performance of quantum computers
by effectively addressing and mitigating the inherent quantum errors presented in these devices through
sophisticated software solutions.&lt;/p&gt;
&lt;h3 id="functions"&gt;Functions&lt;/h3&gt;
&lt;p&gt;QEP boasts a comprehensive suite of four powerful quantum error processing tools:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;span style="color:#DB4437;"&gt;&lt;strong&gt;Quantum Performance Evaluation&lt;/strong&gt;&lt;/span&gt;, for assessing the capabilities and extendibilities of quantum computing hardware platforms, through estimating the error rates of quantum states, quantum gates, and quantum measurement apparatus. It provides standard randomized benchmarking, interleaved randomized benchmarking, cross-entropy benchmarking, unitarity randomized benchmarking, direct fidelity estimation, and cross-platform fidelity estimation methods.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;span style="color:#DB4437;"&gt;&lt;strong&gt;Quantum Error Characterization&lt;/strong&gt;&lt;/span&gt;, for reconstructing the comprehensive information in quantum computing hardware platforms, through many partial and limited experimental results. It provides quantum state tomography, quantum process tomography, quantum detector tomography, quantum gateset tomography, and spectral quantum tomography.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;span style="color:#DB4437;"&gt;&lt;strong&gt;Quantum Error Mitigation&lt;/strong&gt;&lt;/span&gt;, used for improving the accuracy of quantum computational results, through post-processing the experiment data obtained by varying noisy experiments,
extending the computational reach of a noisy superconducting quantum processor. It provides zero-noise extrapolation technique to mitigate quantum gate noise, and a collection of methods such as inverse, least-square, iterative Bayesian unfolding, Neumann series to mitigate quantum measurement noise.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;span style="color:#DB4437;"&gt;&lt;strong&gt;Quantum Error Correction&lt;/strong&gt;&lt;/span&gt;, used to protect quantum information from errors due to environmental noise and imperfections in hardware. Quantum computers rely on the delicate properties of quantum systems, which are susceptible to errors, and thus, QEC has become an essential tool for realizing fault-tolerant quantum computing. It provides a simulator that can simulate error correction codes based on the stabilizer formalism, allowing users to study the effects of various types of noise, assess the performance of different error correction codes, and evaluate the robustness of quantum algorithms to errors.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The versatile capabilities embedded in QEP empower our quantum hardware team to engage in a meticulous
and rigorous process of characterizing and enhancing Baidu&amp;rsquo;s quantum processors. By leveraging QEP&amp;rsquo;s advanced tools,
we can delve into the intricate details of quantum performance, understand the characteristics of errors,
implement effective mitigation strategies, and deploy quantum error correction codes.
This comprehensive approach accelerates closed-loop and end-to-end optimizations,
thus playing an instrumental role in advancing the capabilities, robustness, and reliability of
our quantum computing infrastructure. The technology landscape of QEP is as follows.&lt;/p&gt;
&lt;img src="qep-architecture.png" alt="QEP Architecture" width="1024"/&gt;
&lt;h3 id="metrics"&gt;Metrics&lt;/h3&gt;
&lt;p&gt;QEP is officially released at
,
a grand quantum developer conference held in Beijing.
The release garnered widespread recognition from mainstream news media, including
,
,
,
, and many others.
Establishing a robust foundation backed by &lt;strong&gt;5&lt;/strong&gt; research papers and over &lt;strong&gt;50&lt;/strong&gt; patent applications,
the latest version,
,
brings unparalleled versatility to quantum hardware access.
This release significantly expands its support to diverse platforms from five leading companies,
further solidifying its position at the forefront of quantum error processing toolkits.
QEP&amp;rsquo;s modular design, founded on the software design philosophy
of &amp;ldquo;high cohesion, loose coupling&amp;rdquo; for effective code organization and
independent functionalities, features &lt;strong&gt;32&lt;/strong&gt; core modules. With a vast repository housing &lt;strong&gt;26,000&lt;/strong&gt;
lines of open-source code, and an extensive library of &lt;strong&gt;37&lt;/strong&gt; bilingual tutorials,
alongside comprehensive API documentation, QEP is designed to be user-friendly, allowing easy access and utilization of its capabilities.&lt;/p&gt;
&lt;p&gt;For more detailed information about QEP, interested parties can
explore the repository on
or access the package on
.
These platforms offer in-depth insights into QEP&amp;rsquo;s features, functionalities, implementation guidelines, and user tutorials.&lt;/p&gt;
&lt;h3 id="team-contribution"&gt;Team Contribution&lt;/h3&gt;
&lt;p&gt;The success of QEP is indebted to the invaluable contributions of numerous research interns and engineers.
Through effective management and the implementation of a rotation mechanism,
I established a system that facilitated the swift integration of research interns into the project,
enabling them to make meaningful contributions. To date, &lt;strong&gt;12&lt;/strong&gt; research interns have seamlessly
immersed themselves in the realm of quantum computing,
acquiring expertise in both theoretical and practical aspects of quantum error processing.
Their talents have played a pivotal role in driving innovative projects that push the boundaries of quantum technology.
The sustained fascination these interns exhibit toward quantum computing stands as a testament to the passion and
enthusiasm that I have ignited in these future researchers.
This collaborative effort underscores the collaborative and dynamic nature of the quantum research environment
that has been cultivated within the QEP project.&lt;/p&gt;</description></item><item><title>Turing Machine Simulator</title><link>https://kunwang.info/posts/2020-05-06-turing-machine-simulator/</link><pubDate>Wed, 06 May 2020 00:00:00 +0000</pubDate><guid>https://kunwang.info/posts/2020-05-06-turing-machine-simulator/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;I developed a Turing machine simulator when I was a teaching assistant for the course &amp;ldquo;Introduction to Models of Computation&amp;rdquo;.
You can find the project in
.
It is based on a nice Java Turing machine simulator from
with necessary
updates. Feel free to fork, modify it.&lt;/p&gt;
&lt;p&gt;The syntax of Turing machine is totally from the book of
&amp;ldquo;&lt;em&gt;Introduction to Models of Computation&lt;/em&gt;&amp;rdquo; by professor Fangmin Song, which you can buy from
.&lt;/p&gt;
&lt;h2 id="description"&gt;Description&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;bin&lt;/code&gt;: Contains the compiled .class files. The &amp;ldquo;images&amp;rdquo; sub-directory is very important as it stores the required images for the simulator. In the next update, I will try to move it out of the &amp;ldquo;bin&amp;rdquo; directory.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;files&lt;/code&gt;: Contains the program description for specific operations. Examples include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Adder.tur&lt;/strong&gt;: a program for adding two non-negative integers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;copyString.tur&lt;/strong&gt;: a program for copy a string of &lt;em&gt;11&amp;hellip;11&lt;/em&gt;s.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In these two files, I gave a detail description of the requirements for writing a program that can be accepted by the simulator.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;src&lt;/code&gt;: Source files of the simulator.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;All of the above three directories are required for running the simulator.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;introduction.pptx&lt;/code&gt;: Actually, the Turing machine simulator is a project for the third assignment of the course &lt;strong&gt;Software Architecture&lt;/strong&gt;. &lt;code&gt;introduction.pptx&lt;/code&gt; is my presentation on the course, which introduces basic ideas of the project, and the design patterns that have been applied.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;TMSimulator.7z&lt;/code&gt;: The packed runnable jar, with necessary config files.&lt;/p&gt;
&lt;h2 id="how-to-use"&gt;How to Use&lt;/h2&gt;
&lt;p&gt;There are two different ways to setup the simulator.&lt;/p&gt;
&lt;h3 id="method-1-running-the-jar-file"&gt;Method 1: Running the jar file&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Download the repository.&lt;/li&gt;
&lt;li&gt;Unpack &lt;code&gt;TMSimulator.7z&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Click the &lt;code&gt;run.bat&lt;/code&gt; batch file.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Warnning!&lt;/strong&gt; The &lt;code&gt;files&lt;/code&gt; and &lt;code&gt;TMSimulator.jar&lt;/code&gt; must be in the same directory with &lt;code&gt;run.bat&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id="method-2-importing-the-project-into-eclipse"&gt;Method 2: Importing the project into eclipse&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Download the repository.&lt;/li&gt;
&lt;li&gt;Import into eclipse.&lt;/li&gt;
&lt;li&gt;Run it!&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="known-problems"&gt;Known problems&lt;/h2&gt;
&lt;h3 id="problem-1"&gt;Problem 1&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Problem Description:&lt;/strong&gt; When exporting the project as a runnable jar (TMSimulator.jar is exported in this way), images cannot be load, as the jar cannot find the images.&lt;br&gt;
&lt;strong&gt;Current Solution:&lt;/strong&gt; This problem happens because the exporting system hasn&amp;rsquo;t add the necessary files in &lt;code&gt;bin/images&lt;/code&gt; into the jar file. There are two solutions:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Modify the code to add the files.&lt;/li&gt;
&lt;li&gt;Add the &lt;code&gt;images&lt;/code&gt; directory into the jar file manually.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Due to my laziness, I take the latter one. It deserves better solution.&lt;/p&gt;
&lt;h3 id="problem-2"&gt;Problem 2&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Problem Description:&lt;/strong&gt; The input and output have been restricted into binary values, which are required by the simulator yet are not that human friendly.&lt;br&gt;
&lt;strong&gt;Possible Solution:&lt;/strong&gt; One encode module to translate the input decimal integers into corresponding bianry values, then feeding them into the simulator. One decode module to translate the output bianry value into corresponding decimal integer, then displaying out.&lt;/p&gt;
&lt;h2 id="more-on-the-simulator"&gt;More on the Simulator&lt;/h2&gt;
&lt;p&gt;If you have any ideas on the project, please feel free to let me know. You can try following ways to keep us in touch.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Comment on this post. This is highly recommended.&lt;/li&gt;
&lt;li&gt;Fork the project, and push the new version to me.&lt;/li&gt;
&lt;li&gt;Email me.&lt;/li&gt;
&lt;/ol&gt;</description></item></channel></rss>