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

怎么利用自媒体做网站优化招聘网站制作公司

怎么利用自媒体做网站优化,招聘网站制作公司,云南省建设造价协会网站,制作手机软件的软件在MPI中将全局通信子划分为节点本地通信子 在MPI (Message Passing Interface) 中,将全局通信子(communicator)划分为每个节点上的本地通信子是一个常见的需求,特别是在混合并行编程(MPIOpenMP)或节点内通信优化时。以下是实现这一目标的几种方法&#…

在MPI中将全局通信子划分为节点本地通信子

在MPI (Message Passing Interface) 中,将全局通信子(communicator)划分为每个节点上的本地通信子是一个常见的需求,特别是在混合并行编程(MPI+OpenMP)或节点内通信优化时。以下是实现这一目标的几种方法:

1. 使用 MPI_COMM_SPLIT_TYPE

MPI-3.0引入了 MPI_COMM_SPLIT_TYPE 函数,这是最直接的方法:

MPI_Comm node_comm;
MPI_Comm_split_type(MPI_COMM_WORLD, MPI_COMM_TYPE_SHARED, rank, MPI_INFO_NULL, &node_comm);

参数说明:

  • 第一个参数:原始通信子(通常是MPI_COMM_WORLD)
  • 第二个参数:指定分裂类型(MPI_COMM_TYPE_SHARED表示共享内存节点)
  • 第三个参数:用于确定新通信子中的排序
  • 第四个参数:信息对象(可保留为MPI_INFO_NULL)
  • 第五个参数:输出的节点本地通信子

2. 使用传统的 MPI_COMM_SPLIT

如果没有MPI-3.0支持,可以使用 MPI_COMM_SPLIT 结合节点信息:

// 首先获取节点名称
char node_name[MPI_MAX_PROCESSOR_NAME];
int name_len;
MPI_Get_processor_name(node_name, &name_len);// 然后根据节点名称分裂通信子
MPI_Comm node_comm;
MPI_Comm_split(MPI_COMM_WORLD, get_node_hash(node_name), rank, &node_comm);

其中 get_node_hash 是一个自定义函数,将节点名称转换为相同的哈希值。

3. 获取节点本地信息

划分后,可以获取节点本地信息:

int node_rank, node_size;
MPI_Comm_rank(node_comm, &node_rank);
MPI_Comm_size(node_comm, &node_size);

4. 确定节点间通信

通常还需要一个"master"通信子用于节点间通信:

MPI_Comm master_comm;
int is_master = (node_rank == 0);  // 选择每个节点的rank 0作为代表
MPI_Comm_split(MPI_COMM_WORLD, is_master, rank, &master_comm);

5. 完整示例

#include <mpi.h>
#include <stdio.h>int main(int argc, char** argv) {MPI_Init(&argc, &argv);int rank, size;MPI_Comm_rank(MPI_COMM_WORLD, &rank);MPI_Comm_size(MPI_COMM_WORLD, &size);// 创建节点本地通信子MPI_Comm node_comm;MPI_Comm_split_type(MPI_COMM_WORLD, MPI_COMM_TYPE_SHARED, rank, MPI_INFO_NULL, &node_comm);int node_rank, node_size;MPI_Comm_rank(node_comm, &node_rank);MPI_Comm_size(node_comm, &node_size);printf("Global rank %d/%d, node rank %d/%d\n", rank, size, node_rank, node_size);// 清理MPI_Comm_free(&node_comm);MPI_Finalize();return 0;
}

这种方法可以有效地将MPI进程按物理节点分组,便于实现节点内的优化通信或与OpenMP等共享内存编程模型结合使用。

http://www.dtcms.com/a/478266.html

相关文章:

  • 每天五分钟深度学习:基于dropout(随机失活)解决神经网络过拟合
  • 自然语言处理(NLP)之分词
  • 双向数据绑定是什么
  • 全链路智能运维中的业务交易粒度资源消耗追踪技术
  • 开源程序网站百度识图在线网页版
  • 【LABVIEW软件】NI-VISA模块安装教程
  • 【完整源码+数据集+部署教程】害虫识别与分类图像分割系统源码和数据集:改进yolo11-MSBlock
  • 建设部网站公告注册成功怎样自己创造网站
  • 婚纱摄影网站毕业设计php汽车网站建设策划方案
  • mysql实战
  • OpenResty + Lua + Redis 鉴权案例,适用于 x86 和 ARM 架构的 Docker 环境。
  • Redis批量查询的 4 种方式
  • Google Chrome浏览器安装教程 谷歌浏览器离线安装(PC+安卓)附谷歌三件套 安装包!
  • Node.js crypto模块所有 API 详解 + 常用 API + 使用场景
  • 好文与笔记分享 Paris, A Decentralized Trained Open-Weight Diffusion Model
  • 企业网站托管排版设计专业网络营销外包公司
  • 1.5 欧拉集群安装Memcached缓存服务
  • asp.net 开发的网站wordpress付费下载模板
  • 十三、OpenCV中的图像的向上采样和向下采样
  • 一份面向研究人员的强化学习对齐指南:为自定义语言模型实施与评估 PPO 和 DPO
  • 石家庄网站seo网页设计与制作课程定位
  • Python全栈(基础篇)——Day10:后端内容(map+reduce+filter+sorted+实战演示+每日一题)
  • Datawhale OpenAI官方智能体框架202510
  • 25软件测试工作量估算
  • 网站页脚版权信息在线html编辑
  • 计算机视觉:卷积神经网络(CNN)图像分类从像素与色彩通道基础到特征提取、池化及预测
  • C# 串口通信完整教程 (.NET Framework 4.0)
  • GNN是和RNN一样的吗?多次循环,但是更新的是同一批参数?
  • Ubuntu 24.04 安装 Jenkins
  • 手游做网站推广应该怎么做photoshop做网站