Codebase organization

63 views
Skip to first unread message

Victor Liu

unread,
Apr 18, 2014, 4:00:25 PM4/18/14
to libflame...@googlegroups.com
Hi all,

I'm not sure if this is the place to ask, since I'm seeing that there have never been any messages posted here...

I am interested in studying and possibly contributing to the libflame codebase, but the directory structure is confusingly deep with short one letter names. I'm wondering if this is documented somewhere.

-victor

Field Van Zee

unread,
Apr 18, 2014, 4:10:14 PM4/18/14
to libflame...@googlegroups.com

Victor,

Thanks for your interest in libflame. This is indeed the right place to ask such questions.

You are right that the libflame directory structure is a little daunting at first. Part of that is my fault--I could have done a better job of choosing the layout--but part of it is just due to the fact that libflame contains so many functions. If you ever take a look at BLIS (which was written after libflame), you'll probably agree that the directory tree is much easier to navigate. (BUT, the scope of BLIS is somewhat narrower than that of libflame, so its code is inherently easier to organize.)

Without an example, I can't say for sure, but the single letter directories you are referring to probably correspond to BLAS/LAPACK parameters:

side: l, r (left, right)
uplo: l, u (lower-stored, upper-stored)
trans: n, t, c, h (no transpose, transpose, conjugate-no-transpose, conjugate-transpose)
diag: n, u (non-unit diagonal, unit diagonal)
conj: n, c (no conjugate, conjugate)

Those are the ones I can think of off the top of my head. If you become familiar with the corresponding operation in BLAS or LAPACK, the letters will make more sense. One caveat: BLAS/LAPACK does not support a trans value of 'c' (conjugate-no-transpose). The 'c' in BLAS/LAPACK is actually what we call 'h' in libflame and BLIS: Hermitian transpose, or conjugate-transpose.

Hope that helps.

Field

Victor Liu

unread,
Apr 18, 2014, 4:34:02 PM4/18/14
to libflame...@googlegroups.com
Hi Field,

That does explain the "n" and "u" directories. I was also wondering what is the classification into the directories under src/; the lapack/ subdir contains most of the interesting stuff it seems, and I'm just guessing here. Under that, I assume things like "dec" means decomposition, "red" means reduction. Digging deeper into src/lapack/dec/hevd/, I assume "front" is the frontend, and "ln" and "lv" are for lower-tri no-vectors and lower-tri vectors. Inside front there are sometimes subdirs fla and flash...

Is there an existing document which describes all this? If not, it would be great to have this on the flame or github wiki. I don't seem to be able to edit the flame wiki, but I'd volunteer to add this to github (although I'm far from the most qualified person to do this).

Reply all
Reply to author
Forward
0 new messages