文章目录

  • 前言
  • 一、 安装VMware Workstation Pro 16
  • 二、 下载CentOS-7
  • 三、 在VM上安装CentOS-7
  • 四、 安装mpich
  • 五、 简单配置vim
  • 六、 编写程序并使用gcc以及mpich进行编译程序

前言

某个学期学习了高性能程序,老师布置的报告任务,为了防止曾经的记录丢失,我决定上传报告。

一、 安装VMware Workstation Pro 16

进入官网https://www.vmware.com/cn.html

选Workstation Pro进行下载安装并输入获得的密钥激活软件。

二、 下载CentOS-7

考虑到网络因素,进入https://mirrors.ustc.edu.cn/中国科学技术大学镜像网站下载CentOS-7

选择需要的镜像文件下载。

三、 在VM上安装CentOS-7

选择创建新的虚拟机

使用默认配置,下一步。
找到CentOS的下载路径并选择,继续下一步。

为虚拟机磁盘空间划分90GB
勾选第一项将虚拟磁盘存储为单个文件

后续下一步,直至虚拟机创建完成自动重启。

重启后自动进入安装程序,按回车确认开始。

安装过程中可以选择用中文或者英文,此处由于我熟悉英文,选择了过程中使用英文,再点击下一步。

首先到最下边的网络设置,点击这个选项

点击OFF变成ON开启网络连接,看到speed为1000说明网络连接成功,点击Done返回主页

设置时间选择上海时区,并开启网络对齐。完成后点击Done返回主页。

打开语言支持选择中文和英文,完成后返回主页。

输入设置选择英文和中文输入法。完成后返回主页。

进行磁盘划分

选择安装内容
选择带图形界面的系统以及基本开发工具,包括了GCC以及vm-tools,为后续工作节省大量时间,以及后续出错的可能。

开始安装,并且设置root密码以及用户密码

如果密码过于简单需要点击两次Done确认密码。等待安装完成即可开机使用。

四、 安装mpich

输入命令:su
进入root账户
输入命令:yum install -y mpich-3.2-devel.x86_64
安装mpich
输入命令:vim ~/.bashrc
编辑环境变量配置
在最末行添加:export PATH=$PATH:/usr/lib64/mpich-3.2/bin/
退出编辑后
再输入命令:source ~/.bashrc
使环境变量立即生效
退出root账户后,重复编辑环境变量操作即可在普通用户权限下使用mpich。

五、 简单配置vim

输入命令:vim ~/.vimrc
编辑vim设置

set autoindent  ""自动缩进
set cindent ""以C语言的方式缩进
set shiftwidth=4 ""设置自动缩进的空格数量
set softtabstop=4 ""tab键的实际占有空格数,统一缩进
set tabstop=4 ""设置tab键的空格数
set nu ""设置显示行号

六、 编写程序并使用gcc以及mpich进行编译程序

案例一:请你给杨幂,赵丽颖,杨颖每人转发一枝玫瑰。
代码:

#include<stdio.h>
#include<mpi.h>
int main(int argc,char *argv[]){int a=1,i=0;int myid,size;char *my[] = {"杨幂","赵丽颖","杨颖"};MPI_Init(&argc,&argv);MPI_Comm_size(MPI_COMM_WORLD,&size);MPI_Comm_rank(MPI_COMM_WORLD,&myid);if(myid==0){for(i=1;i<size;i++){printf("myid=%d,给%s,%d朵花\n",myid,my[i-1],a);MPI_Send(&a,1,MPI_INT,i,999,MPI_COMM_WORLD);}}else {MPI_Recv(&a,1,MPI_INT,0,999,MPI_COMM_WORLD,MPI_STATUS_IGNORE);printf("myid=%d%s收到%d朵花\n",myid,my[myid-1],a);}MPI_Finalize();return 0;
}

运行结果:

案例二:Double B[5],请将B数组每个数据的值加1并从0号进程传递给1号进程,再将数组每个数据值加1,并由1号进程传递给2号进程……以此类推,最后由n号进程传递给0号进程,并输出B数组。
代码:

#include<stdio.h>
#include<mpi.h>
int main(int argc,char *argv[])
{   int i = 0;int myid,size;double b[5]={0,1,2,3,4};MPI_Init(&argc,&argv);MPI_Comm_size(MPI_COMM_WORLD,&size);MPI_Comm_rank(MPI_COMM_WORLD,&myid);if(myid==0){for(i=0;i<5;i++){b[i]=b[i]+1;}MPI_Send(b,5,MPI_DOUBLE,1,999,MPI_COMM_WORLD);MPI_Recv(b,5,MPI_DOUBLE,size-1,999,MPI_COMM_WORLD,MPI_STATUS_IGNORE);for(i=0;i<5;i++){printf("%f,",b[i]);}printf("\n");}else {MPI_Recv(b,5,MPI_DOUBLE,(myid-1)%size,999,MPI_COMM_WORLD,MPI_STATUS_IGNORE);for(i=0;i<5;i++){b[i]=b[i]+1;}MPI_Send(b,5,MPI_DOUBLE,(myid+1)%size,999,MPI_COMM_WORLD);}MPI_Finalize();return 0;
}

运行结果:

案例三:梯形积分法计算函数y=x*x+1在区间积分
非并行代码:

#include<stdio.h>
int main(){double jifen(double a,double b);
//  double f(double x);double a=jifen(0.0,3.0);printf("积分结果为%lf\n",a);
}
double jifen(double a,double b){double f(double x);double d = (b-a)/10000;double result = 0;for(;a<=b;a=a+d){result = result+(f(a)+f(a+d))*d/2;}return result;
}
double f(double x){return x*x+1;
}

运行结果:

Mpi代码:

#include<stdio.h>
#include<mpi.h>
double Trap(double left_endpt,double right_endpt,double base_len);
double f(double x);int main(int argc,char *argv[]){int my_rank,comm_sz,n=2048,local_n; double a=0.0,b=3.0,h,local_a,local_b;//所求积分起始和结束位置,每个段内积分起始终止位置 double s,total_s;int i;MPI_Init(&argc,&argv);MPI_Comm_rank(MPI_COMM_WORLD,&my_rank);MPI_Comm_size(MPI_COMM_WORLD,&comm_sz);h=(b-a)/n;//步长 local_n =n/comm_sz;//每一段的计算次数local_a =a+my_rank *local_n*h;local_b =local_a+local_n*h;s =Trap(local_a,local_b,h);//计算局部值 if(my_rank !=0){//不是0号进程,发送局部值到0号进程 MPI_Send(&s,1,MPI_DOUBLE,0,0,MPI_COMM_WORLD);}else{                total_s =s;for(i =1;i<comm_sz;i++) {MPI_Recv(&s,1,MPI_DOUBLE,i,0,MPI_COMM_WORLD,MPI_STATUS_IGNORE);total_s+=s; }printf("当 n = %d trapezoids,our estimate\n",n);printf("of the intergral from %f to %f =%.15e\n",a,b,total_s);}MPI_Finalize();return 0;}
double Trap(double a,double b,double d){double result = 0;for(;a<=b;a=a+d){result +=(f(a)+f(a+d))*d/2;}return result;
}
double f(double x){ //计算的要积分的函数 return x*x+1;
}

运行结果:

VM,CentOS7,gcc,mpich安装,vim配置,mpi代码运行示例相关推荐

  1. CentOS-7.0.中安装与配置Tomcat-7的方法

    CentOS-7.0.中安装与配置Tomcat-7的方法 原创 2014年11月24日 23:38:36 72472 安装说明  安装环境:CentOS-7.0.1406 安装方式:源码安装  软件: ...

  2. centos72安装mysql配置密码_MySQL数据库之170419、Centos7下完美安装并配置mysql5.6

    本文主要向大家介绍了MySQL数据库之170419.Centos7下完美安装并配置mysql5.6 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. linxu环境: centos ...

  3. VMware下CentOS7最小化安装及配置

    1.VMware创建虚拟机 2.安装CentOS7 选择系统语言 磁盘分区规划,选择默认自动分区,也可手动分区: 设置网络和主机名: 这里设置主机名为:centos7,打开网络连接,其他网络参数等待系 ...

  4. mantis config_inc.php g_source,CentOS7下Mantis安装与配置

    Mantis是一个基于PHP技术的轻量级的开源缺陷跟踪系统,以Web操作的形式提供项目管理及缺陷跟踪服务.由于其安装简单.使用方面,备受广大开发和测试人员青睐.下面主要讲解下Mantis再CentOS ...

  5. CentOS7下Mantis安装与配置

    Mantis是一个基于PHP技术的轻量级的开源缺陷跟踪系统,以Web操作的形式提供项目管理及缺陷跟踪服务.由于其安装简单.使用方面,备受广大开发和测试人员青睐.下面主要讲解下Mantis再CentOS ...

  6. Centos7 gcc/g++安装以及运行程序

    一.在线安装gcc/g++(需要配置网络) linux系统下使用gcc编译c的代码,使用g++编译c++的代码 在虚拟机VMware Workstation 安装CentOS7后,系统是没有gcc和g ...

  7. vmware虚拟机及CentOS7.6初始化安装、配置优化、设置静态IP

    文章目录 CentOS7.6初始化安装 前置工具的安装 yum源优化 创建虚拟机快照 克隆创建作业机 优化网络管理设置静态ip CentOS7.6初始化安装 下载安装vmware workStatio ...

  8. acm的ubuntu (ubuntu16.04 安装指南,chrome安装,vim配置,git设置和github,装QQ)

    日常手贱把ubuntu14.04更新到了16.04,然后就game over了.mdzz,不然泥萌也看不到这篇博客了=.= 然后花了些时间重装了一个16.04版的,原来那个14.04的用可以用,就是动 ...

  9. Windows环境下用虚拟机安装使用Linux系统(下载安装CentOS7镜像+下载安装VMware+配置虚拟机和系统安装)

    一.下载CentOS镜像 这是Linux的一个发行版,相比红帽子(RedHat)的企业版(Enterprise Linux)来说,这个是免费的版本,特点是兼容性和界面可能差了点,但是非常的稳定,占用资 ...

最新文章

  1. adc采样时间_太秀了!单片机内置 ADC 实现高分辨率采样?
  2. window对象(一) 计时器 定位导航 url解析 浏览历史 对话框 消息推送
  3. HDU2049 不容易系列之(4)——考新郎【递推】
  4. 强联通块tarjan算法
  5. 【干货】神经网络SRU
  6. UML类图中箭头和线条的含义和用法
  7. 视频播放器+控制器--封装
  8. 李炎恢python_前端教程:李炎恢jQuery视频教程 百度网盘
  9. 安全合规/法案--35--《APP收集使用个人信息自评估指南(征求意见稿)》原文及解读
  10. linux系统svn安装教程,Linux下SVN安装配置
  11. 协调端到端的供应链管理——SCM
  12. 如何面对大容量的数据存储
  13. js获取浏览器内核版本信息
  14. IceSword 1.12
  15. 计算机浮点数格式化表示方法,浮点数在计算机中是如何表示的
  16. “裸辞” 备战15天三面美团,交叉面却被吊起来锤
  17. Scratch滚动的天空(3)
  18. 视觉slam14讲学习(一)之se3上的定位表示:轨迹显示与轨迹误差
  19. npy格式的文件生成图像展示
  20. 布尔教育2016最新php教程 PHP基础班+PHP大师班视频教程

热门文章

  1. 【杂谈】除了生成图像(造假),GAN如何给目标检测,图像分割,图像增强等问题打辅助?...
  2. 普洱熟茶如何从茶汤色泽中看出品质?
  3. android底部导航栏带消息数的框架,GitHub - BarkSheep/Android-NavMenuLayout: 一个底部导航栏, 实现了显示未读消息数, 显示红点等效果的封装...
  4. C语言如何输入输出一个字符串
  5. 跨平台应用开发进阶(六十):uniapp 获取设备唯一标识信息
  6. java 生成、解析二维码并在二维码中添加样式
  7. 清理VMware虚拟机磁盘,解决虚拟机磁盘只增不减问题
  8. 什么是ROC和AUC?一文给你讲明白
  9. 神策数据宣布 4400 万美元融资 ,首家迈入 C 轮的用户行为分析服务商
  10. (The application/json Media Type for JavaScript Object Notation (JSON))RFC4627-JSON格式定义