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

Instance attributes #9

Closed
wants to merge 3 commits into from
Closed

Instance attributes #9

wants to merge 3 commits into from

Conversation

zanellia
Copy link
Owner

Partially addresses this: #7. For now, only instance attributes are implemented.

@zanellia zanellia requested review from perrutquist and tmmsartor May 19, 2020 15:17
@@ -39,6 +39,7 @@
'pmt_gemm_tn': 'c_pmt_gemm_tn', \
'pmt_gemm_nt': 'c_pmt_gemm_nt', \
'pmt_trmm_rlnn': 'c_pmt_trmm_rlnn', \
'pmt_syrk_ln': 'c_pmt_syrk_ln', \
'pmt_gead': 'c_pmt_gead', \
'pmt_getrf': 'c_pmt_getrf', \
'pmt_getrsm': 'c_pmt_getrsm', \
Copy link
Collaborator

Choose a reason for hiding this comment

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

what is getrsm ?

Copy link
Owner Author

Choose a reason for hiding this comment

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

GEneral TRiangular Solve with Matrix right hand-side. I guess we can drop it and have just getrs? It's also a matter of type of the arguments and how overloading is handled by prometeo's parser. For now I found it easier to have two separate methods getrsm and getrsv (the second is not even implemented atm).

@@ -22,13 +22,15 @@
'global@pmt_gemm_tn': [], \
'global@pmt_gemm_nt': [], \
'global@pmt_trmm_rlnn': [], \
'global@pmt_syrk_ln': [], \
'global@pmt_gead': [], \
'global@pmt_potrf': [], \
Copy link
Collaborator

Choose a reason for hiding this comment

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

potrf_l

Copy link
Owner Author

Choose a reason for hiding this comment

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

I thought it might make sense to try to have API's of different level of abstraction and expose a simplified potrf, where lower is implicit, and a more verbose and versatile one where one could also pass the lower/upper and normal/transposed arguments. I still haven't found out a systematic way of defining these abstraction levels of the API, so any recommendation is more than welcome :)

@@ -22,13 +22,15 @@
'global@pmt_gemm_tn': [], \
'global@pmt_gemm_nt': [], \
'global@pmt_trmm_rlnn': [], \
'global@pmt_syrk_ln': [], \
'global@pmt_gead': [], \
'global@pmt_potrf': [], \
'global@pmt_potrsm': [], \
Copy link
Collaborator

Choose a reason for hiding this comment

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

What is potrsm? I guess you wanted to refer to potrs, same for getrs.

Copy link
Owner Author

Choose a reason for hiding this comment

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

same as above for getrsm

@zanellia
Copy link
Owner Author

Thanks @giaf for the review! I think it would make sense to trigger some discussion (with @tmmsartor
and @perrutquist, if they like) on how to formalize a more structured draft of the linear algebra API with different level of abstraction.

@giaf
Copy link
Collaborator

giaf commented May 22, 2020

From the naming of the other routines (e.g. gemm_nt, trmm_rlnn) I assumed that you wanted to stick to the BLASFEO naming (a.k.a. the standard BLAS and LAPACK naming, just with the literal arguments added to the name itself) for this level of abstraction. My comments go in that direction.

I agree that there can be different levels of abstraction, but I would strongly recommend to be consistent with that, while now it's a bit of a mixed bag: some "standard BLASFEO" (gemm_nt, trmm_rlnn), some "standard BLAS with implicitly fixed arguments" (potrf only lower), some "extended BLAS" (getrsm=getrs+m).

@giaf
Copy link
Collaborator

giaf commented May 22, 2020

Just to give a couple of point to think about, IMO the more standard is the name, the better, since people familiar with e.g. BLAS and LAPACK can just jump into it and use it straight away, or refer to the rich amount of documentation available online for these libraries.
For the BLASFEO API, I decided to hard-code the literals after the standard BLAS and LAPACK name because often only a few variants of the routines are available, and therefore it's easier for the user to just look at the header files and see which ones are there, instead of having to try them all out at run time and discover that from the error messages.

@zanellia
Copy link
Owner Author

replaced by #13

@zanellia zanellia closed this Jun 15, 2020
@zanellia zanellia deleted the instance_attributes branch January 5, 2022 09:00
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.

2 participants