并行程序设计基础——虚拟进程拓扑

2024-08-31 03:20

本文主要是介绍并行程序设计基础——虚拟进程拓扑,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一、虚拟拓扑

二、笛卡尔拓扑

1、MPI_CART_CREATE

2、MPI_DIMS_CREATE

3、MPI_TOPO_TEST

4、MPI_CART_GET

5、MPI_CART_RANK

6、MPI_CARTDIM_GET

7、MPI_CART_SHIFT

8、MPI_CART_COORDS

9、MPI_CART_SUB

10、MPI_CART_MAP


        简单的MPI通信,不要求参加通信的进程具有特殊的拓扑结构,但是在一些应用中,对进程具有一定的拓扑有很强的要求,定义不同的进程拓扑结构,可以使程序设计更加自然和更易于理解,同时这样的逻辑拓扑也为在相近的物理拓扑上的高效实现提供支持。

        从本节开始介绍如何定义和使用不同的进程拓扑,主要包括两种拓扑:①具有规则的网格现状的笛卡尔拓扑;②具有任意形状的图拓扑。目前应用较多的是笛卡尔拓扑。

一、虚拟拓扑

        在许多并行应用程序中,进程的线性排列不能充分地反映进程间在逻辑上的通信模型(通常由问题几何和所用的算法决定),进程经常被排列成二维或三维网格形式的拓扑模型,而且,通常用一个图来描述逻辑进程排列,在这里我们指这种逻辑进程排列为“虚拟拓扑”。拓扑是组内通信域上的额外、可选的属性,它不能附加在组间通信域上(inter-communicator)。拓扑能够提供一种方便的命名机制,对于有特定拓扑要求的算法使用起来直接、自然且方便,拓扑还可以辅助运行时系统,将进程映射到实际的硬件结构上。

        一个进程集合的通信模型可以由一个图表示,节点代表进程,边用来连接彼此之间通信的进程。用图来说明虚拟拓扑,对于所有的应用都是足够的。然而,在许多应用中图结构是规则的,而且详细的图的建立对于用户是不方便的,在运行时可能缺乏有效性。并行应用程序中的大部分使用像“环”、“二维”或更高维的网格、圆环这样的进程拓扑。这些结构完全由在每一相应坐标方向的维数和进程数来定义,可以用简单方便的笛卡尔坐标来表示。

        MPI提供两种拓扑,即笛卡尔拓扑和图拓扑,分别用来表示简单规则的拓扑和更通用的拓扑。

笛卡尔拓扑和图拓扑调用的简单对比
操作笛卡尔拓扑图拓扑
创建MPI_CART_CREATEMPI_GRAPH_CREATE
获得维数MPI_CARTDIM_GETMPI_GRAPHDIMS_GET
获得拓扑信息MPI_CART_GETMPI_GRAPH_GET
物理映射MPI_CART_MAPMPI_GRAPH_MAP

二、笛卡尔拓扑

1、MPI_CART_CREATE

这篇关于并行程序设计基础——虚拟进程拓扑的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1122745

相关文章

python操作redis基础

《python操作redis基础》Redis(RemoteDictionaryServer)是一个开源的、基于内存的键值对(Key-Value)存储系统,它通常用作数据库、缓存和消息代理,这篇文章... 目录1. Redis 简介2. 前提条件3. 安装 python Redis 客户端库4. 连接到 Re

Linux网络配置之网桥和虚拟网络的配置指南

《Linux网络配置之网桥和虚拟网络的配置指南》这篇文章主要为大家详细介绍了Linux中配置网桥和虚拟网络的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 一、网桥的配置在linux系统中配置一个新的网桥主要涉及以下几个步骤:1.为yum仓库做准备,安装组件epel-re

SpringBoot基础框架详解

《SpringBoot基础框架详解》SpringBoot开发目的是为了简化Spring应用的创建、运行、调试和部署等,使用SpringBoot可以不用或者只需要很少的Spring配置就可以让企业项目快... 目录SpringBoot基础 – 框架介绍1.SpringBoot介绍1.1 概述1.2 核心功能2

Python多进程、多线程、协程典型示例解析(最新推荐)

《Python多进程、多线程、协程典型示例解析(最新推荐)》:本文主要介绍Python多进程、多线程、协程典型示例解析(最新推荐),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定... 目录一、multiprocessing(多进程)1. 模块简介2. 案例详解:并行计算平方和3. 实现逻

C#通过进程调用外部应用的实现示例

《C#通过进程调用外部应用的实现示例》本文主要介绍了C#通过进程调用外部应用的实现示例,以WINFORM应用程序为例,在C#应用程序中调用PYTHON程序,具有一定的参考价值,感兴趣的可以了解一下... 目录窗口程序类进程信息类 系统设置类 以WINFORM应用程序为例,在C#应用程序中调用python程序

Spring Boot集成SLF4j从基础到高级实践(最新推荐)

《SpringBoot集成SLF4j从基础到高级实践(最新推荐)》SLF4j(SimpleLoggingFacadeforJava)是一个日志门面(Facade),不是具体的日志实现,这篇文章主要介... 目录一、日志框架概述与SLF4j简介1.1 为什么需要日志框架1.2 主流日志框架对比1.3 SLF4

Spring Boot集成Logback终极指南之从基础到高级配置实战指南

《SpringBoot集成Logback终极指南之从基础到高级配置实战指南》Logback是一个可靠、通用且快速的Java日志框架,作为Log4j的继承者,由Log4j创始人设计,:本文主要介绍... 目录一、Logback简介与Spring Boot集成基础1.1 Logback是什么?1.2 Sprin

MySQL复合查询从基础到多表关联与高级技巧全解析

《MySQL复合查询从基础到多表关联与高级技巧全解析》本文主要讲解了在MySQL中的复合查询,下面是关于本文章所需要数据的建表语句,感兴趣的朋友跟随小编一起看看吧... 目录前言:1.基本查询回顾:1.1.查询工资高于500或岗位为MANAGER的雇员,同时还要满足他们的姓名首字母为大写的J1.2.按照部门

Python如何精准判断某个进程是否在运行

《Python如何精准判断某个进程是否在运行》这篇文章主要为大家详细介绍了Python如何精准判断某个进程是否在运行,本文为大家整理了3种方法并进行了对比,有需要的小伙伴可以跟随小编一起学习一下... 目录一、为什么需要判断进程是否存在二、方法1:用psutil库(推荐)三、方法2:用os.system调用

Java程序进程起来了但是不打印日志的原因分析

《Java程序进程起来了但是不打印日志的原因分析》:本文主要介绍Java程序进程起来了但是不打印日志的原因分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java程序进程起来了但是不打印日志的原因1、日志配置问题2、日志文件权限问题3、日志文件路径问题4、程序