MPI二维笛卡尔坐标划分【1】
本文简单演示,如何对现有进程进行二维划分,如何获得进程的X和Y坐标。
只有一段程序:
#include <mpi.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
int rank,size;
int rankX, rankY;
int ndims = 2;
int dims[2] = {2, 2};
int periods[2] = {0, 0};
int reorder = 0;
int remainX[2] = {1, 0};
int remainY[2] = {0, 1};
MPI_Comm comm2d;
MPI_Comm commX, commY;
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_size(MPI_COMM_WORLD, &size);
MPI_Cart_create(MPI_COMM_WORLD, ndims, dims, periods, reorder, &comm2d);
MPI_Cart_sub(comm2d, remainX, &commX);
MPI_Cart_sub(comm2d, remainY, &commY);
MPI_Comm_rank(commX, &rankX);
MPI_Comm_rank(commY, &rankY);
printf("rank = %d; X = %d; Y = %d\n", rank, rankX, rankY);
MPI_Finalize();
return 0;
}
将上面这段程序拷贝到test.c文件中。
Makefile内容如下
TARGET = test.exe all : test.c mpicc -g -O0 $^ -o $(TARGET) run : $(TARGET) mpiexec -n 4 ./$(TARGET) clean : rm *.exe -rf
实验结果:
mpiexec -n 4 ./test.exe rank = 0; X = 0; Y = 0 rank = 2; X = 1; Y = 0 rank = 3; X = 1; Y = 1 rank = 1; X = 0; Y = 1
MPI二维笛卡尔坐标划分【1】的更多相关文章
- 关于c语言二维数组与指针的个人理解及处理办法。
相信大家在学习C语言时,对一维数组和指针的理解应该是自信的,但是,我在学习过程中,看到网上一些博文,发现即便是参加工作的一些专业编程人员,突然碰到二维数组和指针的问题时,也可能会遇到难以处理的诡异问题 ...
- lintcode:搜索二维矩阵II
题目 搜索二维矩阵 II 写出一个高效的算法来搜索m×n矩阵中的值,返回这个值出现的次数. 这个矩阵具有以下特性: 每行中的整数从左到右是排序的. 每一列的整数从上到下是排序的. 在每一行或每一列中没 ...
- lintcode :搜索二维矩阵
题目: 搜索二维矩阵 写出一个高效的算法来搜索 m × n矩阵中的值. 这个矩阵具有以下特性: 每行中的整数从左到右是排序的. 每行的第一个数大于上一行的最后一个整数. 样例 考虑下列矩阵: [ [1 ...
- C++动态二维数组的创建
两种方式. 一,二级指针,创建2行3列的动态二维数组. 这里,p指向的是2个地址,这两个地址各指向长度为3的一维整型数组. 在内存中,每行元素内部顺序排列.两行元素的首地址不同,p[1]与p[2]存放 ...
- ZOJ 2859 二维RMQ(模板)
这题求范围最小值,RMQ正好是用来解决这方面的.所以再适合只是了,又是离线静态输入输出的,所以时间比二维线段树快. #include<iostream> #include<cstdi ...
- JAVA之旅(三)——数组,堆栈内存结构,静态初始化,遍历,最值,选择/冒泡排序,二维数组,面向对象思想
JAVA之旅(三)--数组,堆栈内存结构,静态初始化,遍历,最值,选择/冒泡排序,二维数组,面向对象思想 我们继续JAVA之旅 一.数组 1.概念 数组就是同一种类型数据的集合,就是一个容器 数组的好 ...
- CSS Grid基于网格的二维布局系统(详细教程)
.grid-wrap{ display: inline-flex; padding: 20px; background: #f4f4f4; word-break: initial; } .handle ...
- [Day4]Switch语句、数组、二维数组
1.选择结构switch (1)格式 switch (表达式){ case 目标值1: 执行语句1; break; case 目标值2: 执行语句2; break; ...... case 目标值n: ...
- 【洛谷】【动态规划(二维)】P1508 Likecloud-吃、吃、吃
[题目描述:] 正处在某一特定时期之中的李大水牛由于消化系统比较发达,最近一直处在饥饿的状态中.某日上课,正当他饿得头昏眼花之时,眼前突然闪现出了一个n*m(n and m<=200)的矩型的巨 ...
随机推荐
- [HNOI2016]树
Description 小A想做一棵很大的树,但是他手上的材料有限,只好用点小技巧了.开始,小A只有一棵结点数为N的树,结 点的编号为1,2,…,N,其中结点1为根:我们称这颗树为模板树.小A决定通过 ...
- [HNOI2002]彩票
题目描述 某地发行一套彩票.彩票上写有1到M这M个自然数.彩民可以在这M个数中任意选取N个不同的数打圈.每个彩民只能买一张彩票,不同的彩民的彩票上的选择不同. 每次抽奖将抽出两个自然数X和Y.如果某人 ...
- 51 nod 1405 树的距离之和
1405 树的距离之和 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 给定一棵无根树,假设它有n个节点,节点编号从1到n, 求任意两点之间的距离(最短路径)之 ...
- 【The Time Traveller's Wife】
After reading The Time Traveller's Wife: It's a tragedy,I think.But it's mixed with hope.Henry ...
- bzoj4665小w的喜糖 dp+容斥
4665: 小w的喜糖 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 120 Solved: 72[Submit][Status][Discuss] ...
- Python3玩转儿 机器学习(4)
jupyternotebook 的使用方法¶ 最基本的使用¶ In [1]: 1+2 Out[1]: 3 菜单树¶ File¶ |------> New Notebook --- ...
- Java 反射详解 转载
java 反射 定义 功能 示例 概要: Java反射机制详解 | |目录 1反射机制是什么 2反射机制能做什么 3反射机制的相关API ·通过一个对象获得完整的包名和类名 ·实例化Class类对象 ...
- Python小代码_8_今天是今年的第几天
import time date = time.localtime() print(date) #time.struct_time(tm_year=2018, tm_mon=2, tm_mday=24 ...
- Microsoft Visual Studio 2017 编译最新版 libuv 1.x 并且生成 LIB 和 DLL 两种模式
以为昨天晚上编译通过就可以了,哪知道,早上编译DLL的一车的报错 今天开始逐个解决,终于把引用的问题一亿解决了,具体步骤如下 1 在 Windows 平台下编译出错,显示导出未定义,打开 uv-win ...
- Oracle中rownum的说明及使用技巧
一.rownum的说明 rownum是oracle特有的一个关键字. (1)对于基表,在insert记录时,oracle就按照insert的顺序,将rownum分配给每一行记录,因此在select一个 ...