Comments (4)
Thanks for reporting that. I'll switch to pointers.
Also, IMO, using assembly at all, let alone so much of it, is a red flag/strong code smell for such a high-level package.
I'm not excited about this as well. ATM I just try to keep llvmcall
s in a single file, and maybe I ought to rethink their usefulness later.
from groebner.jl.
UPD: Now there is one more file where llvmcalls
s are used: https://github.com/sumiya11/Groebner.jl/blob/1966672ac52cba9f68f90685433abd21f4e584cc/src/utils/packed.jl
These llvmcalls
grant around 15% performance improvement on one class of inputs.
Either compilers become smart enough to produce such code by themselves or I decide I do not care enough and delete all llvmcall
s -- whivever comes first.
from groebner.jl.
To be more precise
using Groebner, AbstractAlgebra
k = GF(2^30+3)
C = [
Groebner.Examples.HIV2(k=k),
Groebner.Examples.Goodwin_with_weights(k=k),
Groebner.Examples.yang1(k=k),
Groebner.Examples.Cholera(k=k),
Groebner.Examples.bayes148(k=k),
Groebner.Examples.mayr42(k=k)
];
@time for c in C groebner(c); end
No llvmcalls :
98.660280 seconds (121.74 M allocations: 12.032 GiB, 4.05% gc time)
With llvmcalls :
92.756787 seconds (121.74 M allocations: 12.032 GiB, 4.25% gc time)
This is Julia Version 1.12.0-DEV.1076
from groebner.jl.
Either compilers become smart enough to produce such code by themselves or I decide I do not care enough and delete all llvmcalls -- whivever comes first.
from groebner.jl.
Related Issues (20)
- Fails to compute correct Gröbner basis on DynamicPolynomials variable with non-standard monomial ordering HOT 7
- Many invalidations
- groebner does not return leading coefficient 1 HOT 7
- Calculate transformation matrix HOT 9
- Reduce a Polynomial by a Groebner Basis HOT 3
- OOM issue when computing Groebner basis HOT 6
- Integer Type Error HOT 1
- Error with `hashnextindex(::UInt32, ::Int64, ::UInt32)` HOT 3
- Compute basis in parallel HOT 20
- Groebner Basis with parameters HOT 3
- Computing bases up to some degree
- Issues with Computing Groebner Basis for High-Order Runge Kutta Systems with 8 Stages and Order 7 HOT 12
- RecoverableException in Groebner\to18i\src\interface.jl:100 HOT 3
- Possible to make Groebner.jl support 32bit Julia? HOT 1
- Bug in `groebner` in Z_2 HOT 1
- Issues with `normalform` HOT 4
- Huge amount of dynamic dispatch HOT 2
- Does Groebner use checked arithmetic, or does it fail silently if a coefficient overflows? HOT 2
- exponent vector overflow, restarting HOT 8
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 groebner.jl.