Comments (3)
Let's keep this open so I don't forget. Creating semirings based on an index-binary operator (which would have access to the values aik, bkj, and the indices i,k,j) is very important. It will be a lot of work, but it would not require a JIT to get important cases to work with high performance.
from graphblas.
It's currently not possible to create a user-defined positional binary op. Internally, built-in ops "can do anything" ... I just have to write the code to do it, and none of my specialized positional binary ops can do this. There is no function signature that handles this; my positional binary ops are GrB_BinaryOp objects.
There is a new GrB_IndexUnaryOp in the spec, which computes z = f (aij, i, j, thunk). It's like a selectop, but it can be used in more than just GrB_select. It can be used in GrB_apply as well.
It would be possible to consider an extension to this idea, a GxB_IndexBinaryOp, which would compute z = f (a_ia_ja, ia, ja, b_ib_jb, ib,jb, thunk), where A(ia,ja) is one entry and B(ib,jb) is another. This function signature could be used to return z as a pair of entries: (value,k) where you'd use k = ja or k = ib. Then a user-defined max monoid could be considered that operated on the user-data type (value,int64 k).
The GrB_Semiring would have to be extended so it can handle this GxB_BinaryIndexOp as the multiplicative operator.
This would be quite a lot of work to implement, however. All my extensive AxB kernels would have to change to accomodate this new kind of op, and the change is substantial.
from graphblas.
Closing since this will be taken care of eventually by JIT and possibly Enzyme.
from graphblas.
Related Issues (20)
- Link error with Intel igx and Ninja generator on Windows HOT 9
- Optimisation report causing build failure when using Intel oneAPI HOT 2
- nvals weirdness with 8.0.0 for max-sized Vector HOT 6
- Where is `GxB_Context_error`? HOT 3
- Why was `nthreads` and `chunks` remove from the descriptor? HOT 5
- dynamic connectivity in the language of graphblas HOT 1
- Fastest Way to Exfiltrate a Matrix HOT 3
- no JIT kernels produced? HOT 3
- Modify CMake options to build without bundled libraries HOT 1
- Sublinear Performance with n Threads HOT 6
- [BUG]: Incorrect result(!) in vector-matrix multiply with accumulation in versions 8.0.2 and 8.2.0 HOT 13
- Allow enabling and disabling JIT for operators and types with get/set HOT 1
- Monoid Creation with Scalar HOT 1
- Excess allocation in dense apply HOT 2
- Proposal: GxB_CASTOP HOT 3
- `GrB_get` instead of fprint HOT 1
- make static not working as expected in 9.0.1 release HOT 4
- Build Error when using CMake in a cross-compilation environment HOT 3
- Compiler sign compare warning in `GxB_Vector_Iterator_seek` HOT 2
- JITpackage not building on Windows HOT 14
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 graphblas.