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
undefined reference to pdspev, pdspgv, fmemreq #154
Comments
This looks like a mistake in preprocessor logic or build flags. I think fmemreq comes from PeIGS, which ships with NWChem.
I’ll try to debug later but may be slowed by holiday things.
|
There are two classes of problems here: PeIGSThe first is that you cannot build GA with PeIGS unless you are getting PeIGS from NWChem. I have tried in the past to make PeIGS a standalone library apart from NWChem but was not successful. I'm sure someone could do it, but it is not clear there exists such a person with a willingness to do it.
I do not know why you are building GA with PeIGS particularly since you are also enabling ScaLAPACK. While PeIGS is faster than ScaLAPACK in some scenarios, I'm not sure the benefit is worth the price of solving the standalone PeIGS problem. ARMCI-MPIThe second problem is that GA is using new APIs that are not supported by ARMCI-MPI. This is a real issue.
There are two solutions here. One is that GA can disable these APIs when ARMCI-MPI is used, which is probably a good thing anyways since it is possible that only ComEx supports them, in which case the other ARMCI implementation also has an issue here. The other solution is for ARMCI-MPI to implement these functions. I will be tracking progress on this here: pmodels/armci-mpi#28. |
Thanks for the analysis, Jeff. In practice nwchem is the only package in Debian which currently uses GA, so I figure that's why we haven't seen runtime problems. If I understood your analysis, nwchem is supplying the missing symbols when building /usr/bin/nwchem. We're building libga as a static library. But we can stop enabling PeIGS in GA if you recommend that. Would it interfere with nwchem if we do that? I'll keep watch on the ARMCI-MPI developments. |
I don’t remember for sure but it wouldn’t surprise me if NWChem requires PeIGS be enabled in the GA build. It’s easy enough to test that next time I’m at my desk. Due to my illness and holiday, don’t expect this until Friday.
If you are building GA only for NWChem, perhaps you can just roll the GA build into the NWChem build. That would make room for a PeIGS-free GA build for other users, although it seems there are none at the moment.
ARMCI-MPI patches are done but I haven’t merged. I know you all have to use a release of sorts so I might drop a 0.3 or something like that just so Debian doesn’t have to use a git hash as the version. This will require me to learn how releases work in git and GitHub (sad, I know, but I’m in the “master is gold” school of thought).
|
Thanks Jeff. Probably to keep the package management simple, I'll leave PeIGS activated in Debian's GA for now, to service nwchem. If another client package for GA shows up then we can make more drastic changes then. I can leave a README note to document the situation. Perhaps someone will show up to work on stand-alone PeIGS in the mean time. No great rush getting these patches through, go have a good Xmas rest :) |
@RizzerOnGitHub I created https://github.com/pmodels/armci-mpi/releases/tag/v0.3.1-beta for you. It has the memdev API stubs required to link GA. Please create an ARMCI-MPI issue for any follow-up discussion related to this release. Thanks! |
The updated armci-mpi builds fine for Debian, https://buildd.debian.org/status/package.php?p=armci-mpi&suite=experimental GA still gives the fmemreq error,
|
Ok, I think I can add the stubs that will convert compilation errors into runtime errors telling users they need to link against PeIGS from NWChem. |
On second thought, I wonder if Debian should just disable PeIGS. @edoapra do you think the cases where PeIGS is faster than ScaLAPACK are important enough to justify working around the spaghetti here? |
@jeffhammond I agree with you that disabling PeIGS when ScaLAPACK is available is the right thing to do |
If Debian disables PeIGS in GA, will that affect or compromise nwchem in any way? Or does it just mean nwchem will simply use GA+scalapack ? |
It might compromise performance in some small way, but that’s already true because there is no global performance maximum in NWChem configuration space. You would need at least two binaries, maybe three, to be optimal, even assuming one compiler. But that’s not really the point of the Debian package manager.
We will have to test to know the impact. I don’t know if I can do this soon but I’ll try.
|
Thanks Jeff. I'll prepare the Debian package to disable PeIGS then. |
When building ga (on a current Debian Linux system, e.g. build log at https://buildd.debian.org/status/fetch.php?pkg=ga&arch=amd64&ver=5.7-4%2Bb1&stamp=1569764063&raw=0 ), the build generates these error messages:
Which library do these functions come from (fmemreq, pdspev, pdspgv) ?
The text was updated successfully, but these errors were encountered: