Comments (3)
@giaf , any thought on this?
Could you run your benchmarks on Linux with Multi Threaded version of MKL?
from blasfeo.
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.
@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):
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)
- Does code size affect the performance of small GEMMs?
- BLASFEO_PROCESSOR_FEATURES as identifier instead of object HOT 3
- SIGSEGV using hpipm HOT 1
- Bug in blasfeo drowpe?
- Problem with blasfeo_drowpe? HOT 4
- Error on multiple definition of `BLASFEO_PROCESSOR_FEATURES'
- Need to link against math library? HOT 1
- Linker error: SHF_MERGE section size (456) must be a multiple of sh_entsize (32) HOT 4
- Tests fail to build: libblasfeo.so: undefined reference to kernel_dpack_buffer_fn HOT 1
- Are there routines for matrix norms? HOT 2
- Incorrect documentation for dtrmm in blasfeo_d_blasfeo_api.h? HOT 3
- blasfeo_dtrmm_rltn not implemented HOT 1
- Missing symbols kernel_dpack_buffer_* in the shared library HOT 2
- Tests fail: error: undefined symbol: blasfeo_sgemm HOT 1
- When can we use parameter as both input and output? HOT 1
- What are m, n, k in dgemm routines? HOT 1
- blasfeo_target.h:1:0: error: unterminated #ifndef HOT 2
- MacOS M2 compiling issue HOT 2
- Calling certain triangular matrices routines leads to `undefined symbol` error HOT 2
- `blasfeo_dtrmm_rlnn` accesses invalid memory with offset on the lower triangular matrix 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 blasfeo.