Giter VIP home page Giter VIP logo

sym_preserving_algs's Introduction

This repository contains correctness tests and performance benchmarks for symmetry preserving algorithms for symmetric tensor contractions, which are described in

http://dx.doi.org/10.3929/ethz-a-010345741

The matlab directory contains implementations of symmetry preserving algorithms (for batches of) matrix-vector products, rank-2 symmetric updates, and symmetrized products of symmetric matrices.

The python directory contains prototype implementations of algorithms for AB+BA where A and B are symmstric and each elementwise oepration is a matrix-multiplication. It also contains a script to test the sensitivity of error for mat-vec relative to condition number of the matrix

Specifically,

  • matlab/test_symv.m - given list of matrix dimensions (ns) tests relative error of symmetry preserving algorithm for mat-vec relative to direct evaluation approach, for random input.
  • matlab/test_symv2.m - given list of matrix dimensions (ns) tests relative error of symmetry preserving algorithm for mat-vec relative to direct evaluation approach, for input that is designed to maximize error for the symmetry preserving algorithm.
  • matlab/test_sysysy.m - given list of matrix dimensions (ns) tests relative error of symmetry preserving algorithm for mat-mat product relative to direct evaluation approach, for random input.
  • matlab/test_symv2.m - given list of matrix dimensions (ns) tests relative error of symmetry preserving algorithm for mat-mat product relative to direct evaluation approach, for input that is designed to maximize error for the symmetry preserving algorithm.
  • matlab/test_syr2.m - given list of matrix dimensions (ns) tests relative error of symmetry preserving algorithm for symmetrized outer product relative to direct evaluation approach, for random input.
  • matlab/test_syr2k.m - given list of matrix dimensions (ns) tests relative error of symmetry preserving algorithm for a sum of k symmetrized outer products relative to direct evaluation approach, for random input.

The c directory contains tests for higher-order versions of symmetry preserving algorithms and a benchmrk for the AB+BA product where each element of the symetric A and B matrices. is a matrix.

The correctness tests relative Cyclops Tensor Framework https://github.com/cyclops-community/ctf and are currently (as of Oct 1, 2019) also includes in the CTF repo under studies.

Specifically,

  • c/fast_tensor_ctr.cxx - uses CTF to test symmetry preseving algorithm for any n,s,t,v.
  • c/fast_sy_as_as_tensor_ctr.cxx - uses CTF to test symmetry preseving algorithm for any n,s,t,v with antisymmetric tensors as input.
  • c/fast_as_as_sy_tensor_ctr.cxx - uses CTF to test symmetry preseving algorithm for any n,s,t,v with an antisymmetric tensor as input and anitsymmetric output.
  • c/s1t1v1_blk_seq.cxx - uses C/BLAS to perform AB+BA with elementwise mat-mat products sequentially (build via Makefile).
  • c/s1t1v1_blk_omp.cxx - uses C/BLAS to perform AB+BA with elementwise mat-mat products using OpenMP threading over blocks (build via Makefile).

sym_preserving_algs's People

Contributors

solomonik avatar

Watchers

 avatar  avatar

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.