-
Notifications
You must be signed in to change notification settings - Fork 196
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
CMake updates #1181
base: master
Are you sure you want to change the base?
CMake updates #1181
Conversation
This is strange. There is no nvidia-smi.exe in the folder C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.6/bin. But after searching, there is one in See |
I can build hypre with the following command line:
ex1 reports cuda error
|
@adam-sim-dev, this seems to be an issue with the NVIDIA driver. Could you check whether you are able to build and run the code: https://github.com/NVIDIA/cuda-samples/tree/master/Samples/1_Utilities/deviceQuery |
Test pass after I replace 12.5 with 12.6 in the .vcxproj:
|
Ok, good! Could you also try running |
Run in debug mode:
|
Thank you! It seems we will need to do more work on this. I'll let you know, thanks for helping |
My pleasure. |
Test on Ubuntu:
Hypre library could be built successfully. However, examples build failed.
|
Hi Adam, I can't reproduce this on Ubuntu, gcc-11 and nvcc 12.6. Could you try a fresh build (remove cmbuild and call cmake again). Another idea is to disable LTO and enable verbose mode with |
Adam, did you use |
Yes, I copied |
Thanks! Now I see your MPI installation is exporting LTO-related compile flags to hypre, which causes issues with the device build. I've added a check to remove those flags when they come from the MPI dependency and also a new option called |
systems, such as Linux, AIX, and Mac OS X. Then in `CMake instructions`_, we | ||
explain an alternative approach using the CMake build system [CMakeWeb]_, which | ||
is the best approach for building hypre on Windows systems in particular. | ||
After obtaining the source code (see :ref:`getting-source`), there are two main ways to build hypre: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
three main ways
|
||
Hypre can support NVIDIA GPUs with CUDA and OpenMP (:math:`{\ge}` 4.5). The related ``configure`` options are | ||
[Spack_](https://spack.io/) is a package manager designed for supercomputers, Linux, and macOS. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There is a rendering issue here with the spack link
GPU Build Options | ||
============================================================== | ||
|
||
hypre provides support for multiple GPU architectures through different programming models: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Don't start a sentence with "hypre". Change to "The hypre library".
|
||
.. _CMake options: | ||
hypre provides CMake configuration files that enable easy integration. Create a |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The hypre library
|
||
As with the ``Struct`` interface, each process describes that portion of the | ||
grid that it "owns", one box at a time. Figure :ref:`fig-sstruct-grid` shows | ||
grid that it "owns", one box at a time. `Figure 8 <fig-sstruct-grid>`_ shows |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This link still doesn't work
@@ -242,8 +247,8 @@ describes stencil entry 5 in the figure is given the entry number 5, the offset | |||
to which this entry couples). Recall from Figure :ref:`fig-gridvars` the | |||
convention used for referencing variables of different types. The geometry | |||
description uses the same convention, but with indices numbered relative to the | |||
referencing index :math:`(0,0)` for the stencil's center. Figure | |||
:ref:`fig-sstruct-graph` shows the code for setting up the graph . | |||
referencing index :math:`(0,0)` for the stencil's center. `Figure 9 <fig-sstruct-graph>`_ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This link doesn't work either
@@ -253,7 +258,7 @@ referencing index :math:`(0,0)` for the stencil's center. Figure | |||
Figure 7a |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This figure label no longer makes since with the addition of Figs 8 and 9
(the code for the other processes is similar). The "icons" at the top of the | ||
figure illustrate the result of the numbered lines of code. Process 0 needs to | ||
describe the data pictured in the bottom-right of the figure. That is, it needs | ||
portion of the grid that it "owns", one box at a time. `Figure 11 <fig-sstruct-fem-grid>`_ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Link doesn't work
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks good to me, except that the manual still has some figure issues. If you find a solution, I'd like to see it before you merge. Otherwise, looks great! Thanks!
HYPRE_SetupGPUToolkit.cmake
to manage GPU options in cmake buildCMakeLists
and moved helper functions toHYPRE_CMakeUtilities.cmake
, e.g.,setup_git_version_info
for configuring and displaying hypre version using git version infoSOVERSION
field to CMake buildHYPRE_INSTALL_PATH
in favor of the commonly usedCMAKE_INSTALL_PATH
HYPRE_BUILD_TYPE
in favor of the commonly usedCMAKE_BUILD_TYPE
HYPRE_ENABLE_SHARED
in favor of the commonly usedBUILD_SHARED_LIBS
machine-tioga
HYPRE_ENABLE_LTO
option to turn on link-time optimizationCloses #1104
Closes #673
Closes #1084
Closes #1073
Closes #1072
Closes #1039
Closes #907
Closes #767
Closes #757
Closes #771
Closes #501
Closes #473
Closes #228
Closes #928
Closes #508
Closes #555
Closes #502
Closes #464