Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • May 14 01:33
    poulson closed #276
  • May 14 01:33
    poulson commented #276
  • May 14 01:30

    poulson on master

    Update README.md (compare)

  • May 14 01:24

    poulson on master

    added logo (compare)

  • May 10 21:37
    jedbrown commented #276
  • May 10 21:25
    poulson commented #276
  • May 10 21:21
    jedbrown commented #276
  • May 10 17:08
    poulson commented #276
  • May 10 17:03
    tesch1 opened #276
  • Apr 10 13:18
    JM1 commented #275
  • Apr 10 13:16
    JM1 synchronize #275
  • Apr 10 08:56
    JM1 opened #275
  • Mar 06 03:47
    Raviteja1996 closed #274
  • Mar 05 05:46
    Raviteja1996 opened #274
  • Feb 11 21:53
    BenBrock commented #228
  • Feb 11 21:52
    BenBrock commented #228
  • Feb 11 21:51
    poulson commented #228
  • Feb 11 21:50
    poulson commented #228
  • Feb 11 21:45
    BenBrock commented #228
  • Jan 23 23:57
    adambaskerville commented #273
Jeff Hammond
@jeffhammond
you won't get sudo on an NSF supercomputer :-) i'll try to find time to login and try.
Yashar Hezaveh
@yasharhezaveh

I think this is because of something I had encountered before,,,,, my guess is that I need:
-D PYTHON_SITE_PACKAGES=$SCRATCH/elemental

while configuring

trying it now
Yashar Hezaveh
@yasharhezaveh
yes. That's what it was
so I've compiled and installed successfully. I'll compile my code now and see if it runs properly
Robert Schwarz
@rschwarz
Hi, is it OK to ask usage questions here?
Specifically, I want to use Ridge regression, both for over- as well as underdetermined systems.
But it seems that only one case is implemented:
https://github.com/elemental/Elemental/blob/master/src/lapack_like/euclidean_min/Ridge.cpp#L30
I wonder if I can just append zero columns to fit in the case, or whether that idea breaks down, because the rank will be too low then?
Jack Poulson
@poulson
the Cholesky branch should still work with m < n
Lines 35-45 aren't specific to m >= n
so you could either manually run that or contribute a patch
Robert Schwarz
@rschwarz
Thanks for the hint, I will try that!
Muku
@mukunthh
Greetings @poulson @jeffhammond - I notice OpenMP support in elemental is limited to only blas level -1 like routines (assuming they are critical hotspots). Is there an higher level implementation or am i missing something.?
Jeff Hammond
@jeffhammond
@mukunthh I am not aware of anything higher level. The OpenMP support in Elemental matches the OpenMP inside of BLAS/LAPACK calls that Elemental makes, for better or worse. If @poulson or anyone else were to rewrite Elemental focused on shared-memory parallelism, then OpenMP tasking would be the best way to address traditional OpenMP's shortcomings w.r.t. composability i.e. nesting.
Muku
@mukunthh
@jeffhammond Thanks. Were you referring to a pure shared-memory parallelism approach or extend the existing hybrid parallelism by exploiting
nested regions with omp tasks.? I understand the former is relatively massive to take over.
@poulson Any interest or thoughts on a higher level open-mp implementations on the core elemental routines/ bottleneck regions.?
Jack Poulson
@poulson
@mukunthh I am no longer developing Elemental in its current form but might start a new project from scratch in the future and incorporate lessons learned.
Jack Poulson
@poulson
And, if I did, it would be in a scenario where there was an active code review circle, ClangTidy integrated into the project, and sufficient connection with applications to drive development. And MPI would not seep into everything.
Jeff Hammond
@jeffhammond
@mukunthh To do OpenMP properly, it must be used holistically, just like MPI (because unlike OpenMP, it's almost impossible to not use MPI holistically). Unfortunately, that requires fairly extensive changes.
Muku
@mukunthh
@jeffhammond @poulson Thanks for the responses. :)
Jack Poulson
@poulson
That is the point of having MPI sequestered downstream.
Alex Gittens
@alexgittens
What is the memory requirement of Elemental's GEMM? It seems to need more than just the storage for the output. I'm on a supercomputer, so I'd like to be able to ask for just enough memory.
Jack Poulson
@poulson
You need to be able to store (m/grid_height) × blocksize submatrices for the gathered pieces of A and blocksize x (n/grid_width) submatrices for the gathered pieces of B on each core.
Alex Gittens
@alexgittens
Thanks!
Alex Gittens
@alexgittens
My matrix A was stored in row-distributed format. Looking at the elemental code, it looks like was being copied and redistributed into block cyclic format implicitly by the GEMM routine ... is that indeed what the DistMatrixReadWriteProxy does?
Aidan Dang
@AidanGG
Hi Jack, I wrote that paper citing my use of Elemental as I said I would a while back: https://arxiv.org/abs/1712.07311. Thanks for all the help getting there.
Jack Poulson
@poulson
@alexgittens Block distributions (other than the exceptional case of the Hessenberg QR algorithm) should only be invoked if you requested an input or output to be in that distribution.
Jack Poulson
@poulson
@AidanGG Thanks for sharing the link!
Peter Dräxler
@PeterDraex

Hello. Elemental is the first library I'm including in C++ and need some help. I'm using Visual Studio 2017 on Windows.

I've copied the contents of include directory to my project, added . and El/core/imports to "include folders". The compiler is now yelling at me that it's missing El/config.h. The file is really not there, but making an empty one leads nowhere. What did I miss?

How should I start using Elemental in my project?

Jack Poulson
@poulson
Hi Peter. Unfortunately there isn't currently Windows support (and it would be a lot of work).
But, more generally, one would need to install the package and then appropriately configure linking to the Elemental libraries and configure the include paths to include the directory that Elemental's includes were installed into
Peter Dräxler
@PeterDraex
Aha, thanks
Juan Sanchez
@tcaduser
Hello, I am interested in using your software for the direct solution quad precision sparse matrices using the C++ API. Is this possible? Quad precision is not mentioned on this page of the documentation: http://libelemental.org/documentation/dev/lapack_like/solve/Linear.html?highlight=
Andreas Noack
@andreasnoack
Has anybody had problems with the linking step for parmetis on macOS recently? I'm getting
[ 98%] Building C object libparmetis/CMakeFiles/parmetis.dir/wspace.c.o
[ 99%] Building C object libparmetis/CMakeFiles/parmetis.dir/xyzpart.c.o
[100%] Linking C shared library libparmetis.dylib
Undefined symbols for architecture x86_64:
  "_MPI_Allgather", referenced from:
      _libparmetis__gkMPI_Allgather in gkmpi.c.o
  "_MPI_Allgatherv", referenced from:
      _libparmetis__gkMPI_Allgatherv in gkmpi.c.o
It's been a while since I've built Elemental, but I'm building a commit (as part of Elemental.jl) that used to work but maybe a recent version of Xcode is causing this issue.
Jack Poulson
@poulson
@tcaduser I have been on a hiatus for the last year or so but there should be support despite the outdated docs.
@andreasnoack You have probably compiled more recently than me :-)
Andreas Noack
@andreasnoack
Just forced the build to use GCC (despite elemental/Elemental#181) and there wasn't a problem with linking parmetis so this indeed seems to be related to latest Xcode/Clang. I'll try to see if I can figure out what is going on.
Andreas Noack
@andreasnoack
@poulson Actually, it looks a lot like elemental/Elemental#58
Andreas Noack
@andreasnoack
So it looks like jeffhammond/BigMPI#38 hit something similar and I was able to fix this by explicitly setting CMAKE_C(XX)_COMPILER=mpic(c/xx) as suggested in https://github.com/jeffhammond/BigMPI/issues/38#issuecomment-311779618. Shouldn't Cmake handle this automatically when detecting MPI?
Jack Poulson
@poulson
The CMake build is beyond a Rube Goldberg machine and should not be assumed to be sane.
Matthias Redies
@MRedies
Are there any auxillary routines, that calculate local indicies to global indicies and vice versa? I couldn't find anything in the documentary.
Jack Poulson
@poulson
@MRedies The following routines should serve that purpose:
Alex Gittens
@alexgittens
I'm GEMMing two <VR, STAR> matrices A*B, where A is 400GB and B is 1MB. I have more than a terabyte of memory, but this GEMM gives me OOM errors. Any reason why this should be the case? Do I need to relay out the matrices for some reason first?
A is 6177583-by-8096, V is 8096-by-20, the resulting matrix should be 6177583-by-20
(V is B)
Alex Gittens
@alexgittens
I tried relaying out every matrix to MC,MR explicitly, and I'm getting OOM errors when relaying out A by creating a new matrix with MC,MR and copying A into it.
so I guess the question now is, what is the memory cost of relaying out a matrix from VR,STAR to MC, MR? I'd like to think that as long as I can hold two copies of the matrix in memory, it should be fine.
Jack Poulson
@poulson
There is likely a redistribution behind the scenes, which can be memory hungry. You probably want to gather B into a STAR,STAR and call a local multiply then redistribute the result as desired.