Problems installing / compiling v17, v19

268 views
Skip to first unread message

Nadeem Malik

unread,
Feb 14, 2021, 2:44:52 PM2/14/21
to Nek5000
 Hi, 

I am having problems installing, compiling, and building the ppiclF subroutine attachments to Nek5000.  I am trying to follow the example case for Nek5000 give in https://dpzwick.github.io/ppiclF-doc/quickstart/link.html -- but there are problems that I do not understand. 

I thought I had installed the Nek5000 v19 (I have a working e3q code) -- but in the above sequence, when I do 

"./makenek"  -- I get the error message:

 login4.stampede2(1018)$ ./makenek
using source path: /home1/06396/tg856952/Nek5000
using source path: /home1/06396/tg856952/Nek5000
FATAL ERROR: Your makenek is incompatible!
Please upgrade to the version shipped the source

-- which suggests that I do not have the correct version installed? How can I check that this?

However, there is an other problem which occurs just before this step, when I try to make the executable using "make" in my directory /home1/06396/tg856952/ppiclF/TestNek -- It seems to be compiling nicely, but then it appears that there some missing subroutines finctions userf_, userck_, and usrdat2_  :

/home1/06396/tg856952/ppiclF/TestNek/uniform.o: In function `userf_':
uniform.f:(.text+0x53): undefined reference to `ppiclf_solve_getprofldijkef_'
uniform.f:(.text+0x74): undefined reference to `ppiclf_solve_getprofldijkef_'
uniform.f:(.text+0x93): undefined reference to `ppiclf_solve_getprofldijkef_'
/home1/06396/tg856952/ppiclF/TestNek/uniform.o: In function `userchk_':
uniform.f:(.text+0x1f8): undefined reference to `ppiclf_solve_getprofldijkef_'
uniform.f:(.text+0x8cd): undefined reference to `ppiclf_solve_interpfielduser_'
uniform.f:(.text+0x8de): undefined reference to `ppiclf_solve_interpfielduser_'
uniform.f:(.text+0x8ef): undefined reference to `ppiclf_solve_interpfielduser_'
uniform.f:(.text+0x90a): undefined reference to `ppiclf_solve_integrateparticle_'
/home1/06396/tg856952/ppiclF/TestNek/uniform.o: In function `usrdat2_':
uniform.f:(.text+0x17e7): undefined reference to `ppiclf_comm_initmpi_'
uniform.f:(.text+0x1b2e): undefined reference to `ppiclf_solve_initparticle_'
uniform.f:(.text+0x1b52): undefined reference to `ppiclf_solve_initgaussianfilter_'
uniform.f:(.text+0x1b83): undefined reference to `ppiclf_comm_initoverlapmesh_'
uniform.f:(.text+0x1b93): undefined reference to `ppiclf_solve_initneighborbin_'
uniform.f:(.text+0x1ba9): undefined reference to `ppiclf_solve_initwall_'
uniform.f:(.text+0x1bba): undefined reference to `ppiclf_solve_initperiodicx_'
make: *** [nek5000] Error 1

I think that this can only be if these files have not been compiled properly?

I am stuck at the moment. Please advise.

Thanks
Nadeem 

Guillaume Chauvat

unread,
Feb 14, 2021, 2:59:02 PM2/14/21
to nek...@googlegroups.com
Hi,

the makenek scripts generates the makefile and needs to be compatible with the version of nek that you are using.
You can find a compatible makenek at $Nek5000/bin/makenek that you can copy and adapt to your configuration if needed.

Then you should probably clean all the build files and recompile from scratch to avoid versions being mixed up:
./makenek clean
./makenek <case_name>


Guillaume
--
You received this message because you are subscribed to the Google Groups "Nek5000" group.
To unsubscribe from this group and stop receiving emails from it, send an email to nek5000+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/nek5000/3df67f13-1bb0-4168-aa70-21c261741cf9n%40googlegroups.com.

Nadeem Malik

unread,
Feb 14, 2021, 3:41:38 PM2/14/21
to Nek5000
Thanks, I'll try this.
But how do you recognize the correct makenek version?

-nadeem

Guillaume Chauvat

unread,
Feb 14, 2021, 4:04:18 PM2/14/21
to nek...@googlegroups.com
It's the one that comes with the Nek5000 source code you're compiling.
If it's not the right version it will tell you, as it happened here.

Guillaume

Nadeem Malik

unread,
Feb 14, 2021, 8:00:59 PM2/14/21
to Nek5000
I have looked at the makenek contained in ~/Nek5000/bin (this is the source code version I presume); and also the version that I now have in ~/ppiclF/TestNek. I have attached both makenek files. 
They are a little different, but not much. The most significant difference that I can see is:

VERMAKENEK="19.0.1"   --- Testnek
VERMAKENEK="19.0.0"  ---  source

Can you help me merge the two versions together please.
Thanks

Nadeem

Nek5000-source.txt
Nek5000-Testnek.txt

Stefan K.

unread,
Feb 15, 2021, 2:10:23 AM2/15/21
to Nadeem Malik, Nek5000
Please note that we cannot provide any support for 3rd-party code like
ppiclF on this mailing list.
> --
> You received this message because you are subscribed to the Google Groups "Nek5000" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to nek5000+u...@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/nek5000/28240fdf-8536-4c0f-b1ec-e7ac84a311f5n%40googlegroups.com.

Nadeem Malik

unread,
Feb 22, 2021, 12:32:52 PM2/22/21
to Nek5000
Hi Stefan,

I understand, but I am caught between rock and a hard place -- because there are several parties involved here: nek5000, ppiclF, and TACC Stampede. 
The problem is that I do not think any one of them can sort this out by themselves, but collectively things could be done within minutes I believe. 
Unfortunately, the 3rd parties involved have no specific protocol to liaise with each other -- I am looking for some benign individual who can sort it out for me -- because I cannot make any progress due to a technicality.

I have asked the TACC Stampede helpdesk on XSEDE about this, and they say:

-------------------------
Hi Nadeem,

From the error message, it looks like some library (or objective file *.o) is missing during the liking step (I guess it's the library of ppiclf because of the names of the undefined references).

One thing you can try is to find out which library (or objective file) defines those symbols and add that library (e.g. -L$PPICLF_LIB_DIR -lppiclF) to the list of linking files (see below) manually and see if the binary is built.

 (* The last command executed before getting error messages)

                  mpif77 -O2 -fpp -r8  ..... -o nek5000  .... (list of linking files)

 Once you find out the missing library, you can then modify the makefile to include the change.

Cheers,

Albert, TACC HPC

-------------------------

So, where do I find the missing files -- which ones are missing?

(I attach the relevant files and outputs for reference.)

Thanks
Nadeem
Nek5000-make.txt
Nek5000-source.txt
Nek5000-makenek.txt
Nek5000-Testnek.txt

YuHsiang Lan

unread,
Feb 22, 2021, 1:27:31 PM2/22/21
to Nek5000
Hi Nadeem,

You are facing two issues.


Nek5000 won't know how other 3rd-party applications couple or interact with Nek5000.
Even though it seems you run Nek5000 and it calls ppicIF at some points, this usage is usually not known from the Nek5000 side.

According to the ppicIF github, it seems you have to use the makenek under ppiclF's example ( ppiclF/examples/Nek5000/makenek ).
That makenek is a modification on the top of Nek5000's one to link the ppicIF library, so your Nek5000 will find those "missing files" at the default locations.
(Prior to that, you might need to compile the ppicIF. Please follows their instructions)


Due to the active developments, these two codes might have different versions.
Nek5000 won't know what version of Nek5000 that each version of ppiclF uses.
Let alone Nek5000 usually only supports the latest repo version and the release version (sometimes).

In your case, your ppicIF's makenek are set to a Nek5000 version VERMAKENEK="19.0.0".
So, you have to find the matched version of Nek5000. (you can do so by going though the git history to find when VERMAKENEK=19.0.0)

If the version varies too much, makenek might detect a mismatch and printing this
  "FATAL ERROR: Your makenek is incompatible!"


Hope this helps,
Yu-Hsiang
--
Reply all
Reply to author
Forward
0 new messages