Comments (3)
Hi Ali,
Thanks for your outstanding work about ScaffCC!
@epiqc I updated unit tests, because module was occupied by C++17 modules TS keywords since Clang release_40 so I renamed module
to qmodule
by https://github.com/ScaffCC/scaff-clang/commit/8dafe79d124b042de9887d2d5c483b6c4315424a and https://github.com/ScaffCC/scaff-llvm/commit/21acb7c3844f3996b2e34fe334f1e7ba6e1428d9
Yes, it might effect, for example: if (callee->getName().str() == "llvm.X") but will not effect if (callee->getName().startswith("llvm.X")) so I need to find the root cause why changed from llvm.X
to llvm.X.i16
, DIFF between LLVM release_31 and svn trunk, it might because:
- Frontend
optnone
attribute or disable unroll meta data issue http://lists.llvm.org/pipermail/llvm-dev/2017-October/118419.html - Middleend need a list of symbols to preserve as external issue http://lists.llvm.org/pipermail/llvm-dev/2017-October/118445.html
LLVM open source projects are still keeping evolution for better optimization and performance, for example: the original ScaffCC based on LLVM release_31 will use up classical computer's resource during O1 optimizations for transforming Shors algorithms, it is LLVM PASS release_31 performance issue, not Scaffold's, fortunately LLVM svn trunk branch is better than release_31, but CPU still boiled during Dead Argument Elimination, also it is LLVM Deadargelim PASS issue, so it needs to migrate Scaffold PASS to NewLLVM for better optimization and performance, and contributed to LLVM :)
Regards,
Leslie Zhai - a LLVM developer https://reviews.llvm.org/p/xiangzhai/
from scaffcc.
The cause of this change was the introduction of the ancilla bit "abit" as a separate data type than the qubit. Separating the data types was done for optimization and resource counting purposes, where it would facilitate easier ancilla resource usage during applications, as well as enable easier ancilla management which is being used now in the development of automated ancilla qubit reclaiming procedures.
When the separate types were introduced, the primitive QASM gates defined as LLVM intrinsics needed to be able to accept both qubit types and ancilla types. The way this was accomplished was by changing the definition of these intrinsic gates to accept any integer type, which forces the compiler to create new instantiations of these gates with suffixes denoting the data type for a given instantiation. This change came about in summer 2016, so it has been around for awhile.
@ajavadia Which passes are you referring to that are broken by this change?
from scaffcc.
Ok, I see. That makes sense. A lot of passes were still using the old data types (ResourceCount2, GenSIMDSchedule, DynRollupLoops, GetCriticalPath, etc.). I will push fixes soon.
from scaffcc.
Related Issues (20)
- [Algorithms] How to solve the NP-complete problem for Register Allocation?
- [PASS] FlattenModule generated 6837+K sha1.n12812.inlined.ll
- GPL-free HOT 1
- Ground State Estimation
- Publish Dockerfile HOT 7
- Wrong QASM output for Teleportation circuit HOT 2
- Segmentation fault when generating QASM when file contains `cbit c = MeasZ(q);`
- Segmentation fault when assigning several cbit values
- -o is not working for QFT HOT 5
- Can't find math.h and other headers HOT 1
- ScaffCC does not compile with Python 3.4, but does with Python 2.7 HOT 2
- ScaffCC does not compile with C++11
- Building braidflash is not working
- Specification on nisq benchmark adder HOT 2
- Version not alligned HOT 1
- CTQG compilation example: controlled not HOT 7
- About the CTQG part in the paper HOT 2
- CMake Error HOT 17
- Toffoli decomposition not working (?) HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from scaffcc.