当前位置: 首页 > news >正文

东莞网站上排名设计网站的公司

东莞网站上排名,设计网站的公司,莱芜消息,做代练的网站什么是虚拟进程拓扑 在很多并行应用进程中,进程的线性排列不能充分的反映进程间在逻辑上的通信模型,通常由问题几何和所用的算法决定,进程经常被排列成二维或者三维网络形式的拓扑模型而通常用一个图来描述逻辑进程排列,此种逻辑…

什么是虚拟进程拓扑

在很多并行应用进程中,进程的线性排列不能充分的反映进程间在逻辑上的通信模型,通常由问题几何和所用的算法决定,进程经常被排列成二维或者三维网络形式的拓扑模型而通常用一个图来描述逻辑进程排列,此种逻辑进程排列为虚拟拓扑。
在这里插入图片描述

拓扑是组内通信域上的额外,可选属性,它不能附加在组间通信域(inter-communcator)上,拓扑能提供一种方便的命名机制,对于由特定拓扑要求的算法使用起来直接自然方便。
在这里插入图片描述

拓扑还可以辅助运行时系统,将进程映射到实际的硬件结构上。

笛卡尔拓扑

MPI 笛卡尔拓扑是一种二维矩形的结构,在这个结构中,每个进程都有一个唯一的坐标。这种拓扑结构通常用于实现多维分布式数组的通讯。

使用 MPI_Cart_create 函数可以创建 Cartesian 拓扑,并使用 MPI_Cart_shift 函数获取进程在对应维度上的相邻进程的 ran

函数原型

int MPI_Cart_create(MPI_Comm old_comm, int ndims, 
const int dims[], const int periods[], int reorder, 
MPI_Comm *comm_cart);int MPI_Cart_shift(MPI_Comm comm, int direction, int displ, 
int *rank_source, int *rank_dest);

MPI_Cart_create参数详解

  • MPI_Comm old_comm:原通讯域。
  • int ndims:拓扑结构的维度。
  • const int dims[]:每个维度上的进程数量。
  • const int periods[]:每个维度上的边界条件,非零表示周期性边界,零表示非周期性边界。
  • int reorder:是否重新排列原通讯域的进程排列方式。
  • MPI_Comm *comm_cart:新的通讯子,包含 Cartesian 拓扑。

MPI_Cart_shift参数详解

  • MPI_Comm comm:拓扑结构通讯子。
  • int direction:相邻进程的维度。
  • int displ:进程生下的偏移量,一般为 -1 或 1。
  • int *rank_source:源进程的 rank。
  • int *rank_dest:目标进程的 rank。

代码实例

#include <stdio.h>
#include <mpi.h>int main(int argc, char* argv[]) {int rank, size;MPI_Comm comm_cart;int dims[2], periods[2], coords[2], reorder;MPI_Init(&argc, &argv);MPI_Comm_size(MPI_COMM_WORLD, &size);// 确定每个维度的大小dims[0] = dims[1] = 0;MPI_Dims_create(size, 2, dims);// 设置周期性边界条件periods[0] = periods[1] = 1;reorder = 1;MPI_Cart_create(MPI_COMM_WORLD, 2, dims, periods, reorder, &comm_cart);// 获取当前进程在 Cartesian 拓扑中的坐标MPI_Comm_rank(comm_cart, &rank);MPI_Cart_coords(comm_cart, rank, 2, coords);printf("Rank %d:\tCoords = (%d, %d)\n", rank, coords[0], coords[1]);// 获取当前进程在 x 方向上相邻进程的 rankint left, right;MPI_Cart_shift(comm_cart, 0, 1, &left, &right);printf("Rank %d:\tLeft = %d, Right = %d\n", rank, left, right);// 获取当前进程在 y 方向上相邻进程的 rankint up, down;MPI_Cart_shift(comm_cart, 1, 1, &up, &down);printf("Rank %d:\tUp = %d, Down = %d\n", rank, up, down);MPI_Finalize();return 0;

使用 MPI_Cart_create 函数创建了 Cartesian 拓扑,然后使用 MPI_Cart_coords 函数获取一个进程在 Cartesian 拓扑中的坐标。最后,使用 MPI_Cart_shift 函数获取相邻进程在 Cartesian 拓扑中的 rank。

在本示例中,我们假设拓扑是一个二维矩形,因此我们使用 MPI_Dims_create 函数以及维度数量和进程总数来计算每个维度的大小。我们还将 periods 数组设置为 {1,1},表示在每个维度的两端都设置周期性边界条件。我们还把 reorder 参数设置为 1,以便 MPI 能够以最优方式映射进程到拓扑结构中。

使用 MPI_Cart_create 函数,我们创建了一个通讯子,该子进程具有 Cartesian 拓扑。接着使用 MPI_Cart_shift 函数,以获取当前进程在 x 和 y 方向上相邻进程的 rank。

扩展:

  1. 一维拓扑结构(一维链状结构)

    • 每个进程只有一个相邻进程。
    • 使用 MPI_Comm_split 函数创建。
  2. 多维拓扑结构

    • 每个进程有多个相邻进程。
    • 使用 MPI_Cart_create 函数创建。
  3. 自定义拓扑结构

    • 可以通过 MPI_Comm_create 函数创建自定义拓扑结构,满足特定应用场景的需求。

代码用例来自网络,仅供参考扫盲学习。

http://www.hkea.cn/news/346628/

相关文章:

  • 重庆网站建设制作公司百度客服人工在线咨询电话
  • 微信公众号平台入口官网奶盘seo伪原创工具
  • 泉州网站建设公司推荐宁德市地图
  • 大厂县住房和城乡建设局网站刷百度指数
  • 低代码开发平台优缺点昆山seo网站优化软件
  • 网站开发年终总结网络营销战略的内容
  • 建立门户网站的意义营销推广网
  • 网站建设网站软件有哪些百度推广开户费用标准
  • 找家装修公司家装吉林seo外包
  • 保定医疗网站建设公司会计培训班初级费用
  • 最好的销售管理系统seo发帖网站
  • 德州乐陵德州seo公司seo批量建站
  • 贵州省建设监理协会官方网站seo代运营
  • 北京哪家做网站优化账号权重查询
  • 大唐网站建设培训管理平台
  • 男人和女人在床上做那个网站网络营销策划推广公司
  • 深圳市招投标交易中心天津谷歌优化
  • 厦门园网站忱建设百度推广怎么联系
  • 网站优化页面动态网站建设
  • 做网站域名公司每日重大军事新闻
  • 网站改版数据来源表改怎么做外链百科
  • wordpress怎样做单页网站谷歌查询关键词的工具叫什么
  • 县城做二手车网站自己建网站需要多少钱
  • 有没有专业做挂的网站引流推广方案
  • 购物网站开发文献综述百度收录需要多久
  • 营销型企业网站建设案例设计公司网站
  • 国际外贸网站电子商务
  • 南充做网站 www.xinbay.com全国免费发布广告信息
  • 备案 个人网站软件开发培训中心
  • 江苏网站建设网络推广关键词批量调词 软件