Git Product home page Git Product logo

blaze's Introduction

blaze300x150.jpg

Blaze is an open-source, high-performance C++ math library for dense and sparse arithmetic. With its state-of-the-art Smart Expression Template implementation Blaze combines the elegance and ease of use of a domain-specific language with HPC-grade performance, making it one of the most intuitive and fastest C++ math libraries available.

The Blaze library offers ...

  • ... high performance through the integration of BLAS libraries and manually tuned HPC math kernels
  • ... parallel execution by OpenMP, C++11 threads and Boost threads
  • ... the intuitive and easy to use API of a domain specific language
  • ... unified arithmetic with dense and sparse vectors and matrices
  • ... thoroughly tested matrix and vector arithmetic
  • ... completely portable, high quality C++ source code

Get an impression of the clear but powerful syntax of Blaze in the Getting Started tutorial and of the impressive performance in the Benchmarks section.


Download

white20x120.jpg blaze-2.5.jpg white40x120.jpg blaze-docu-2.5.jpg

Older releases of Blaze can be found in the downloads section or in our [release archive](https://bitbucket.org/blaze-lib/blaze/wiki/Release Archive).


News

1.10.2015: After some month of hard work we finally release Blaze 2.5! This version comes with a fair amount of new features, many of them focused on computations with complex numbers: Hermitian matrices, the conj(), ctrans(), real(), and imag() operations, and the vectorization of integral complex numbers.

In addition, we are particularly proud about the performance improvements of several dense matrix/sparse matrix multiplication and sparse matrix/dense matrix multiplication kernels. Furthermore, to extend the support for special environments, we have enabled the customization of the error reporting mechanism. Enjoy!

4.7.2015: We are proud to announce the release of Blaze 2.4! With this release, we say goodbye to the GoogleCode platform and move to our new home:

white250x100.jpg bitbucket300x100.jpg

Since GoogleCode is shutting down, Blaze 2.4 will be the last release on GoogleCode. From now on we will focus entirely on our Bitbucket repositories. Please update your bookmarks accordingly!

In Blaze 2.2 we introduced the first adaptor, {{{SymmetricMatrix}}}. In Blaze 2.3 we continued in this direction and introduced adaptors for lower and upper triangular matrices. Now, Blaze 2.4 concludes this line of development with unitriangular, strictly triangular and diagonal matrices. This now enables a total of 36 different matrix types, which provide the unique possibility to adapt the type of matrices exactly to the problem at hand and to achieve maximum performance due to specifically optimized kernels.

Additionally, in Blaze 2.4 we have removed a couple of hidden, unofficial features that caused trouble due to negligence and lack of proper testing: All solvers, RotationMatrix and Quaternion are not part of the release anymore. However, we plan to reintroduce both RotationMatrix and Quaternion in an upcoming release.


24.3.2015: You might have heard already: Google has officially announced to shut down the Google Code platform. This is of course bad news for us since this means that we have to move the Blaze website and repository to a new platform. However, since there have been several requests from the Blaze community to move Blaze to a different platform we have been thinking and working in this direction for some time anyway. Given the current situation we have decided to officially move our repository with the next release of Blaze: Version 2.4 will be the last release on Google Code and the first release on our new home. We are currently wrapping up the 2.4 release and at the same time preparing our move to the new platform. Stay tuned, we will inform you as soon as possible about the location of our new home.


11.3.2015: You were asking for them, here they are! The new big feature of Blaze 2.3 are lower and upper triangular matrices. And they come with full support within the Blaze library: Specifically adapted and optimized compute kernels and full support for parallelization via OpenMP, C++11 and Boost threads. Also noteworthy: The implementation is thoroughly checked by 748 new test cases. See the Blaze tutorial for how the new LowerMatrix and UpperMatrix adaptors work!


3.12.2014: After a total of five and a half months, a little late for SC'14, but right on time for Meeting C++, we finally release Blaze 2.2! But the waiting time was worthwhile! This release comes with several bug fixes and hundreds of improvements, many based on your hints, suggestions and ideas. Thank you very much for your support and help to make the Blaze library even better!

The big new feature of Blaze 2.2 is symmetric matrices. And this is not just any implementation of symmetric matrices, but one of the most complete and powerful implementations available. See the Blaze tutorial to get an idea of how symmetric matrices work and how they can help you prevent some inadvertent pessimizations of your code.


20.6.2014: After three month, just in time for ISC'14, Blaze 2.1 has finally been released! The focus of this release is the improvement and extension of the shared memory parallelization capabilities. In addition to the OpenMP parallelization, Blaze 2.1 now also enables shared memory parallelization based on C++11 and Boost threads. With that, shared memory parallel execution is now available for virtually every platform and compiler. Additionally, the underlying architecture for the parallel execution and automatic, context-depending optimization has been significantly improved. Therefore Blaze 2.1 should prove to be the fastest and most flexible Blaze release yet.


23.3.2014: Blaze 2.0 goes parallel!

One of the main motivations of the Blaze 1.x releases was to provide maximum performance on a single CPU core for all possible operations. However, the free lunch is over and today's CPUs are not single core anymore. In order to fully utilize the performance potential of a multicore CPU, computations have to be parallelized across all available cores of a CPU. Therefore, starting with Blaze 2.0, the Blaze library provides automated shared memory parallelization. Get an impression of the possible performance boost in the Benchmarks section.


Wiki: Table of Contents


License

The Blaze library is licensed under the New (Revised) BSD license. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  • Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  • Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
  • Neither the names of the Blaze development group nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


Compiler Compatibility

Blaze is written in C++-98 and therefore compatible with a wide range of C++ compilers. In fact, Blaze is constantly tested with the GNU compiler collection (version 4.5 through 5.0), the Intel C++ compiler (12.1, 13.1, 14.0, 15.0), the Clang compiler (version 3.4 through 3.7), and Visual C++ 2010, 2012 and 2013 (Win64 only). Other compilers are not explicitly tested, but might work with a high probability.


Publications

  • K. Iglberger, G. Hager, J. Treibig, and U. Rüde: Expression Templates Revisited: A Performance Analysis of Current Methodologies (Download). SIAM Journal on Scientific Computing, 34(2): C42--C69, 2012
  • K. Iglberger, G. Hager, J. Treibig, and U. Rüde: High Performance Smart Expression Template Math Libraries (Download). Proceedings of the 2nd International Workshop on New Algorithms and Programming Models for the Manycore Era (APMM 2012) at HPCS 2012

Contributions

Klaus Iglberger -- Project initiator and main developer

Georg Hager -- Performance analysis and optimization

Christian Godenschwager -- Visual Studio 2010/2012/2013 bug fixes and testing

Tobias Scharpff -- Sparse matrix multiplication algorithms

blaze's People

Contributors

byzhang avatar igl42 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

blaze's Issues

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.