Comments (12)
I'd just like to suggest that since Cl
is pretty much the main callable in this library, it might be helpful to have a more descriptive name for the new argument. Maybe desired_grades
or even just grades
?
from clifford.
Thanks for the table @enkimute interesting how fast the javascript startup times are!
just added to my PR here: #43
this should bring the start up times down very significantly
from clifford.
Thanks for the detailed issue @Stefan-Endres ! High dimensional algebra support is a big priority for us at the moment as it is the biggest performance killer in this library at the moment and people are interested in it, it would be great to get your contributions.
I have been thinking about our problems here for a little while, check out #17
I'm just digging into this even odd issue now and it is pretty nasty
from clifford.
Ok, this commit adds a bit of speedup and hopefully simplifies the code a little as a start for us to understand what is going on!
f67bcef
from clifford.
These even and odd permutation tables appear to be used only in _gmtElement. I think modifying _genEvenOdd to use your kr parameter and limiting the for i in range(self.gaDims): to the indices of your sparse algebra will work fine and will bring big speedups
from clifford.
Wow! Thank you, it's already much faster. I'm going to play around with weaving kr into the _genEvenOdd loop hopefully we can squeeze even more speed out of a sparse initialization.
from clifford.
Fantastic, drop us a PR when you are ready and we can merge it in
from clifford.
Just for comparison, ganja.js absolutely not optimized generation times :
1-dimensional clifford: 0.674072265625ms
2-dimensional clifford: 0.808837890625ms
3-dimensional clifford: 2.743896484375ms
4-dimensional clifford: 10.283935546875ms
5-dimensional clifford: 22.559814453125ms
6-dimensional clifford: 83.708984375ms
7-dimensional clifford: 439.293212890625ms
8-dimensional clifford: 2795.296875ms
9-dimensional clifford: 18897.85400390625ms
from clifford.
After fixing some very obvious things :
1-dimensional clifford: 0.63427734375ms
2-dimensional clifford: 0.7509765625ms
3-dimensional clifford: 1.22021484375ms
4-dimensional clifford: 3.337158203125ms
5-dimensional clifford: 11.001953125ms
6-dimensional clifford: 38.415283203125ms
7-dimensional clifford: 148.318115234375ms
8-dimensional clifford: 603.589599609375ms
9-dimensional clifford: 2689.2021484375ms
10-dimensional clifford: 11346.662841796875ms
from clifford.
@Stefan-Endres with the latest release of the library we are in a place where higher dimensional algebra initialisation is pretty fast, do you think sparse algebra support is still necessary? Or should we close the issue?
from clifford.
I think it would be better to close the issue for now. The last time I worked on this I was not able to make all the desirable operations work seamlessly, what I did relies on some very ugly/unmaintanable hacks. If I find a better solution some day I'll open a new PR if there are applications requiring very high dimensions (meaning to the point where the memory requirements of combinatorial growth of the blades of "middle" grades are intractable) and/or a good maintainable solution, but for now I don't think it would benefit the library (on a personal note it's working really well for my applications at the moment as I do not use extremely high dimensions).
Thanks for the great work on the initialisation improvements!
from clifford.
:) glad it is working out for you, it's nice to see this library being used in some wider applications!
from clifford.
Related Issues (20)
- repr of subalgebras
- Documentation typos HOT 1
- Add an ipython magic command for quick algebra construction
- leftLaInv fails for complex valued multivectors
- Pickling fails with NUMBA_DISABLE_JIT=1
- Doc builds on master are broken HOT 1
- Improve import time
- Installation issue... Jupyter Notebook HOT 8
- Unexpected numerical result, large difference between matrix and clifford method HOT 3
- Brew version HOT 4
- frame2Mat should return somthing...
- Problem with .inv() function
- Is there a function for line-line intersection?
- Possibly wrong up projection in clifford.gac
- Deviation between MultiVector and MVArray calculation
- Express CGA multivectors in terms of point the origin+infinity
- Support for basis blades that are non-canonical HOT 1
- Meet fails when line intersects sphere at only one point
- AttributeError: module 'numba' has no attribute 'generated_jit' HOT 2
- Deprecated Numba function "generated_jit" HOT 1
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 clifford.