Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implementation of BMat16 #38

Open
wants to merge 16 commits into
base: main
Choose a base branch
from

Conversation

Victorin-Brunel
Copy link

@Victorin-Brunel Victorin-Brunel commented Jul 10, 2024

Here are the additions regarding BMat16 :

  • Creation of BMat16
  • Various constructors (with a vector register of 256 bits, 4 64 bits uint, or a two-dimensional vector)
  • Comparison operators (==, !=, <, >)
  • Acces operator to a particular bit at a position (i, j)
  • Method to set a bit at a position (i, j)
  • A convertor to a two-dimensional array
  • Bitwise or operator between two matrices
  • Naive transposition
  • Optimized transposition with vector instructions
  • Optimized matrix multplication
  • Optimized matrix multplication using BMat8 matrix multiplication
  • Two naive multiplications (one with the acces operator, the other with the array conversion)
  • Number of non-zero rows
  • Vector of rows
  • Identity matrix of size 0 to 16
  • Random matrix, and the possibility to specify a size from 1 to 16
  • Swap of two matrices
  • Display operator

@james-d-mitchell
Copy link
Member

Closing and reopening to trigger the ci again

Copy link
Member

@james-d-mitchell james-d-mitchell left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've tried BMat16's with libsemigroups (basically dropping it in everywhere we use HPCombi::BMat8 in the tests) and found no issues whatsoever. So I'm happy to merge this if you are @hivert ?

@hivert
Copy link
Collaborator

hivert commented Jan 21, 2025

I've tried BMat16's with libsemigroups (basically dropping it in everywhere we use HPCombi::BMat8 in the tests) and found no issues whatsoever. So I'm happy to merge this if you are @hivert ?

I'd like to look a little at the generated assembly code to check that some think are properly optimized by the (a) compiler (notably some product by power of 2 which could be written as shift). I try to do it either during the week-end or next week. Other than that, I'm Ok to merge.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants