ADD file via upload

main
pyvawtjzl 5 months ago
parent e4e6999832
commit f23b01ef35

@ -0,0 +1,88 @@
[TOC]
---
## MPI中的集合通信与广播
### 任务描述
本关任务使用MPI中的`MPI_Reduce`和`MPI_Bcast`函数实现用户自定义输入的梯形法则近似计算积分面积。
### 相关知识
为了完成本关任务你需要掌握1.MPI中的梯形法则2.如何使用`MPI_Bcast`集合通信函数将单个进程的数据发送到通信域中所有进程3如何使用`MPI_Reduce`集合通信函数将通信域中所有进程的数据汇总。
#### 梯形法则
<img width="100%" src="/api/attachments/WUpBQ3hFN3ZwY1FLcE1RWWdhU010dz09?type=image/png)" alt="" />
梯形法则是指为了计算图a中从`a`到`b`阴影部分的面积,将该区域划分为`n`个子区域,每个子区域用梯形面积计算公式计算,最终将`n`个小梯形汇总求和作为所求面积大小的近似结果。
#### MPI_Bcast
`MPI_Bcast` - Broadcasts a message from the process with rank root to all other processes of the group.
```c
int MPI_Bcast(void *buffer, int count, MPI_Datatype datatype,
int root, MPI_Comm comm)
```
INPUT/OUTPUT PARAMETERS
- `buffer`: Starting address of buffer (choice).
- `count`: Number of entries in buffer (integer).
- `datatype`: Data type of buffer (handle).
- `root`: Rank of broadcast root (integer).
- `comm`: Communicator (handle).
- `info`: Info (handle, persistent only).
OUTPUT PARAMETERS
- `request`: Request (handle, non-blocking and persistent only).
- `ierror`: Fortran only: Error status (integer).
#### MPI_Reduce
`MPI_Reduce` - Reduces values on all processes within a group.
```c
int MPI_Reduce(const void *sendbuf, void *recvbuf, int count,
MPI_Datatype datatype, MPI_Op op, int root,
MPI_Comm comm)
```
INPUT PARAMETERS
- `sendbuf`: Address of send buffer (choice).
- `count`: Number of elements in send buffer (integer).
- `datatype`: Data type of elements of send buffer (handle).
- `op`: Reduce operation (handle).
- `root`: Rank of root process (integer).
- `comm`: Communicator (handle).
- `info`: Info (handle, persistent only).
OUTPUT PARAMETERS
- `recvbuf`: Address of receive buffer (choice, significant only at root).
- `request`: Request (handle, non-blocking and persistent only).
- `ierror`: Fortran only: Error status (integer).
### 编程要求
根据提示,在右侧编辑器补充两处注释部分代码,计算并输出阴影面积的大小。
### 测试说明
平台会对你编写的代码进行测试:
测试输入:`0 3 1024`
预期输出:
`9.000`
测试输入:`1 7 2048`
预期输出:
`114.000`
---
开始你的任务吧,祝你成功!
Loading…
Cancel
Save