Giter VIP home page Giter VIP logo

Comments (3)

RoyiAvital avatar RoyiAvital commented on July 29, 2024

@giaf , any thought on this?
Could you run your benchmarks on Linux with Multi Threaded version of MKL?

from blasfeo.

giaf avatar giaf commented on July 29, 2024

Hi @RoyiAvital
it's difficult for me to judge without playing around myself, there are a lot of factors affecting performance, and also MEX introduces some overhead, it's not for free.
Could you also upload the source code for the MEX wrapper?

On top of that, MKL is not a sitting dog, they have a large team and, according to the MKL release notes, they have been improving their small scale performance too.
While here man power is very limited and divided among multiple projects :p
I think benchmarks on blasfeo.syscop.de have not been updates since the BLASFEO BLAS API paper was initially submitted, so I'll try to find some time to repeat them.

About comparison with multi-threaded MKL, it's not an apple-to-apple comparison, as MKL performance would scale depending on the number of available cores (and then the CPU model), while BLASFEO's one would not.
I eventually want to add multi-thread capabilities to BLASFEO too, at that point such comparison would make sense in my opinion.

But as of now, BLASFEO is designed with the aim of providing fast single-threaded routines for matrices fitting in cache.
There are multiple applications where this is needed, as e.g. in the PLASMA project.
And especially (for applications in our group) to provide the linear algebra framework for the implementation of embedded optimization algorithms for optimal control software such as HPIPM and acados.
This is the main aim in development.

from blasfeo.

RoyiAvital avatar RoyiAvital commented on July 29, 2024

@giaf ,
I know the idea is to have Single Threaded performance.
Yet I think comparing to Multi Threaded MKL will give a break point where one should use BLASFEO and MKL.
My thought it worth you add those wasn't to show BLASFEO in negative light, on the contrary, it will probably show how close you get even with a single thread.

By the way, MEX indeed has an overhead. But remember MATLAB also calls MKL using its general purpose DLL which has the same overhead to the least (Probably more). Also MATLAB uses the CNR channel of MKL which has lower performance (Yet reproducible results).

This is the MEX file (Change to c postfix):

BLASFEODGEMM.txt

Pay attention it is not fully working and there is no validation of the input in order to compare pure performance (It works for square matrices).

from blasfeo.

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.