deepmodeling / deepmd-kit

A deep learning package for many-body potential energy representation and molecular dynamics
https://docs.deepmodeling.com/projects/deepmd/
GNU Lesser General Public License v3.0
1.41k stars 486 forks source link

pt: fix compile error when use intel mpi #3919

Closed CaRoLZhangxy closed 2 days ago

CaRoLZhangxy commented 1 week ago

MPIX_Query_cuda_support() is not defined in intelMPI

Summary by CodeRabbit

coderabbitai[bot] commented 1 week ago

Walkthrough

In the latest update, checks for CUDA support within MPI were integrated into the build system and source code. Conditional logic was added to manage CUDA awareness based on whether MPIX_Query_cuda_support is available. If unavailable, NO_CUDA_AWARE is defined, altering configuration and functionality accordingly. This adjustment ensures compatibility and efficient handling of MPI versions with and without CUDA support.

Changes

File Summary
source/op/pt/CMakeLists.txt Added a check for MPIX_Query_cuda_support using CheckCXXSymbolExists and defined NO_CUDA_AWARE if absent. Updated linking and compilation definitions for deepmd_op_pt.
source/op/pt/comm.cc Added conditional logic related to CUDA support based on MPI version. Introduced preprocessor directives (NO_CUDA_AWARE, I_MPI_VERSION, MPIX_Query_cuda_support) and adjusted the Border class accordingly.

Sequence Diagram(s)

sequenceDiagram
    participant CMakeLists.txt
    participant Compilation
    participant comm.cc
    participant MPI
    participant Execution

    CMakeLists.txt->>+Compilation: Check for MPIX_Query_cuda_support
    Compilation-->>CMakeLists.txt: Define NO_CUDA_AWARE if absent
    comm.cc-->>comm.cc: Conditional compilation (NO_CUDA_AWARE)
    MPI-->>comm.cc: Provide MPI version and CUDA support
    Execution->>comm.cc: Instantiate Border class
    comm.cc-->>Execution: Adjust behavior based on CUDA awareness

[!TIP]

Early access features: enabled We are currently testing the following features in early access: - **OpenAI `gpt-4o` model for code reviews and chat**: OpenAI claims that this model is better at understanding and generating code than the previous models. We seek your feedback over the next few weeks before making it generally available. Note: - You can enable or disable early access features from the CodeRabbit UI or by updating the CodeRabbit configuration file. - Please join our [Discord Community](https://discord.com/invite/GsXnASn26c) to provide feedback and report issues. - OSS projects are currently opted into early access features by default.

Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

Share - [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai) - [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai) - [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai) - [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)
Tips ### Chat There are 3 ways to chat with [CodeRabbit](https://coderabbit.ai): - Review comments: Directly reply to a review comment made by CodeRabbit. Example: - `I pushed a fix in commit .` - `Generate unit testing code for this file.` - `Open a follow-up GitHub issue for this discussion.` - Files and specific lines of code (under the "Files changed" tab): Tag `@coderabbitai` in a new review comment at the desired location with your query. Examples: - `@coderabbitai generate unit testing code for this file.` - `@coderabbitai modularize this function.` - PR comments: Tag `@coderabbitai` in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples: - `@coderabbitai generate interesting stats about this repository and render them as a table.` - `@coderabbitai show all the console.log statements in this repository.` - `@coderabbitai read src/utils.ts and generate unit testing code.` - `@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.` - `@coderabbitai help me debug CodeRabbit configuration file.` Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. ### CodeRabbit Commands (invoked as PR comments) - `@coderabbitai pause` to pause the reviews on a PR. - `@coderabbitai resume` to resume the paused reviews. - `@coderabbitai review` to trigger an incremental review. This is useful when automatic reviews are disabled for the repository. - `@coderabbitai full review` to do a full review from scratch and review all the files again. - `@coderabbitai summary` to regenerate the summary of the PR. - `@coderabbitai resolve` resolve all the CodeRabbit review comments. - `@coderabbitai configuration` to show the current CodeRabbit configuration for the repository. - `@coderabbitai help` to get help. Additionally, you can add `@coderabbitai ignore` anywhere in the PR description to prevent this PR from being reviewed. ### CodeRabbit Configration File (`.coderabbit.yaml`) - You can programmatically configure CodeRabbit by adding a `.coderabbit.yaml` file to the root of your repository. - Please see the [configuration documentation](https://docs.coderabbit.ai/guides/configure-coderabbit) for more information. - If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: `# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json` ### Documentation and Community - Visit our [Documentation](https://coderabbit.ai/docs) for detailed information on how to use CodeRabbit. - Join our [Discord Community](https://discord.com/invite/GsXnASn26c) to get help, request features, and share feedback. - Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.
codecov[bot] commented 1 week ago

Codecov Report

All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 82.87%. Comparing base (e809e64) to head (98c9937).

Additional details and impacted files ```diff @@ Coverage Diff @@ ## devel #3919 +/- ## ========================================== - Coverage 82.88% 82.87% -0.01% ========================================== Files 520 520 Lines 50678 50678 Branches 3018 3011 -7 ========================================== - Hits 42003 42000 -3 - Misses 7738 7740 +2 - Partials 937 938 +1 ```

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

njzjz commented 1 week ago

I can find MPIX_Query_cuda_support in mpi.h, so I don't know what you mean.

grep MPIX_Query_cuda_support ~/intel/oneapi/mpi/2021.13/include/mpi.h
int MPIX_Query_cuda_support(void) MPICH_API_PUBLIC;
int PMPIX_Query_cuda_support(void) MPICH_API_PUBLIC;
CaRoLZhangxy commented 6 days ago
grep MPIX_Query_cuda_support ~/intel/oneapi/mpi/2021.13/include/mpi.h

My intel MPI version is 2021.5.1 and there is no definition for MPIX_Query_cuda_support. What's more, it seems that there is no official api document for intel MPI.

njzjz commented 6 days ago

My intel MPI version is 2021.5.1 and there is no definition for MPIX_Query_cuda_support.

Perhaps use CMake's CheckSymbolExists. It seems very hard to check whether this function exists according to other flags.