Announcement

Collapse
No announcement yet.

OpenBLAS 0.3.16 Brings Various CPU Fixes, More Optimizations

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • #11
    Is ATLAS still a thing ?

    Comment


    • #12
      Well it's still better performance than Netlib and though it has not received much love for quite some time, its autotuning ideas are still interesting and would probably do wonders with a microkernel-type approach as used in BLIS.

      Comment


      • #13
        Originally posted by CochainComplex View Post
        ...thx for your post. But i know what openblas, mkl, lapack,blas, nvblas etc are ( I'm a physicist using hpc). My question was what is numpy using as their native blas implemention that's what I have meant by what is its standard lib?
        numpy supposed to be a rather fast pyhton library dispite of its python interpreter language nature. So it has to have some linear algebra acceleration based on a blas library implementation on the backend side.
        Talking about interpreter languages...
        Afaik Matlab e.g. is build against mkl (a reason why some amd user havn't had the full performance of their ryzens at the beginning of zens launch) .
        Octave can be built with a varienty of blas implementations default is openblas. But independently of its build structure you can drop in the nvdia GPU accelerated blas lib with environment variables.

        .
        Just in case you don’t know, numpy is writen in C.

        That’s the whole point since python itself is too slow and does not support any real multithreading for computation.

        numpy provides an homogeneous array implementation that is much more space efficient and has faster operations on it compared to the heterogeneous builtin list of python.

        According to my knowledge, all other operations of numpy is built around that.

        Comment


        • #14
          Originally posted by User42 View Post
          Ah I see! I thought you were talking about the Netlib (standard) implementation...

          Numpy has support for anything that implements the BLAS/LAPACK API. It used to be that, by default, it was using Netlib's (correct but slow) implementation.

          Nowadays, it tries to find a better implementation at build time.

          So what you get completely depends on what your distribution chose to do. You can still determine what your version has been linked to.

          Numpy in anaconda comes with MKL by default. If you chose to add the `nomkl` virtual package to prevent conda from using MKL (say if you are on an AMD system or if you figured MKL is not the fastest or is too big or is not compliant enough for another lib, etc.), then OpenBLAS is used and replaces MKL transparently.

          You should be able to use nvidia's cuBLAS as well if you want to. If its ABI is compliant, setting a few environment variables should be enough to swicth. If not, you can try to build numpy yourself. This time, if the API is compliant all should go well.
          Thank you that was the answer I was looking for ...but well my question was asked a bit blurry in the first place.

          Comment


          • #15
            Originally posted by NobodyXu View Post

            Just in case you don’t know, numpy is writen in C.

            That’s the whole point since python itself is too slow and does not support any real multithreading for computation.

            numpy provides an homogeneous array implementation that is much more space efficient and has faster operations on it compared to the heterogeneous builtin list of python.

            According to my knowledge, all other operations of numpy is built around that.
            This is good input too. Thankyou - I didn't know it (just guessing that some of the functions have to be "hardcoded"). Octave does also have this approach. Some functions are just m-files using builtinfunctions as you would wirte it in octave/matlab native and some are wrapped c(or c++ cant recall it) code.

            Comment


            • #16
              Originally posted by tchiwam View Post
              Is ATLAS still a thing ?


              Note that both BLAS and CBLAS interfaces are needed for a properly optimized build of NumPy.

              The default order for the libraries are:
              • MKL
              • BLIS
              • OpenBLAS
              • ATLAS
              • BLAS (NetLIB)

              The detection of BLAS libraries may be bypassed by defining the environment variable NPY_BLAS_LIBS , which should contain the exact linker flags you want to use (interface is assumed to be Fortran 77). Also define NPY_CBLAS_LIBS (even empty if CBLAS is contained in your BLAS library) to trigger use of CBLAS and avoid slow fallback code for matrix calculations.
              and can also been used for Octave.

              But if I have found the correct repo on sourceforge development is rather slow compared to e.g. OpenBLAS

              Comment

              Working...
              X