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

Add padded matrix types and packed analogues #15

Open
jhenahan opened this issue Mar 14, 2014 · 4 comments
Open

Add padded matrix types and packed analogues #15

jhenahan opened this issue Mar 14, 2014 · 4 comments

Comments

@jhenahan
Copy link

Re: our conversation in #n-h the other day:

  • Padded symmetric
  • Padded triangular
  • Padded Hermetian

and the packed analogues. I'll then get to work on their versions of gemm. I may also have a go at writing the types myself if I have time tomorrow.

@cartazio
Copy link
Member

Cool!
Theres some subtleties, you'll notice if you look at and stare a bit.

Just do the padded versions for now. the Blas routines only work on those versions. Its lapack that can use packed. (but yes, lets do those too!)

the docs on triangular mult, trmm and the analogous ones for hemm (hermitian mat mul) and symm (symmetric mat mult)

will help you understand a bit of whats going on

we'll also need to have types like the following

data Side = Left | Right

data Diagonal = Unit | NonUnit
data SDiagonal :: Diagonal -> * where 
     SUnit :: SDiagonal Unit 
     SNonUnit :: SDiagonal NonUnit

data UpperLower = Upper | Lower
data SUpperLower :: UpperLower ->* where
       SUpper :: SupperLower Upper
       SLower :: SupperLower Lower 

as you might guess, Diagonal and UpperLower will be singletons in the padded matrix formats along with the more obvious Row vs Column Major is, and the Left Right business is part of the mat mult api's themselves

@cartazio
Copy link
Member

I look forward to reviewing the patch! :)

@jhenahan
Copy link
Author

I'll keep subtleties in mind. 😆 Thanks for the doc links.

@cartazio
Copy link
Member

holler and ask questions on this ticket if you get stuck or confused. I'm trying to have any "explanations" be logged on tickets so that tis easier to glue together less terrible docs that are searchable online later :)

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

No branches or pull requests

2 participants