-
Notifications
You must be signed in to change notification settings - Fork 572
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
Panzer: Clean up configure process #215
Comments
The debug inf checks are both incorrect. It should be one check that was recently changed to:
The intrepid one was for the original library. Intrepid2 was then developed inside intrepid1 as a subpackage, so at some point we started using the IntrepidIntrepid2 flag. Now Intrepid2 was moved into its own package and so you should use this new one. I am going to disable the inf check in Intrepid2 by default so we don't need this flag anymore. I think it is only enabled for debug builds anyway. We do need the teuchos long long flag, but IMHO this option should be removed all together. Trilinos requires c++11 and long long is now officially in the standard. The only reason it remains is that there are some applications that are still building portions of Trilinos without c++11. We need to get them changed over soon. We removed all Boost and BoostLib dependencies from Phalanx and Panzer. However we still need this for panzer builds because panzer depends on STKClassic and STKClassic has a required dependence on BoostLib. Dumping STKClassic is realistically probably 6 months out depending on how other components progress. We need netcdf long term. |
That is what is currently listed in the file README_BuildingTPLS.txt in Drekar. You might want to first update that file.
What is this check used for? How important is it? I think we can put in the logic to disable this when Panzer gets enabled automatically (along with a NOTE statement).
Since Teuchos is still required to be buildable without C++11, we can't unconditionally change the default. However, we could change the default based on if C++11 is enabled or not. Should we ask the Trilinos developers about how they feel about enabling
So we need BoostLib but not Boost now? There should just be one Boost TPL which can conditionally require various libs or not. That might be one thing I clean up too perhaps. Except we can't fix STK in Trilinos :-(
That is fine. It just means that Panzer should have a required dependency on Netcdf to trigger the enable of Netcdf when Panzer gets enabled. How the Netcdf libraries are found is another story (to be addressed). The goal is that someone should be able to just do |
I think we still need both. Boost is 95% header-only libraries and some packages just want headers. bjam is a pain and to require packages to build libraries when it they need headers only is extra busy work. What we should probably do is rename "Boost" to "BoostHeadersOnly". That would make it explicit in what is expects.
I don't understand this comment. Panzer has no direct dependencies on netcdf. It should not be declared in the Dependencies.cmake file for panzer. netcdf is an optional dependency of SEACAS ioss and is brought in in that dependency chain. The panzer adapters subpackage depends on seacas but still doesn't call anything directly. I thought our rule was to declare direct dependencies only. I think that in the future (if not already) IOSS will make netcdf optional (because we would use CGNS underneath) and in that case we won't need it. |
We don't need two TPLs for Boost. The way it can work is that, by default, the Boost TPL will not require any libraries. But packages can request more Boost libraries by calling something like:
and then when
Yes, that is true in general, but by declaring a require dependency on Netcdf, you will trigger the right enable logic. That is a bit of a hack but it would do the trick. Actually, what you really want would be to somehow trigger Any, we can work on this iteratively. But I guess there are not that many customers for Panzer at this point. This is the type of issue that would be much easier if these customer codes just created a big meta-project that included Trilinos and then they can handle these types of issues automatically (like we do for CASL VERA). |
Tpetra lets you disable any GO type in Tpetra explicitly, independently of Teuchos settings. For example, if you don't want GO=long long, set Tpetra_ENABLE_INT_LONG_LONG=OFF. I would prefer to disable GO=int by default than GO=long long. See #74 etc. |
Okay, good, I can see that
Now we just need to be able to turn off GO=int (by default would be good when Epetra is not enabled). See comment in #74. |
Getting started with this, I wanted to see about how to simplify the configure script that Matt uses for his application (part of trying to reproduce his problem). I found that enabling all optional packages and then disabling the packages that you don't want (i.e. "black-listing") results in fewer enabled SE packages and less enable/disable variables one needed to set. We use blacklisting for CASL VERA and I have found it to be more robust than "white-listing" (i.e. not enabling optional packages and then manually enabling the packages you want). I also ran into the issue of not setting Detailed Notes: Looking at starting to clean up Panzer/Drekar configure scripts ... Looking at the set of enabled packages from Matt's configure script for Drekar (which turns off optional packages then turns many packages on and off) for Drekar, the package enables/disables look like:
Running this configure script produced the following set of enabled packages and SE packages:
I want to look into enabling optional packages and then back-listing packages that you don't want. I came up with this configure list:
After fixing DrekarResearch/drekar_mhd/cmake/Dependencies.cmake to depend on STKClassic instead of STK, I ran this configure script and it yielded the following set of enabled packages and SE packages:
As you can see, the approach of enabling all optional packages and then black-listing required only 15 enables/disables compared to 28 enables/disables and gave only 68 enabled SE packages compared to 89 enabled SE packages compared to the appraoch of turning off optional eanbles and then doing many enables and disables. But does it build? It should if the dependencies stated in the Dependencies.cmake file are correct. That will need to be tested to be sure (and the fix the missing dependencies). I will now just configure and build Panzer to try to reproduce Matt's build errors. Does Drekar depend on more packages that Panzer?
(NOTE: you get strange test failures unless you set With just Panzer enabled, I get the same parent packages as for enabling Drekar but several fewer SE packages:
It looks like Drekar is enabling several SEACAS subpackages that Panzer is not. But that is the only difference that I can see. What I would do is to put these package disables into a CMake fragment file so that they could be reused. I would call it something like PanzerDisables.cmake and then they could be passed through in Trilinos_CONFIGURE_OPTIONS_FILE in a do-configure script. Building and running Panzer tests:
This gave all passing tests:
But this just creates a SERIAL node, not CUDA. Matt is having trouble with nvcc_wrapper. |
Once we get the Panzer configure cleaned up, then should set up nightly builds on the ATTB machines (using ATTBDevEnv.cmake) and post results to the Trilinos CDash site. This will be a way of ensuring the ATTBDenvEnv.cmake module #172 works with Trilinos on this machine. This will catch changes in the dev env on the ATTB machines or changes to Trilinos that brake this basic build. |
It just occurred to me that I don't need to wait until I have the configures totally cleaned up before I add automated testing. Therefore, next I will set up a cron job to do the Panzer configure, build, and test mentioned above to make sure this keeps working. If someone on the SEMS team wants to replace this cron job with a Jenkins driver, that is fine with me. But all I have working right now is the non-CUDA build on hansen and shiller. The CUDA build will likely take some more time. |
In the below email thread, the decision was made to just unconditionally set the default for The long-term solution of changing Panzer to use subviews will go into another story issue for Panzer. From: Bartlett, Roscoe A Roger, It would be a feature that would hopefully only rarely be used and would be https://docs.google.com/document/d/1WKs8rJhI3037yKGnEVMhIx9dPN7a7uFRM5isdNAhAXI I just did not want people to think this new TriBITS feature would take a lot Short term: Set the default for Intrepid2_ENABLE_DEBUG_INF to OFF Long term: Change to use array subviews to avoid touching memory that is not Sounds good to me. Cheers, -Ross From: Pawlowski, Roger P ok. In addition to the runtime overhead, I was thinking that it seemed Roger From: Bartlett, Roscoe A Roger, This solution is obiously fine with me. But note that given the incresed -Ross From: Pawlowski, Roger P Hi All, The fastest fix with least hassle is to change:
to:
So no flags need be specified by default for panzer builds. Then in Roger |
This issue has had no activity for 365 days and is marked for closure. It will be closed after an additional 30 days of inactivity. |
This issue was closed due to inactivity for 395 days. |
When you try to configure Panzer under Trilinos, you must manually set several specialized options like:
These things should be enabled automatically when Panzer gets enabled (either implicitly or explicitly). This will simplify a lot of configure scripts involving Panzer (such as with Drekar and downstream projects).
Tasks:
Intrepid2_ENABLE_DEBUG_INF_CHECK=OFF
automatically when Panzer is enabled (either explicitly or implicitly) ... The default will be set to OFF unconditionally ...CC: @rppawlo, @bathmatt, @eric-c-cyr
The text was updated successfully, but these errors were encountered: