HPCRunner Contribution Guide
The HPCRunner project welcomes your expertise and enthusiasm!
Small improvements or bug fixes are always appreciated. Updating documentation is a great place to start. If you are considering a major contribution, please open an issue or start a discussion at HPCRunner.
Writing code is not the only way to contribute to Jarvis. You can also:
- Contribute installation scripts.
- Help test new HPC applications.
- Develop tutorials and demos.
- Spread the word about Jarvis.
- Help onboard new contributors.
Features
- Supports Arm and x86 architectures. Uses industry-standard dependency directory structures to manage massive dependencies and automatically generate environment module files.
- One-click compilation, execution, CPU/GPU performance profiling, and benchmarking based on HPC configurations.
- Stores all settings in a single file. Deploying HPC applications to different machines only requires modifying this configuration file.
- Adopts an integrated log management system to automatically record all information during the HPC application deployment process.
- Requires no compilation and runs directly with a Python environment.
- Supported for Quantum Espresso (QE). For details, refer to the
container/directory. - Roadmap (future features)
- Integration of common performance tuning methods and core algorithms in the HPC field.
- Cluster performance analysis tools.
- Intelligent auto-tuning.
Code Contribution Guide
Preparations
-
Configure the SSH key.
cd ~/.ssh ssh-keygen cat id_rsa.pubCopy the output content and add it to your profile via SSH Key.
-
Configure user settings.
# Ignore file mode (permission) changes. git config core.fileMode false git config --global user.name "XXX" git config --global user.email "XXX" -
Fork the repository and clone your fork. The following uses
iotwinsas an example. Replace it with your actual username.git clone git@gitee.com:iotwins/hpcrunner.git -
Link your local repository to the upstream remote.
git remote add upstream git@gitee.com:openeuler/hpcrunner.git
Code Contribution Workflow
-
Switch to the master branch and pull the latest upstream changes.
git checkout master git pull upstream master -
Create and switch to a new feature branch. The branch name is custom.
git checkout -b new_branch -
Make your code modifications.
-
Commit and push your changes
git add . git commit --no-verif -m "Add XXX function" git push origin new_branch -
Go to your forked repository page (for example, https://gitee.com/iotwins/hpcrunner) and create a Pull Request (PR).
FAQ
How Do I Fix an Incorrect Commit Message?
-
Method 1: Using
git stashIf you have uncommitted changes in your workspace or staging area, use
git stashto temporarily shelf them. This leaves you with a clean working directory to handle fixes or syncs. Afterward, restore your work usinggit stash popto continue development. -
Method 2: Using
git rebaseRun the interactive rebase command targeting the parent commit of the one you want to modify:
git rebase -i <commitID> # Example: git rebase -i sd98dsf89sdfIn the interactive rebase editor that opens:
- Locate the commit line you want to change.
- Change the command from
picktoeditat the beginning of the line (you can do this for one or multiple commits). - Save and close the editor.
Depending on your goal, use
--amendto modify the commit:- Modify the commit message only.
git commit --amend- Modify the author and email only.
git commit --amend --author="zhangsan <hello@gmail.com>" --no-edit- Modify the message, author, and email simultaneously.
git commit --amend --author="zhangsan <hello@gmail.com>"Once modified, resume the rebase process:
git rebase --continueRepeat until you see the following confirmation message, indicating the rebase is complete:
Successfully rebased and updated xxx -
Method 3: Using
git push --forceTo apply the rewritten history to your remote repository, force push to your branch:
git push --force origin master
Developer Notes
Using HPCKit Instead of Standalone Installations of Hyper MPI, BiSheng Compiler, and KML
Recommended approach for installing and enabling HPCKit:
./jarvis -install hpckit/${HPCKIT_VERSION} any
module use software/utils/hpckit/224.0.0/HPCKit/24.0.0/modulefiles
module purge
module load bisheng/compiler${BISHENG_VERSION}/bishengmodule bisheng/hmpi${HMPI_VERSION}/hmpi
Not recommended:
./jarvis -install hmpi/1.1.1 clang
module use software/moduledeps/bisheng2.1.0
module load hmpi/1.1.1
Avoiding Hardcoded Absolute Paths in Development Templates
Not recommended:
export JARVIS_ROOT=/hpcrunner
Technical Articles & Resources
Jarvis: The Ultimate HPC Application Steward
For more information on HPC deployment and performance optimization, please scan and join the openEuler HPC SIG WeChat Group.
