Giter Site home page Giter Site logo

Comments (3)

mndevec avatar mndevec commented on May 25, 2024

Thanks @aprokop for catching and suggesting that. I will work on this.

from kokkos-kernels.

aprokop avatar aprokop commented on May 25, 2024

Thanks @mndevec! I guess there should be two options: one where the graph of the product is the product of the graphs, and second where the graph of the product is reduced to ignore known zero values (there may still be unknown zeros as a result of calculations). MueLu is actually interested in both for different scenarios.

from kokkos-kernels.

mndevec avatar mndevec commented on May 25, 2024

@aprokop @srajama1

Going deeper in this, I realize that this might be a bit tricky to do.

Basically, the issue is as follows:
spgemm symbolic functions calculates the sizes of the rows. However, it does not really store the structure.

In the numeric, algorithm works with column-id, and value pairs. Numeric phase returns both column ids and values. This can be avoided, but it does not really optimize the algorithm much, because at any certain point it still has to store id and value pairs for accumulation.

If a value is 0 on the left hand side matrix, we can avoid all multiplications. However, the structure of those rows still need to be inserted. If the algorithm avoids the traversal of those rows on the right hand side matrix, it might produce rows with as follows:

Row:
col1 col2 col3 0 0 0
val1 val2 val3 0 0 0

Would having such a matrix be okay? Basically, the current method cannot avoid this traversals so that it can return the ids of the columns with 0 values as below.
col1 col2 col3 col4 col5 col6
val1 val2 val3 0 0 0

I assume returning rows with missing column ids is not okay. But if it is, we can easily return these rows with missing values. Otherwise, to skip 0 values, we might need to change the algorithm and structure a bit more.

from kokkos-kernels.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.