diff --git "a/Eclipse/testcase/Project\350\217\234\345\215\225.md" "b/Eclipse/testcase/Project\350\217\234\345\215\225.md" new file mode 100644 index 0000000..b8fde09 --- /dev/null +++ "b/Eclipse/testcase/Project\350\217\234\345\215\225.md" @@ -0,0 +1,9 @@ +# Project 菜单 + +## Clean + +点击菜单栏 Project -> Clean...,选择要删除构建结果的项目,点击 Clean。 + +## 属性 + +点击菜单栏 Project -> Properties 打开项目的属性对话框。 diff --git "a/Eclipse/testcase/Refactor\350\217\234\345\215\225.md" "b/Eclipse/testcase/Refactor\350\217\234\345\215\225.md" new file mode 100644 index 0000000..6d83e88 --- /dev/null +++ "b/Eclipse/testcase/Refactor\350\217\234\345\215\225.md" @@ -0,0 +1,33 @@ +# Refactor 菜单 + +## 重命名 + +在 Package Explorer 中选中一个文件,点击菜单栏 Refactor -> Rename...,输入新的文件名,点击 OK。 + +## 移动 + +在 Package Explorer 中选中一个文件,点击菜单栏 Refactor -> Move...,选择新的目录,点击 OK。 + +## 更改方法标志 + +点击菜单栏 Refactor -> Change Method Flags...,选择新的标志,点击 OK。 + +## 导出 Interface + +点击菜单栏 Refactor -> Extract Interface...。 + +## 导出 Superclass + +点击菜单栏 Refactor -> Extract Superclass...。 + +## 创建脚本 + +点击菜单栏 Refactor -> Create Script...。 + +## 应用脚本 + +点击菜单栏 Refactor -> Apply Script...。 + +## 查看历史 + +点击菜单栏 Refactor -> History...。 diff --git "a/Eclipse/testcase/\345\257\274\350\210\252\350\217\234\345\215\225.md" "b/Eclipse/testcase/\345\257\274\350\210\252\350\217\234\345\215\225.md" new file mode 100644 index 0000000..dc84d6c --- /dev/null +++ "b/Eclipse/testcase/\345\257\274\350\210\252\350\217\234\345\215\225.md" @@ -0,0 +1,45 @@ +# 导航菜单 + +## 转到 + +点击菜单栏 Navigate -> Go To,选择要转到的位置。 + +## 打开定义文件 + +在编辑器内选择要查看的定义,点击菜单栏 Navigate -> Open Declaration。 + +## 打开类型定义文件 + +点击菜单栏 Navigate -> Open Type...,在对话框中输入并选择要查看的类型,点击确定。 + +## 打开类型层级 + +点击菜单栏 Navigate -> Open Type in Hierarchy...,在对话框中输入并选择要查看的类型,点击确定。 + +## 打开资源 + +点击菜单栏 Navigate -> Open Resource...,在对话框中输入并选择要查看的资源,点击确定。 + +## 以 Breadcrumb 显示 + +在编辑器内选择要查看的定义,点击菜单栏 Navigate -> Show in Breadcrumb。 + +## 在...中显示 + +在编辑器内选择要查看的内容,点击菜单栏 Navigate -> Show in...,选择显示的位置。 + +## 快速大纲 + +在编辑器内选择要查看的定义,点击菜单栏 Navigate -> Quick Outline 以大纲形式显示当前定义。 + +## 快速类型层级 + +在编辑器内选择要查看的类,点击菜单栏 Navigate -> Quick Type Hierarchy 以层级形式显示当前类型。 + +## 显示上一个 / 下一个定义 + +点击菜单栏 Navigate -> Previous Annotation 或 Next Annotation,显示上一个或下一个定义。 + +## 返回上一次编辑位置 + +点击菜单栏 Navigate -> Previous Edit Location 或 Next Edit Location,返回上一次编辑位置。 diff --git "a/Eclipse/testcase/\346\220\234\347\264\242\350\217\234\345\215\225.md" "b/Eclipse/testcase/\346\220\234\347\264\242\350\217\234\345\215\225.md" new file mode 100644 index 0000000..0dfb4e5 --- /dev/null +++ "b/Eclipse/testcase/\346\220\234\347\264\242\350\217\234\345\215\225.md" @@ -0,0 +1,13 @@ +# 搜索菜单 + +## 搜索 + +点击菜单栏 Search -> Search... 选择搜索类型,输入搜索内容,点击 Search 查找。 + +## 按类型搜索 + +点击菜单栏 Search,选择要搜索的类型(文本、参考、定义、实现、读或写),在下一级菜单中选择搜索的范围进行搜索。 + +## 快速搜索 + +点击菜单栏 Search -> Quick Search,输入搜索内容,点击 Search 查找。 diff --git "a/Eclipse/testcase/\346\226\207\344\273\266\350\217\234\345\215\225.md" "b/Eclipse/testcase/\346\226\207\344\273\266\350\217\234\345\215\225.md" new file mode 100644 index 0000000..6b21e05 --- /dev/null +++ "b/Eclipse/testcase/\346\226\207\344\273\266\350\217\234\345\215\225.md" @@ -0,0 +1,60 @@ +# 文件菜单 + +## 新建项目 + +1. 点击菜单栏 File -> New -> Project...; +2. 在对话框中选择要使用的向导,点击 Next; +3. 输入项目详细信息,点击 Finish 完成创建。 + +## 打开文件 + +点击菜单栏 File -> Open File...。 + +## 从文件系统或归档打开项目 + +1. 点击菜单栏 File -> Open Projects from File System...; +2. 在 Import source 中选择要导入的文件夹或归档文件。 + +## 查看最近打开的文件 + +点击菜单栏 File -> Recent Files。 + +## 清除最近打开的文件 + +点击菜单栏 File -> Recent Files -> Clear History。 + +## 转换使用的换行符 + +点击菜单栏 File -> Convert Line Delimiters To,选择需要使用的换行符。 + +## 打印 + +点击菜单栏 File -> Print...。 + +## 导入 + +1. 点击菜单栏 File -> Import...; +2. 在对话框中选择要使用的向导,点击 Next; +3. 输入向导需要的信息,点击 Finish 完成导入。 + +## 导出 + +1. 点击菜单栏 File -> Export...; +2. 在对话框中选择要使用的向导,点击 Next; +3. 选择要导出的的项目和导出的位置,点击 Finish 完成导出。 + +## 属性 + +点击菜单栏 File -> Proprtities...。 + +## 切换工作区 + +点击菜单栏 File -> Switch Workspace,选择要切换到的工作区。 + +## 重新启动 + +点击菜单栏 File -> Restart。 + +## 退出 + +点击菜单栏 File -> Exit。 diff --git "a/Eclipse/testcase/\346\272\220\344\273\243\347\240\201\350\217\234\345\215\225.md" "b/Eclipse/testcase/\346\272\220\344\273\243\347\240\201\350\217\234\345\215\225.md" new file mode 100644 index 0000000..1608f31 --- /dev/null +++ "b/Eclipse/testcase/\346\272\220\344\273\243\347\240\201\350\217\234\345\215\225.md" @@ -0,0 +1,57 @@ +# 源代码菜单 + +## 切换注释 + +选择要切换注释的行,点击菜单栏 Source -> Toggle Comment。 + +## 添加块注释 + +选择要添加为块注释的内容,点击菜单栏 Source -> Add Block Comment。 + +## 移除块注释 + +选择块注释的内容,点击菜单栏 Source -> Remove Block Comment。 + +## 为元素生成注释 + +选择要生成注释的元素,点击菜单栏 Source -> Generate Element Comment。 + +## 添加文本块 + +点击菜单栏 Source -> Add Text Block。 + +## 增加缩进 + +点击菜单栏 Source -> Shift Right。 + +## 减少缩进 + +点击菜单栏 Source -> Shift Left。 + +## 修正缩进 + +点击菜单栏 Source -> Correct Indentation。 + +## 格式化代码 + +点击菜单栏 Source -> Format。 + +## 添加导入 + +点击菜单栏 Source -> Add Import。 + +## 清理源代码 + +点击菜单栏 Source -> Clean Up...。 + +## 重写/实现代码 + +点击菜单栏 Source -> Override/Implement Methods...。 + +## 使用代码块包裹代码 + +点击菜单栏 Source -> Sorrounded With,选择要使用的代码块。 + +## 为字符串命名 + +点击菜单栏 Source -> Externalize Strings...,选择要命名的字符串,点击 Next,随后点击 Finish。 diff --git "a/Eclipse/testcase/\347\252\227\345\217\243\350\217\234\345\215\225.md" "b/Eclipse/testcase/\347\252\227\345\217\243\350\217\234\345\215\225.md" new file mode 100644 index 0000000..51ccdbb --- /dev/null +++ "b/Eclipse/testcase/\347\252\227\345\217\243\350\217\234\345\215\225.md" @@ -0,0 +1,25 @@ +# 窗口菜单 + +## 打开新窗口 + +点击菜单栏 Window -> New Window 打开新窗口。 + +## 编辑器 + +点击菜单栏 Window -> Editor,选择选项改变编辑器的布局。 + +## 外观 + +点击菜单栏 Window -> Appearance,选择选项显示或隐藏窗口元素或切换全屏。 + +## 显示或隐藏视图 + +点击菜单栏 Window -> Show View,选择要显示或隐藏的视图。 + +## 界面预设 + +点击菜单栏 Window -> Perspective,可以将当前界面保存为预设,或者切换到其他预设。 + +## 导航元素 + +点击菜单栏 Window -> Navigation,选择选项显示对应的导航元素。 diff --git "a/Eclipse/testcase/\347\274\226\350\276\221\350\217\234\345\215\225.md" "b/Eclipse/testcase/\347\274\226\350\276\221\350\217\234\345\215\225.md" new file mode 100644 index 0000000..7bdd4ee --- /dev/null +++ "b/Eclipse/testcase/\347\274\226\350\276\221\350\217\234\345\215\225.md" @@ -0,0 +1,45 @@ +# 编辑菜单 + +## 扩展选择 + +点击菜单栏 Edit -> Expand Selection To。 + +## 切换块选择 + +点击菜单栏 Edit -> Toggle Block Selection。 + +## 查找和替换 + +点击菜单栏 Edit -> Find/Replace...。 + +## 添加书签 + +点击菜单栏 Edit -> Add Bookmark...。 + +## 添加任务 + +点击菜单栏 Edit -> Add Task...。 + +## 智能插入模式 + +点击菜单栏 Edit -> Smart Insert Mode。 + +## 显示提示描述 + +点击菜单栏 Edit -> Show Tooltip Description。 + +## 内容助手 + +点击菜单栏 Edit -> Content Assist,选择要使用的内容助手。 + +## 单词补全 + +点击菜单栏 Edit -> Word Completion。 + +## 快速修正 + +点击菜单栏 Edit -> Quick Fix。 + +## 设置编码 + +点击菜单栏 Edit -> Set Encoding...。 diff --git "a/Eclipse/testcase/\350\277\220\350\241\214\350\217\234\345\215\225.md" "b/Eclipse/testcase/\350\277\220\350\241\214\350\217\234\345\215\225.md" new file mode 100644 index 0000000..8348b26 --- /dev/null +++ "b/Eclipse/testcase/\350\277\220\350\241\214\350\217\234\345\215\225.md" @@ -0,0 +1,37 @@ +# 运行菜单 + +## 运行 + +点击菜单栏 Run -> Run 运行当前项目。 + +## 调试 + +点击菜单栏 Run -> Debug 调试当前项目。 + +## 覆盖情况 + +点击菜单栏 Run -> Coverage 查看代码运行覆盖情况。 + +## 运行/调试/覆盖情况历史 + +点击菜单栏 Run -> Run History 或 Debug History 或 Coverage History 查看运行或调试或覆盖情况历史。 + +## 以...运行/调试/分析覆盖情况 + +点击菜单栏 Run -> Run As 或 Debug As 或 Coverage History,选择如何运行或调试或分析当前项目覆盖情况。 + +## 配置如何运行/调试/分析覆盖情况 + +点击菜单栏 Run -> Run Configurations... 或 Debug Configurations... 配置如何运行或调试或分析当前项目覆盖情况。 + +## 在当前位置设置或取消断点 + +点击菜单栏 Run -> Toggle Breakpoint 在当前位置设置或取消断点。 + +## 切换所有断点的启用状态 + +点击菜单栏 Run -> Skip All Breakpoints 切换所有断点的启用状态。 + +## 移除所有断点 + +点击菜单栏 Run -> Remove All Breakpoints 移除所有断点。 diff --git "a/HPC/MPI \347\250\213\345\272\217\346\272\220\344\273\243\347\240\201/matrix_multiplication.c" "b/HPC/MPI \347\250\213\345\272\217\346\272\220\344\273\243\347\240\201/matrix_multiplication.c" new file mode 100644 index 0000000..8dfac34 --- /dev/null +++ "b/HPC/MPI \347\250\213\345\272\217\346\272\220\344\273\243\347\240\201/matrix_multiplication.c" @@ -0,0 +1,56 @@ +#include +#include +#include + +#define ROW_A 3 +#define COL_A 3 +#define COL_B 3 + +int a[ROW_A][COL_A], b[COL_A][COL_B], c[ROW_A][COL_B]; + +void fill_matrix(int m[ROW_A][COL_A]) { + for (int i = 0; i < ROW_A; i++) { + for (int j = 0; j < COL_A; j++) { + m[i][j] = i + j; + } + } +} + +int main(int argc, char *argv[]) { + int rank, size, rows; + MPI_Init(&argc, &argv); + MPI_Comm_rank(MPI_COMM_WORLD, &rank); + MPI_Comm_size(MPI_COMM_WORLD, &size); + + if (rank == 0) { + fill_matrix(a); + fill_matrix(b); + } + + rows = ROW_A / size; + int a_part[rows][COL_A], c_part[rows][COL_B]; + MPI_Scatter(a, rows * COL_A, MPI_INT, a_part, rows * COL_A, MPI_INT, 0, MPI_COMM_WORLD); + MPI_Bcast(b, COL_A * COL_B, MPI_INT, 0, MPI_COMM_WORLD); + + for (int i = 0; i < rows; i++) { + for (int j = 0; j < COL_B; j++) { + c_part[i][j] = 0; + for (int k = 0; k < COL_A; k++) { + c_part[i][j] += a_part[i][k] * b[k][j]; + } + } + } + + MPI_Gather(c_part, rows * COL_B, MPI_INT, c, rows * COL_B, MPI_INT, 0, MPI_COMM_WORLD); + + if (rank == 0) { + for (int i = 0; i < ROW_A; i++) { + for (int j = 0; j < COL_B; j++) { + printf("%d ", c[i][j]); + } + printf("\n"); + } + } + MPI_Finalize(); + return 0; +} diff --git a/HPC/MPICH/MPICH_installation_guide.md b/HPC/MPICH/MPICH_installation_guide.md new file mode 100644 index 0000000..595b819 --- /dev/null +++ b/HPC/MPICH/MPICH_installation_guide.md @@ -0,0 +1,115 @@ +# MPICH 安装说明 + +## 1. 安装支持 RISC-V 架构及视频输出的 QEMU 模拟器 + +使用发行版提供的预编译软件包。 + +``` +dnf install qemu-system-riscv +``` + +## 2. 系统镜像的使用 + +### 2.1 镜像下载 + +在[镜像源](https://mirror.iscas.ac.cn/openeuler-sig-riscv/openEuler-RISC-V/preview/openEuler-22.03-V2-riscv64/QEMU/)下载文件 `fw_payload_oe_qemuvirt.elf`、`openEuler-22.03-V2-base-qemu-preview.qcow2.tar.zst` 与 `start_vm.sh` ,并放置在同一个文件夹内,路径不可含有中文。 + +### 2.2 部署与启动 + +1. 解压 \*.tar.zst 文件; + +``` +tar -I zstdmt -xvf ./openEuler-22.03-V2-base-qemu-preview.qcow2.tar.zst +``` + +2. 执行启动脚本; + +``` +bash start_vm.sh +``` + +3. 登录用户,默认的用户名为 `openeuler` ,密码为 `openEuler12#$`。 + +## 3. 编译与安装 MPICH + +### 3.1 直接从 `dnf` 安装现有版本 + +1. 执行以下指令; + +``` +$ sudo dnf install mpich +``` + +提示 `Complete!` 即安装完成; + +2. 使用编辑器编辑 shell 的 profile; + +3. 添加环境变量; + +``` +export PATH="/usr/lib64/mpich/bin:$PATH" +export LD_LIBRARY_PATH="/usr/lib64/mpich/lib:$LD_LIBRARY_PATH" +``` + +4. 重载 profile; + +5. 执行以下命令,检查环境变量是否正常; + +``` +$ which mpirun +``` + +若回显 `/usr/lib64/mpich/bin/mpirun`,则环境变量配置正常,安装完成。 + +#### 3.2.1 获取源代码 + +1. 在 [MPI 网站](https://www.mpich.org/downloads/)下载最新稳定版源代码压缩文件 `mpich-4.1.tar.gz`; + +2. 解压 \*.tar.gz 文件; + +``` +$ tar -xzf ./mpich-4.1.tar.gz +``` + +#### 3.2.2 编译与安装 + +1. 进入解压输出文件所在文件夹; + +2. 执行 `configure` 脚本,安装过程中可能需要某些依赖; + +``` +$ ./configure --prefix=/opt --disable-fortran +``` + +3. 执行 `make` 编译脚本; + +``` +$ make -j$(nproc) +``` + +4. 安装 MPICH。 + +``` +$ sudo make install +``` + +#### 3.2.3 配置环境变量 + +1. 使用编辑器编辑 shell 的 profile; + +2. 添加环境变量; + +``` +export PATH="/opt/bin:$PATH" +export LD_LIBRARY_PATH="/opt/lib:$LD_LIBRARY_PATH" +``` + +3. 重载 profile; + +4. 执行以下命令,检查环境变量是否正常; + +``` +$ which mpirun +``` + +若回显 `/opt/bin/mpirun`,则环境变量配置正常,安装完成。 diff --git a/HPC/MPICH/MPICH_userguide.md b/HPC/MPICH/MPICH_userguide.md new file mode 100644 index 0000000..06af4c4 --- /dev/null +++ b/HPC/MPICH/MPICH_userguide.md @@ -0,0 +1,133 @@ +# MPICH 使用说明 + +[官方文档](https://www.mpich.org/documentation/guides/) + +## 1. 构建 MPICH 官方示例程序并测试 + +### 1.1 准备示例程序 cpi + +1. 获取 MPICH 源代码后,进入源代码的示例程序文件夹 + + ``` + cd mpich-x.x.x/examples + ``` + +2. 使用 make 编译测试用代码 + + ``` + mpicc cpi.c -o cpi + mpirun ./cpi + ``` + +### 1.2 测试使用 mpirun 运行 cpi + +``` +mpirun -np 4 ./cpi +``` + +输出如下: + +``` +Process 0 of 4 is on openEuler-pc +Process 1 of 4 is on openEuler-pc +Process 2 of 4 is on openEuler-pc +Process 3 of 4 is on openEuler-pc +pi is approximately 3.1415926544231239, Error is 0.0000000008333307 +wall clock time = 0.000027 +``` + +## 2. 构建其他程序并测试 + +1. 获取测试用的仓库 + + ``` + git clone https://github.com/mpitutorial/mpitutorial + ``` + +2. 进入代码目录 + + ``` + cd mpitutorial/tutorials + ``` + +### 2.1 测试使用 Scatter 和 Gather 计算平均数 + +``` +./run.py all_avg +``` + +输出如下: + +``` +mpirun -n 4 ./mpi-scatter-gather-and-allgather/code/all_avg 100 +Avg of all elements from proc 0 is 0.499618 +Avg of all elements from proc 1 is 0.499618 +Avg of all elements from proc 2 is 0.499618 +Avg of all elements from proc 3 is 0.499618 +``` + +### 2.2 测试发送接收消息 + +``` +./run.py ping_pong +``` + +输出如下: + +``` +mpirun -n 2 ./mpi-send-and-receive/code/ping_pong +0 sent and incremented ping_pong_count 1 to 1 +0 received ping_pong_count 2 from 1 +0 sent and incremented ping_pong_count 3 to 1 +0 received ping_pong_count 4 from 1 +0 sent and incremented ping_pong_count 5 to 1 +0 received ping_pong_count 6 from 1 +0 sent and incremented ping_pong_count 7 to 1 +0 received ping_pong_count 8 from 1 +0 sent and incremented ping_pong_count 9 to 1 +0 received ping_pong_count 10 from 1 +1 received ping_pong_count 1 from 0 +1 sent and incremented ping_pong_count 2 to 0 +1 received ping_pong_count 3 from 0 +1 sent and incremented ping_pong_count 4 to 0 +1 received ping_pong_count 5 from 0 +1 sent and incremented ping_pong_count 6 to 0 +1 received ping_pong_count 7 from 0 +1 sent and incremented ping_pong_count 8 to 0 +1 received ping_pong_count 9 from 0 +1 sent and incremented ping_pong_count 10 to 0 +``` + +### 2.3 测试计算并行排名 + +``` +./run.py random_rank +``` + +输出如下: + +``` +mpirun -n 4 ./performing-parallel-rank-with-mpi/code/random_rank 100 +Rank for 0.840188 on process 0 - 1 +Rank for 0.045389 on process 1 - 0 +Rank for 0.914437 on process 2 - 2 +Rank for 0.982946 on process 3 - 3 +``` + +## 3. 进阶测试 + +### 3.1 并行矩阵乘法 + +该测试用例涵盖了对 MPI 库所提供的消息传递和并行测试。 + +1. 将 [并行矩阵乘法 C 语言源代码](../MPI%20%E7%A8%8B%E5%BA%8F%E6%BA%90%E4%BB%A3%E7%A0%81/matrix_multiplication.c) 保存并编译为 MPI 程序; + +``` +mpicc matrix_multiplication.c -o matrix_multiplication +``` + +2. 使用 mpirun 运行程序 + +``` +mpirun -np 4 ./matrix_multiplication +``` diff --git a/HPC/MPICH/README.md b/HPC/MPICH/README.md new file mode 100644 index 0000000..cff1dd5 --- /dev/null +++ b/HPC/MPICH/README.md @@ -0,0 +1,67 @@ +# openEuler 22.03-V2 RISC-V 版本 MPICH 特性测试 + +# 1. 测试目的 + +使用 openEuler 22.03-V2 RISC-V 版本镜像,测试 MPICH 的安装和基本功能运行是否正常。 + +# 2. 测试信息 + +## 2.1 被测对象的版本信息 + +| 版本名称 | 更新时间 | 测试起始时间 | 测试结束时间 | +|-------------|--------------------|--------------|--------------| +| MPICH 3.2.1 | | | | +| MPICH 4.1 | 2023 年 1 月 29 日 | | | + +## 2.2 硬件环境信息 + +| 硬件型号 | 硬件配置信息 | 备注 | +|-----------|-----------------------------------------|-------------| +| RISC-V 64 | CPU核数:4
内存:8G
硬盘容量:10G | QEMU 模拟器 | + +# 3. 测试内容概述 + +## 3.1 测试内容 + +| 测试内容 | 测试要求 | +|----------|-----------------------------------------------| +| 安装测试 | 在 openEuler RISC-V QEMU 模拟器上安装 MPICH。 | +| 功能测试 | 覆盖测试点,MPICH 基本功能运行正常。 | +| 专项测试 | 无 | + +## 3.2 约束说明 + +- [安装说明](./MPICH_installation_guide.md) +- [使用说明](./MPICH_userguide.md) + +## 3.3 测试要求 + +- 应根据测试点要求,编写测试用例,进行测试。 + +- 应使用提供的[测试报告模板](./测试报告模板.md)编写测试用例,操作步骤、应有充分文字描述和屏幕截图。 + +- 应使用提供的[缺陷报告模板](./缺陷报告模板.md)编写缺陷报告,基本情况、环境信息、缺陷描述、准备过程、操作步骤、结果(预期结果和实际结果)、其他说明、测试人员名单。 + +- 应提交测试用例和缺陷报告。 + +# 4. 测试执行 + +## 4.1 测试用例模板 + +### 测试用例名称 + + 使用帮助: + 使用截图: + +*以上内容为必填项,完整[测试报告模板](./测试报告模板.md)* + +## 4.2 缺陷报告模板 + +### 缺陷名称 + + 缺陷描述: + 操作步骤: + 预期结果: + 实际结果: + +*以上内容为必填项,完整[缺陷报告模板](./测试报告模板.md)* \ No newline at end of file diff --git "a/HPC/MPICH/\346\265\213\350\257\225\346\212\245\345\221\212\346\250\241\346\235\277.md" "b/HPC/MPICH/\346\265\213\350\257\225\346\212\245\345\221\212\346\250\241\346\235\277.md" new file mode 100644 index 0000000..572f8d7 --- /dev/null +++ "b/HPC/MPICH/\346\265\213\350\257\225\346\212\245\345\221\212\346\250\241\346\235\277.md" @@ -0,0 +1,5 @@ +# 测试用例名称 + +使用帮助: /*测试用例描述*/ + +使用截图: ![image](/*输入图片路径*/) diff --git "a/HPC/MPICH/\347\274\272\351\231\267\346\212\245\345\221\212\346\250\241\346\235\277.md" "b/HPC/MPICH/\347\274\272\351\231\267\346\212\245\345\221\212\346\250\241\346\235\277.md" new file mode 100644 index 0000000..63dc674 --- /dev/null +++ "b/HPC/MPICH/\347\274\272\351\231\267\346\212\245\345\221\212\346\250\241\346\235\277.md" @@ -0,0 +1,51 @@ +# 缺陷名称 + +## 基本情况 + +- [ ] 我已经检查了 Issue,进行了搜索,但没有发现类似问题。 +- [ ] 我正在着手修复该问题。 +- [ ] 我希望接手该问题。 +- 严重程度:非常严重/严重/一般/轻微/建议 +- 优先级:紧急/高/中/低 +- 问题类型:功能性/兼容性/安全/可靠性/易用性/性能效率/可移植性/维护性/其他 +- 包名称: + +## 环境信息 + +### 硬件/虚拟机信息 + +> 硬件信息,例如 QEMU 的启动命令行或 Vision Five 板子。 + +### 操作系统信息 + +> 附上 neofetch 截图。 + +## 缺陷描述 + +> 请简要描述该问题。 + +## 准备过程 + +> 请简述你的安装过程。 + +## 操作步骤 + +> 请简述你的操作步骤。 + +## 结果 + +### 预期结果 + +> 请简述预取结果。 + +## 实际结果 + +> 请简述实际结果。建议配图配视频配日志。 + +## 其他说明 + +> 其他有助于解决该问题的内容。如果你了解相关的其他信息,请在此处报告。 + +## 测试人员名单 + +- tester diff --git a/HPC/OpenMPI/OpenMPI_installation_guide.md b/HPC/OpenMPI/OpenMPI_installation_guide.md new file mode 100644 index 0000000..ccdc681 --- /dev/null +++ b/HPC/OpenMPI/OpenMPI_installation_guide.md @@ -0,0 +1,123 @@ +# OpenMPI 安装说明 + +## 1. 安装支持 RISC-V 架构及视频输出的 QEMU 模拟器 + +使用发行版提供的预编译软件包。 + +``` +dnf install qemu-system-riscv +``` + +## 2. 系统镜像的使用 + +### 2.1 镜像下载 + +在[镜像源](https://mirror.iscas.ac.cn/openeuler-sig-riscv/openEuler-RISC-V/preview/openEuler-22.03-V2-riscv64/QEMU/)下载文件 `fw_payload_oe_qemuvirt.elf`、`openEuler-22.03-V2-base-qemu-preview.qcow2.tar.zst` 与 `start_vm.sh` ,并放置在同一个文件夹内,路径不可含有中文。 + +### 2.2 部署与启动 + +1. 解压 \*.tar.zst 文件; + +``` +tar -I zstdmt -xvf ./openEuler-22.03-V2-base-qemu-preview.qcow2.tar.zst +``` + +2. 执行启动脚本; + +``` +bash start_vm.sh +``` + +3. 登录用户,默认的用户名为 `openeuler` ,密码为 `openEuler12#$`。注意,OpenMPI 默认不允许使用 `root` 用户来运行。 + +## 3. 安装 OpenMPI + +### 3.1 直接从 `dnf` 安装现有版本 + +1. 执行以下指令; + +``` +$ sudo dnf install openmpi +``` + +提示 `Complete!` 即安装完成; + +2. 使用编辑器编辑 shell 的 profile; + +3. 添加环境变量; + +``` +export PATH="/usr/lib64/openmpi/bin:$PATH" +export LD_LIBRARY_PATH="/usr/lib64/openmpi/lib:$LD_LIBRARY_PATH" +``` + +4. 重载 profile; + +5. 执行以下命令,检查环境变量是否正常; + +``` +$ which mpirun +``` + +若回显 `/usr/lib64/openmpi/bin/mpirun`,则环境变量配置正常,安装完成。 + +### 3.2 从源码编译最新版本 + +#### 3.2.1 获取源代码 + +1. 在 [OpenMPI 网站](https://www.open-mpi.org/software/)下载最新稳定版源代码压缩文件 `openmpi-4.1.4.tar.bz2`; + +2. 解压 \*.tar.bz2 文件; + +``` +$ tar -xjf ./openmpi-4.1.4.tar.bz2 +``` + +#### 3.2.2 编译与安装 + +1. 进入解压输出文件所在文件夹; + +2. 安装所需依赖,个别依赖可能会提示已经安装,可忽略; + +``` +$ sudo dnf install binutils-devel gcc-c++ autoconf automake libtool +``` + +3. 执行 `configure` 脚本; + +``` +$ ./configure --prefix=/opt +``` + +4. 执行 `make` 编译脚本; + +``` +$ make -j$(nproc) all +``` + +5. 安装 OpenMPI。 + +``` +$ sudo make install +``` + +#### 3.2.3 配置环境变量 + +1. 使用编辑器编辑 shell 的 profile; + +2. 添加环境变量; + +``` +export PATH="/opt/bin:$PATH" +export LD_LIBRARY_PATH="/opt/lib:$LD_LIBRARY_PATH" +``` + +3. 重载 profile; + +4. 执行以下命令,检查环境变量是否正常; + +``` +$ which mpirun +``` + +若回显 `/opt/bin/mpirun`,则环境变量配置正常,安装完成。 diff --git a/HPC/OpenMPI/OpenMPI_userguide.md b/HPC/OpenMPI/OpenMPI_userguide.md new file mode 100644 index 0000000..7f7b537 --- /dev/null +++ b/HPC/OpenMPI/OpenMPI_userguide.md @@ -0,0 +1,169 @@ +# OpenMPI 使用说明 + +[官方文档](https://docs.open-mpi.org) + +## 1. 构建 OpenMPI 官方示例程序并测试 + +### 1.1 准备示例程序 + +1. 获取 OpenMPI 源代码后,进入源代码的示例程序文件夹 + + ``` + cd openmpi-x.x.x/examples + ``` + +2. 使用 make 编译测试用代码 + + ``` + make all + ``` + +### 1.2 测试运行 hello 程序:使用 mpirun 运行 hello_c + +``` +mpirun -np 4 ./hello_c +``` + +输出如下: + +``` +Hello, world, I am 0 of 4 +Hello, world, I am 1 of 4 +Hello, world, I am 2 of 4 +Hello, world, I am 3 of 4 +``` + +### 1.3 测试接收同步消息:使用 mpirun 运行 connectivity_c + +``` +mpirun -np 4 ./connectivity_c +``` + +输出如下: + +``` +Connectivity test on 4 processes PASSED. +``` + +### 1.4 测试点对点进程通信:使用 mpirun 运行 ring_c + +``` +mpirun -np 4 ./ring_c +``` + +输出如下: + +``` +Process 0 sending 10 to 1, tag 201 (4 processes in ring) +Process 0 sent to 1 +Process 0 decremented value: 9 +Process 0 decremented value: 8 +Process 0 decremented value: 7 +Process 0 decremented value: 6 +Process 0 decremented value: 5 +Process 0 decremented value: 4 +Process 0 decremented value: 3 +Process 0 decremented value: 2 +Process 0 decremented value: 1 +Process 0 decremented value: 0 +Process 0 exiting +Process 2 exiting +Process 3 exiting +Process 1 exiting +``` + +## 2. 构建其他程序并测试 + +1. 获取测试用的仓库 + + ``` + git clone https://github.com/mpitutorial/mpitutorial + ``` + +2. 进入代码目录 + + ``` + cd mpitutorial/tutorials + ``` + +### 2.1 测试使用 Scatter 和 Gather 计算平均数 + +``` +./run.py all_avg +``` + +输出如下: + +``` +mpirun -n 4 ./mpi-scatter-gather-and-allgather/code/all_avg 100 +Avg of all elements from proc 0 is 0.499618 +Avg of all elements from proc 1 is 0.499618 +Avg of all elements from proc 2 is 0.499618 +Avg of all elements from proc 3 is 0.499618 +``` + +### 2.2 测试发送接收消息 + +``` +./run.py ping_pong +``` + +输出如下: + +``` +mpirun -n 2 ./mpi-send-and-receive/code/ping_pong +0 sent and incremented ping_pong_count 1 to 1 +0 received ping_pong_count 2 from 1 +0 sent and incremented ping_pong_count 3 to 1 +0 received ping_pong_count 4 from 1 +0 sent and incremented ping_pong_count 5 to 1 +0 received ping_pong_count 6 from 1 +0 sent and incremented ping_pong_count 7 to 1 +0 received ping_pong_count 8 from 1 +0 sent and incremented ping_pong_count 9 to 1 +0 received ping_pong_count 10 from 1 +1 received ping_pong_count 1 from 0 +1 sent and incremented ping_pong_count 2 to 0 +1 received ping_pong_count 3 from 0 +1 sent and incremented ping_pong_count 4 to 0 +1 received ping_pong_count 5 from 0 +1 sent and incremented ping_pong_count 6 to 0 +1 received ping_pong_count 7 from 0 +1 sent and incremented ping_pong_count 8 to 0 +1 received ping_pong_count 9 from 0 +1 sent and incremented ping_pong_count 10 to 0 +``` + +### 2.3 测试计算并行排名 + +``` +./run.py random_rank +``` + +输出如下: + +``` +mpirun -n 4 ./performing-parallel-rank-with-mpi/code/random_rank 100 +Rank for 0.840188 on process 0 - 1 +Rank for 0.045389 on process 1 - 0 +Rank for 0.914437 on process 2 - 2 +Rank for 0.982946 on process 3 - 3 +``` + +## 3. 进阶测试 + +### 3.1 并行矩阵乘法 + +该测试用例涵盖了对 MPI 库所提供的消息传递和并行测试。 + +1. 将 [并行矩阵乘法 C 语言源代码](../MPI%20%E7%A8%8B%E5%BA%8F%E6%BA%90%E4%BB%A3%E7%A0%81/matrix_multiplication.c) 保存并编译为 MPI 程序; + +``` +mpicc matrix_multiplication.c -o matrix_multiplication +``` + +2. 使用 mpirun 运行程序 + +``` +mpirun -np 4 ./matrix_multiplication +``` diff --git a/HPC/OpenMPI/README.md b/HPC/OpenMPI/README.md new file mode 100644 index 0000000..f64a74e --- /dev/null +++ b/HPC/OpenMPI/README.md @@ -0,0 +1,67 @@ +# openEuler 22.03-V2 RISC-V 版本 OpenMPI 特性测试 + +# 1. 测试目的 + +使用 openEuler 22.03-V2 RISC-V 版本镜像,测试 OpenMPI 的安装和基本功能运行是否正常。 + +# 2. 测试信息 + +## 2.1 被测对象的版本信息 + +| 版本名称 | 更新时间 | 测试起始时间 | 测试结束时间 | +|---------------|--------------------|--------------|--------------| +| OpenMPI 2.1.6 | | | | +| OpenMPI 4.1.4 | 2022 年 5 月 26 日 | | | + +## 2.2 硬件环境信息 + +| 硬件型号 | 硬件配置信息 | 备注 | +|-----------|-----------------------------------------|-------------| +| RISC-V 64 | CPU核数:4
内存:8G
硬盘容量:10G | QEMU 模拟器 | + +# 3. 测试内容概述 + +## 3.1 测试内容 + +| 测试内容 | 测试要求 | +|----------|-------------------------------------------------| +| 安装测试 | 在 openEuler RISC-V QEMU 模拟器上安装 OpenMPI。 | +| 功能测试 | 覆盖测试点,OpenMPI 基本功能运行正常。 | +| 专项测试 | 无 | + +## 3.2 约束说明 + +- [安装说明](./OpenMPI_installation_guide.md) +- [使用说明](./OpenMPI_userguide.md) + +## 3.3 测试要求 + +- 应根据测试点要求,编写测试用例,进行测试。 + +- 应使用提供的[测试报告模板](./测试报告模板.md)编写测试用例,操作步骤、应有充分文字描述和屏幕截图。 + +- 应使用提供的[缺陷报告模板](./缺陷报告模板.md)编写缺陷报告,基本情况、环境信息、缺陷描述、准备过程、操作步骤、结果(预期结果和实际结果)、其他说明、测试人员名单。 + +- 应提交测试用例和缺陷报告。 + +# 4. 测试执行 + +## 4.1 测试用例模板 + +### 测试用例名称 + + 使用帮助: + 使用截图: + +*以上内容为必填项,完整[测试报告模板](./测试报告模板.md)* + +## 4.2 缺陷报告模板 + +### 缺陷名称 + + 缺陷描述: + 操作步骤: + 预期结果: + 实际结果: + +*以上内容为必填项,完整[缺陷报告模板](./测试报告模板.md)* \ No newline at end of file diff --git "a/HPC/OpenMPI/\346\265\213\350\257\225\346\212\245\345\221\212\346\250\241\346\235\277.md" "b/HPC/OpenMPI/\346\265\213\350\257\225\346\212\245\345\221\212\346\250\241\346\235\277.md" new file mode 100644 index 0000000..572f8d7 --- /dev/null +++ "b/HPC/OpenMPI/\346\265\213\350\257\225\346\212\245\345\221\212\346\250\241\346\235\277.md" @@ -0,0 +1,5 @@ +# 测试用例名称 + +使用帮助: /*测试用例描述*/ + +使用截图: ![image](/*输入图片路径*/) diff --git "a/HPC/OpenMPI/\347\274\272\351\231\267\346\212\245\345\221\212\346\250\241\346\235\277.md" "b/HPC/OpenMPI/\347\274\272\351\231\267\346\212\245\345\221\212\346\250\241\346\235\277.md" new file mode 100644 index 0000000..63dc674 --- /dev/null +++ "b/HPC/OpenMPI/\347\274\272\351\231\267\346\212\245\345\221\212\346\250\241\346\235\277.md" @@ -0,0 +1,51 @@ +# 缺陷名称 + +## 基本情况 + +- [ ] 我已经检查了 Issue,进行了搜索,但没有发现类似问题。 +- [ ] 我正在着手修复该问题。 +- [ ] 我希望接手该问题。 +- 严重程度:非常严重/严重/一般/轻微/建议 +- 优先级:紧急/高/中/低 +- 问题类型:功能性/兼容性/安全/可靠性/易用性/性能效率/可移植性/维护性/其他 +- 包名称: + +## 环境信息 + +### 硬件/虚拟机信息 + +> 硬件信息,例如 QEMU 的启动命令行或 Vision Five 板子。 + +### 操作系统信息 + +> 附上 neofetch 截图。 + +## 缺陷描述 + +> 请简要描述该问题。 + +## 准备过程 + +> 请简述你的安装过程。 + +## 操作步骤 + +> 请简述你的操作步骤。 + +## 结果 + +### 预期结果 + +> 请简述预取结果。 + +## 实际结果 + +> 请简述实际结果。建议配图配视频配日志。 + +## 其他说明 + +> 其他有助于解决该问题的内容。如果你了解相关的其他信息,请在此处报告。 + +## 测试人员名单 + +- tester diff --git a/HPC/RDMA-Core/RDMA-Core_installation_guide.md b/HPC/RDMA-Core/RDMA-Core_installation_guide.md new file mode 100644 index 0000000..a9e72a2 --- /dev/null +++ b/HPC/RDMA-Core/RDMA-Core_installation_guide.md @@ -0,0 +1,69 @@ +# MPICH 安装说明 + +## 1. 安装支持 RISC-V 架构及视频输出的 QEMU 模拟器 + +使用发行版提供的预编译软件包。 + +``` +dnf install qemu-system-riscv +``` + +## 2. 系统镜像的使用 + +### 2.1 镜像下载 + +在[镜像源](https://mirror.iscas.ac.cn/openeuler-sig-riscv/openEuler-RISC-V/preview/openEuler-22.03-V2-riscv64/QEMU/)下载文件 `fw_payload_oe_qemuvirt.elf`、`openEuler-22.03-V2-base-qemu-preview.qcow2.tar.zst` 与 `start_vm.sh` ,并放置在同一个文件夹内,路径不可含有中文。 + +### 2.2 部署与启动 + +1. 解压 \*.tar.zst 文件; + +``` +tar -I zstdmt -xvf ./openEuler-22.03-V2-base-qemu-preview.qcow2.tar.zst +``` + +2. 执行启动脚本; + +``` +bash start_vm.sh +``` + +3. 登录用户,默认的用户名为 `openeuler` ,密码为 `openEuler12#$`。 + +## 3. 安装 RDMA-Core + +### 3.1 直接从 `dnf` 安装现有版本 + +执行以下指令; + +``` +$ sudo dnf install rdma-core +``` + +提示 `Complete!` 即安装完成。 + +#### 3.2.1 获取源代码 + +1. 在 [RDMA-Core GitHub 仓库](https://github.com/linux-rdma/rdma-core/releases/)下载最新稳定版源代码压缩文件 `rdma-core-44.0.tar.gz`; + +2. 解压 \*.tar.gz 文件; + +``` +$ tar -xzf ./rdma-core-44.0.tar.gz +``` + +#### 3.2.2 编译与安装 + +1. 进入解压输出文件所在文件夹; + +2. 执行 `build.sh` 脚本,安装过程中需要 CMake 和常用编译工具; + +``` +$ ./build.sh +``` + +3. 执行以下命令,检查编译所生成的文件。 + +``` +$ cd build && ls +``` diff --git a/HPC/RDMA-Core/RDMA-Core_userguide.md b/HPC/RDMA-Core/RDMA-Core_userguide.md new file mode 100644 index 0000000..0966e56 --- /dev/null +++ b/HPC/RDMA-Core/RDMA-Core_userguide.md @@ -0,0 +1,72 @@ +# RDMA-Core 使用说明 + +## 1. 构建测试环境与程序 + +1. 在之前的 build 目录中,执行以下命令,clone 以下 GitHub 仓库; + +``` +$ git clone https://github.com/animeshtrivedi/rdma-example.git test1 +``` + +2. 执行以下命令,进入 `test1` 文件夹; + +``` +$ cd test1 +``` + +3. 执行以下命令,修改 CMake 配置; +``` +$ sed -i "s/\/home\/atr\/local/\.\./" CMakeLists.txt +``` + +4. 执行以下命令开始编译; +``` +$ cmake . && make +``` + +5. 在本机上模拟 RDMA 环境(需要两个网卡,包括 loopback); + +6. 执行以下命令加载模块; + +``` +$ sudo modprobe siw +``` + +7. 执行以下命令,添加第一张网卡; + +``` +$ sudo rdma link add siw0 type siw netdev lo +``` + +8. 执行以下命令,添加第二张网卡(可执行 `ip a` 查询当前网卡名称); + +``` +$ sudo rdma link add siw1 type siw netdev <网卡名称> +``` + +9. 执行以下命令,后台运行服务端; + +``` +$ nohup ./bin/rdma_server & +``` + +10. 执行以下命令,测试客户端通信结果; + +``` +$ ./bin/rdma_client -a <本机 IP 地址> -s hello +``` + +回显如下,服务端自动退出。 + +``` +Passed string is : hello , with count 5 +Trying to connect to server at : 123.123.123.123 port: 20886 +The client is connected successfully +--------------------------------------------------------- +buffer attr, addr: 0x562563c546e0 , len: 5 , stag : 0x9c148800 +--------------------------------------------------------- +... +SUCCESS, source and destination buffers match +Client resource clean up is complete +[1] + done nohup ./bin/rdma_server +``` diff --git a/HPC/RDMA-Core/README.md b/HPC/RDMA-Core/README.md new file mode 100644 index 0000000..aa5405f --- /dev/null +++ b/HPC/RDMA-Core/README.md @@ -0,0 +1,67 @@ +# openEuler 22.03-V2 RISC-V 版本 RDMA-Core 特性测试 + +# 1. 测试目的 + +使用 openEuler 22.03-V2 RISC-V 版本镜像,测试 MPICH 的安装和基本功能运行是否正常。 + +# 2. 测试信息 + +## 2.1 被测对象的版本信息 + +| 版本名称 | 更新时间 | 测试起始时间 | 测试结束时间 | +|----------------|-------------------|--------------|--------------| +| RDMA-Core 35.1 | | | | +| RDMA-Core 44.0 | 2023 年 1 月 1 日 | | | + +## 2.2 硬件环境信息 + +| 硬件型号 | 硬件配置信息 | 备注 | +|-----------|-----------------------------------------|-------------| +| RISC-V 64 | CPU核数:4
内存:8G
硬盘容量:10G | QEMU 模拟器 | + +# 3. 测试内容概述 + +## 3.1 测试内容 + +| 测试内容 | 测试要求 | +|----------|---------------------------------------------------| +| 安装测试 | 在 openEuler RISC-V QEMU 模拟器上安装 RDMA-Core。 | +| 功能测试 | 覆盖测试点,RDMA-Core 基本功能运行正常。 | +| 专项测试 | 无 | + +## 3.2 约束说明 + +- [安装说明](./RDMA-Core_installation_guide.md) +- [使用说明](./RDMA-Core_userguide.md) + +## 3.3 测试要求 + +- 应根据测试点要求,编写测试用例,进行测试。 + +- 应使用提供的[测试报告模板](./测试报告模板.md)编写测试用例,操作步骤、应有充分文字描述和屏幕截图。 + +- 应使用提供的[缺陷报告模板](./缺陷报告模板.md)编写缺陷报告,基本情况、环境信息、缺陷描述、准备过程、操作步骤、结果(预期结果和实际结果)、其他说明、测试人员名单。 + +- 应提交测试用例和缺陷报告。 + +# 4. 测试执行 + +## 4.1 测试用例模板 + +### 测试用例名称 + + 使用帮助: + 使用截图: + +*以上内容为必填项,完整[测试报告模板](./测试报告模板.md)* + +## 4.2 缺陷报告模板 + +### 缺陷名称 + + 缺陷描述: + 操作步骤: + 预期结果: + 实际结果: + +*以上内容为必填项,完整[缺陷报告模板](./测试报告模板.md)* \ No newline at end of file diff --git "a/HPC/RDMA-Core/\346\265\213\350\257\225\346\212\245\345\221\212\346\250\241\346\235\277.md" "b/HPC/RDMA-Core/\346\265\213\350\257\225\346\212\245\345\221\212\346\250\241\346\235\277.md" new file mode 100644 index 0000000..572f8d7 --- /dev/null +++ "b/HPC/RDMA-Core/\346\265\213\350\257\225\346\212\245\345\221\212\346\250\241\346\235\277.md" @@ -0,0 +1,5 @@ +# 测试用例名称 + +使用帮助: /*测试用例描述*/ + +使用截图: ![image](/*输入图片路径*/) diff --git "a/HPC/RDMA-Core/\347\274\272\351\231\267\346\212\245\345\221\212\346\250\241\346\235\277.md" "b/HPC/RDMA-Core/\347\274\272\351\231\267\346\212\245\345\221\212\346\250\241\346\235\277.md" new file mode 100644 index 0000000..63dc674 --- /dev/null +++ "b/HPC/RDMA-Core/\347\274\272\351\231\267\346\212\245\345\221\212\346\250\241\346\235\277.md" @@ -0,0 +1,51 @@ +# 缺陷名称 + +## 基本情况 + +- [ ] 我已经检查了 Issue,进行了搜索,但没有发现类似问题。 +- [ ] 我正在着手修复该问题。 +- [ ] 我希望接手该问题。 +- 严重程度:非常严重/严重/一般/轻微/建议 +- 优先级:紧急/高/中/低 +- 问题类型:功能性/兼容性/安全/可靠性/易用性/性能效率/可移植性/维护性/其他 +- 包名称: + +## 环境信息 + +### 硬件/虚拟机信息 + +> 硬件信息,例如 QEMU 的启动命令行或 Vision Five 板子。 + +### 操作系统信息 + +> 附上 neofetch 截图。 + +## 缺陷描述 + +> 请简要描述该问题。 + +## 准备过程 + +> 请简述你的安装过程。 + +## 操作步骤 + +> 请简述你的操作步骤。 + +## 结果 + +### 预期结果 + +> 请简述预取结果。 + +## 实际结果 + +> 请简述实际结果。建议配图配视频配日志。 + +## 其他说明 + +> 其他有助于解决该问题的内容。如果你了解相关的其他信息,请在此处报告。 + +## 测试人员名单 + +- tester diff --git a/HPC/munge/README.md b/HPC/munge/README.md new file mode 100644 index 0000000..e561227 --- /dev/null +++ b/HPC/munge/README.md @@ -0,0 +1,67 @@ +# openEuler 22.03-V2 RISC-V 版本 OpenMPI 特性测试 + +# 1. 测试目的 + +使用 openEuler 22.03-V2 RISC-V 版本镜像,测试 munge 的安装和基本功能运行是否正常。 + +# 2. 测试信息 + +## 2.1 被测对象的版本信息 + +| 版本名称 | 更新时间 | 测试起始时间 | 测试结束时间 | +|--------------|--------------------|--------------|--------------| +| munge 0.5.14 | | | | +| munge 0.5.15 | 2022 年 6 月 23 日 | | | + +## 2.2 硬件环境信息 + +| 硬件型号 | 硬件配置信息 | 备注 | +|-----------|-----------------------------------------|-------------| +| RISC-V 64 | CPU核数:4
内存:8G
硬盘容量:10G | QEMU 模拟器 | + +# 3. 测试内容概述 + +## 3.1 测试内容 + +| 测试内容 | 测试要求 | +|----------|-----------------------------------------------| +| 安装测试 | 在 openEuler RISC-V QEMU 模拟器上安装 munge。 | +| 功能测试 | 覆盖测试点,OpenMPI 基本功能运行正常。 | +| 专项测试 | 无 | + +## 3.2 约束说明 + +- [安装说明](./munge_installation_guide.md) +- [使用说明](./munge_userguide.md) + +## 3.3 测试要求 + +- 应根据测试点要求,编写测试用例,进行测试。 + +- 应使用提供的[测试报告模板](./测试报告模板.md)编写测试用例,操作步骤、应有充分文字描述和屏幕截图。 + +- 应使用提供的[缺陷报告模板](./缺陷报告模板.md)编写缺陷报告,基本情况、环境信息、缺陷描述、准备过程、操作步骤、结果(预期结果和实际结果)、其他说明、测试人员名单。 + +- 应提交测试用例和缺陷报告。 + +# 4. 测试执行 + +## 4.1 测试用例模板 + +### 测试用例名称 + + 使用帮助: + 使用截图: + +*以上内容为必填项,完整[测试报告模板](./测试报告模板.md)* + +## 4.2 缺陷报告模板 + +### 缺陷名称 + + 缺陷描述: + 操作步骤: + 预期结果: + 实际结果: + +*以上内容为必填项,完整[缺陷报告模板](./测试报告模板.md)* \ No newline at end of file diff --git a/HPC/munge/munge_installation_guide.md b/HPC/munge/munge_installation_guide.md new file mode 100644 index 0000000..8a47bc6 --- /dev/null +++ b/HPC/munge/munge_installation_guide.md @@ -0,0 +1,106 @@ +# OpenMPI 安装说明 + +## 1. 安装支持 RISC-V 架构及视频输出的 QEMU 模拟器 + +使用发行版提供的预编译软件包。 + +``` +dnf install qemu-system-riscv +``` + +## 2. 系统镜像的使用 + +### 2.1 镜像下载 + +在[镜像源](https://mirror.iscas.ac.cn/openeuler-sig-riscv/openEuler-RISC-V/preview/openEuler-22.03-V2-riscv64/QEMU/)下载文件 `fw_payload_oe_qemuvirt.elf`、`openEuler-22.03-V2-base-qemu-preview.qcow2.tar.zst` 与 `start_vm.sh` ,并放置在同一个文件夹内,路径不可含有中文。 + +### 2.2 部署与启动 + +1. 解压 \*.tar.zst 文件; + +``` +tar -I zstdmt -xvf ./openEuler-22.03-V2-base-qemu-preview.qcow2.tar.zst +``` + +2. 执行启动脚本; + +``` +bash start_vm.sh +``` + +3. 登录用户,默认的用户名为 `openeuler` ,密码为 `openEuler12#$`。注意,OpenMPI 默认不允许使用 `root` 用户来运行。 + +## 3. 安装 munge + +### 3.1 直接从 `dnf` 安装现有版本 + +1. 执行以下指令; + +``` +$ sudo dnf install munge +``` + +提示 `Complete!` 即安装完成; + +2. 执行以下命令,检查是否正确安装 + +``` +$ munge -V +``` + +若回显 munge 版本号,则环境变量配置正常,安装完成。 + +### 3.2 从源码编译最新版本 + +#### 3.2.1 获取源代码 + +1. 在 [munge GitHub 仓库](https://github.com/dun/munge/releases/)下载最新稳定版源代码压缩文件 `munge-0.5.15.tar.xz`; + +2. 解压 \*.tar.bz2 文件; + +``` +$ tar -xJf ./munge-0.5.15.tar.xz +``` + +#### 3.2.2 编译与安装 + +1. 进入解压输出文件所在文件夹; + +2. 执行 `configure` 脚本,安装过程中可能需要某些依赖; + +``` +$ ./configure --prefix=/opt --sysconfdir=/etc --localstatedir=/var --runstatedir=/run +``` + +4. 执行 `make` 编译脚本; + +``` +$ make -j$(nproc) +``` + +5. 安装 munge。 + +``` +$ sudo make install +``` + +#### 3.2.3 配置环境变量 + +1. 使用编辑器编辑 shell 的 profile; + +2. 添加环境变量; + +``` +export PATH="/opt/bin:/opt/sbin:$PATH" +export LD_LIBRARY_PATH="/opt/lib:$LD_LIBRARY_PATH" +``` + +3. 重载 profile; + +4. 执行以下命令,检查环境变量是否正常; + +``` +$ munge -V +``` + +若回显 munge 版本号,则环境变量配置正常,安装完成。 diff --git a/HPC/munge/munge_userguide.md b/HPC/munge/munge_userguide.md new file mode 100644 index 0000000..818054f --- /dev/null +++ b/HPC/munge/munge_userguide.md @@ -0,0 +1,71 @@ +# munge 使用说明 + +[官方文档](https://github.com/dun/munge/wiki) + +## 1. 创建授权密钥 + +1. 执行以下命令,创建授权密钥; + +``` +$ sudo mungekey --verbose +``` + +2. 显示如下信息,表示创建成功。 + +``` +mungekey: Info: Created "/opt/etc/munge/munge.key" with 1024-bit key +``` + +## 2. 启动 munge 后台服务 + +执行以下命令,启动 munge 后台服务。 + +``` +$ sudo mkdir -p /run/munge && sudo munged +``` + +## 3. 对凭据进行编码 + +1. 执行以下命令,对凭据进行编码; + +``` +$ munge -n +``` + +2. 显示如下信息,表示编码成功。此命令可测试 munge 可执行文件和 libmunge 库是否存在,munged 是否正在运行,以及客户端(munge 或 libmunge)是否可以与服务器(munged)通信。 + +``` +MUNGE:AwQFAACsSBOF7ALp7dlTVlgyJSyP+5FCoBnYH4L7/pWcT2RDadFe9VN3FjdYVwWpgFky6gjb6rLlUFmrRAYgbCkVegE6VOrHp0IiDISahhN7mJQv9dNhHmaiyUMRNIMzl/FivbI=: +``` + +## 4. 对凭据进行解码 + +1. 执行以下命令,对凭据进行解码; + +``` +munge -n | unmunge +``` + +2. 显示如下信息,表示解码成功。此命令可测试编码与解码是否成功,并显示已经编码的凭据的原始数据。 + +``` +STATUS: Success (0) +ENCODE_HOST: openEuler-PC (127.0.1.1) +ENCODE_TIME: 2023-02-02 22:14:25 +0800 (1675347265) +DECODE_TIME: 2023-02-02 22:14:25 +0800 (1675347265) +TTL: 300 +CIPHER: aes128 (4) +MAC: sha256 (5) +ZIP: none (0) +UID: openEuler (1000) +GID: openEuler (1000) +LENGTH: 0 +``` + +## 5. 停止 munge 后台服务 + +执行以下命令,停止 munge 后台服务。 + +``` +$ sudo killall munged +``` diff --git "a/HPC/munge/\346\265\213\350\257\225\346\212\245\345\221\212\346\250\241\346\235\277.md" "b/HPC/munge/\346\265\213\350\257\225\346\212\245\345\221\212\346\250\241\346\235\277.md" new file mode 100644 index 0000000..572f8d7 --- /dev/null +++ "b/HPC/munge/\346\265\213\350\257\225\346\212\245\345\221\212\346\250\241\346\235\277.md" @@ -0,0 +1,5 @@ +# 测试用例名称 + +使用帮助: /*测试用例描述*/ + +使用截图: ![image](/*输入图片路径*/) diff --git "a/HPC/munge/\347\274\272\351\231\267\346\212\245\345\221\212\346\250\241\346\235\277.md" "b/HPC/munge/\347\274\272\351\231\267\346\212\245\345\221\212\346\250\241\346\235\277.md" new file mode 100644 index 0000000..63dc674 --- /dev/null +++ "b/HPC/munge/\347\274\272\351\231\267\346\212\245\345\221\212\346\250\241\346\235\277.md" @@ -0,0 +1,51 @@ +# 缺陷名称 + +## 基本情况 + +- [ ] 我已经检查了 Issue,进行了搜索,但没有发现类似问题。 +- [ ] 我正在着手修复该问题。 +- [ ] 我希望接手该问题。 +- 严重程度:非常严重/严重/一般/轻微/建议 +- 优先级:紧急/高/中/低 +- 问题类型:功能性/兼容性/安全/可靠性/易用性/性能效率/可移植性/维护性/其他 +- 包名称: + +## 环境信息 + +### 硬件/虚拟机信息 + +> 硬件信息,例如 QEMU 的启动命令行或 Vision Five 板子。 + +### 操作系统信息 + +> 附上 neofetch 截图。 + +## 缺陷描述 + +> 请简要描述该问题。 + +## 准备过程 + +> 请简述你的安装过程。 + +## 操作步骤 + +> 请简述你的操作步骤。 + +## 结果 + +### 预期结果 + +> 请简述预取结果。 + +## 实际结果 + +> 请简述实际结果。建议配图配视频配日志。 + +## 其他说明 + +> 其他有助于解决该问题的内容。如果你了解相关的其他信息,请在此处报告。 + +## 测试人员名单 + +- tester