b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

用pc构建DIY计算集群

电脑杂谈  发布时间:2019-11-05 04:04:28  来源:网络整理

高性能计算机搭建_计算机计算性能_计算机按性能

-----------------------------------------------------------------

用pc构建DIY计算集群

目录

/构建计算集群

|-- /0前言

|-- /1理论

----|-- /1.1并行计算

----|-- /1.2历史

----|-- /1.3MPI消息传递接口*

----|-- /1.4并行算法*

|-- /2结构

----|-- /2.1节点*

----|-- /2.2网络拓扑

----|-- /2.3存储

----|-- /2.4分类

|-- /3操作系统和工具环境

----|-- /3.1操作系统*

----|-- /3.2进程,进程通信

|-- /4两台PC的集群

----|-- /4.1硬件

----|-- /4.2安装操作系统

----|-- /4.3配置环境,安装工具

----|-- /4.4网络配置

----|-- /4.5单鸡多核

----|-- /4.6できた!多鸡

----|-- /4.7NFS设置

ps云计算和高性能计算和虚拟化

--------------------------------------------------------------------

*参考书《并行计算导论》张林波,迟学斌,莫则尧,李若

简要介绍如何打造一台微型“超算”。当然,真的超算要复杂太多,因为涉及到多用户,多任务,队列管理和存储管理之类一系列问题。在没有排到大型机的状况下,还是可以应付一些简洁的小规模的并列运算。

左边是pc的cluster,右边是Apple的xserver的cluster。*from “Mezono group”。

超算没有那么神秘,大部分程序而是fortran和c的,运行模式只是自动编译,然后提交队列。可以看作是电脑里的卡特彼勒重卡,算是电子时代的暴力美学吧。

计算机按性能_计算机计算性能_高性能计算机搭建

并行计算(parallel computing)是指在并行机上,把一个应用分解成多个子任务,分配给不同的处理器,各个处理器之间协作,并行执行子任务,目的是加强计算速度。

由此需要1,硬件支持,需要并行机,多核,单机的话,单个任务在一个核心上执行和多核上执行速率也不一样,多机就应该网络连接。2,计算的弊端可以并行,如果计算的弊端是流水线,互相关联度很高,完全无法并行,那么就没有必要用并行计算活着超算。3,需要进行相应的编程改进。

那么什么样的难题还要超算呢,的科学和项目计算,比如天气预报,需要24小时完成48小时的数值模拟,至少应该635万个网格点,内存大雨1TB,计算功耗要求高达25万亿次/s。

(太长,暂略)

MPI(message Passing interface)是全世界联合成立的消息释放编程标准,目的是用消息释放提供一个高效可扩充,统一的编程环境,是现在最为通用的并行编程方法,也是主要应用的。

MPI有多种"实现"高性能计算机搭建,包括mpich1/mpich2、openmpi、lam-mpi等,每种mpi的推动需要配合相应的编译器,才能发挥作用。

c语言mpi hello world

#include <mpi.h>
#include <stdio.h>
int
main(int argc, char *argv[])
{
    int rank, size;
    MPI_Init(&argc, &argv);
    MPI_Comm_rank(MPI_COMM_WORLD, &rank);
    MPI_Comm_size(MPI_COMM_WORLD, &size);
    printf("Hello, World.  I am %d of %d\n", rank, size);
    MPI_Finalize();
    return 0;
}

*参考书《并行计算-结构/算法/编程》陈国良

任何并行算法的设计都是基于某一特定的并行计算模型,而并行计算模型是从各类具体的并行机中抽象起来的,它能在必定程度上体现出准确并行机的属性,又可使算法研究不再局限于某一种具体的并行机。

并行算法可从不同的视角分类成数值换算的和非数值计算的并行算法;同步的、异步的和分布式的并行算法;共享内存的和分布存储的并行算法;确定的和随机的并行算法等等。

举个栗子,单个进程的快速排序

输入 : 无序序列(Aq ,⋯ ,Ar)
输出 : 有序序列(Aq ,⋯ ,Ar)					
Procedure QUICKSORT(A,q,r)
Begin				
     if q<r then 
        (1)x= Aq			
        (2)s=q 
        (3)for i=q+1 to r do		
            if Ai ≤ x then 
                (i)s=s+1  
                (i)swap(As ,Ai)			
             endif 
        (4)swap(Aq ,As)		
        (5)QUICKSORT(A,q,s)					
        (6)QUICKSORT(A,s+1,r) 
endif					
End	

然后进行并行化之后是这个样子,基于二叉树的并行选主元的PRAM_CRCW 模型上的快排序算法。执行快排序可以看成是构造一棵二叉树,其中主元是根,小于等于主元的元素处于左子树,大于主元的元素处于右子树。算法首 先从选第一个主元开始,它划分原序列为两个子序列;然后再次子序列中主元的选 取则可并行执行。当这种的二叉树造好后,采用中序遍历的方式就可得到一个有序序列。

输入: 序列 ( A1 ,⋯ , An ) 和n个处理器
输出: 供快排序用的一棵二叉树				
Begin
    (1)for each procesor i do			
        (1.1)root=i
        (1.2) fi =root
        (1.3) LCi = RCi = n + 1					
    endfor
    (2)repeat for each procesor i≠root do 
    if (Ai < Afi) ∨ (Ai = Afi ∧ i < fi) then		
        (2.1)LCfi =i				
        (2.2)if i = LCfi then exit else fi = LCfi endif			
        else
        (2.3)RCfi =i		
        (2.4)if i=RCfi then exit else fi = RCfi endif
        endif
     end repeat					
End

节点(node)。每个节点由多个处理器构成,可以直接输入输出(I/O)。

互联网络(interconnect network)。连接节点。

存储(memory)。由多个存储组件组成

需要cpu,有缓存,有硬盘,还必须网络联接,专用的工业超算还必须专门设计节点,比如下图就是cray的节点

*fromPerformance Computer, XC Series Supercomputers

也可以用树莓派

Raspberry Pi 3 Model B - Raspberry Pi

有了节点,就应该对节点进行联结,评价一个网络的准则必须是,对于一定数目的结点,点对点的时延越高,折半宽度越大,或者网络直径越小,点对点延迟越小,质量就越好。拓扑结构可以分为静态,动态,和宽带连接三类。

a静态连接,就是对于固定数目的节点,单独设计的一套固定的物理连接,至于用哪个线连接,都是对客户不可见的,具体取决于厂商以及设计者。连接的拓扑包括阵列(array),环(ring),网格(mesh),网格环(torus),树(tree),超立方体(hypercube),蝶网(butterfly),Benes网等等。详情可以参考其它文献,《面向拓扑结构的并行算法设计与分析》李晓梅等

上图就是

阵列(array) 环(ring)

网格(mesh) 网格环(torus)

树(tree) X-树(x-tree)

现在非常有名的超算一般运用超立方体(hypercube)

三维立方体,长这种

高性能计算机搭建_计算机按性能_计算机计算性能

四维立方体,长这种

b动态连接

静态虽好,但是扩展非常困难,如果运用相当简洁一维阵列,一个节点挂了,整台都挂了,而且不合适异构的混合计算。那么动态的连接方法就发生了。

多层总线联接,或者交叉开关

c宽带连接,这是我们才能用得起的,因为以下的连接方法有的必须专用设施,有的必须按照节点进行设计,而且随着以太网和交换机的演进,网络联接的速率可以满足通讯需求,大部分的集群都采取宽带互联网。

随着cpu的演进,目前的短板在于储存,所谓的存储墙(memory wall)解决办法就是增加缓存,增加缓存层级以及缩小缓存容量,在其中找到一个价格也能接受,速度也够用的平衡。

而针对不同的意愿和设计,也会有不同的存储管理制度, 如果是MPP,数据超大,就应该单独的储存管理,对于大型集群,存储的设计可以单独设计NFS也可以直接运用节点存储。

集群(cluster),利用商用节点,商用cpu或者gpu,采用商用交换机连接,操作系统采用linux高性能计算机搭建,GNU编译器,和PBS。

星群(constellation),系统的每个节点是一个并行机子系统,每个子系统里包括很多个处理器,采用家用交换机连接,操作系统和编译平台和PBS可以采取专用的。

并行系统(MPP,Massively Parallel Processing),每个节点包括10个左右的处理器,共享内存,处理器可以用专用的,或者家用的,采用高性能网络联接,节点分布存储。 操作系统和编译平台和PBS需要专用的。

具体的超算信息可以查看top500November 2016 | TOP500 Supercomputer Sites

如果根据指令和数据流分类,就是单指令多数据流(SIMD),已经淘汰,多指令单数据流(MISD),至今没发生过,多指令多数据流(MIMD),现在你们用的。

都是UNIX和类UNIX,比如linux,操作都差不多,学好linux还是很重要滴。

需要的语言,由重要到大概重要排序,Fortran 77/90/95、c/c++、shell(如果算语言的话)、python(一般是2.x)、perl、sed、等等等等。因为在科学计算领域,软件升级非常慢,所以祖传老代码非常多,所以,使用标准通常非常老,且不保证兼容,所以想一次编译通过,不是很容易(头疼)。编译器一般会有选择,开源的一般来说效率没有收费的高,所以,想高效,还是要花钱滴。

进程(process)是基本的单位,包括,程序代码、控制状况、数据、执行状态,进程拥有独立的运行环境,高内聚低耦合嘛。在多核运算中,多个进程跑在一个物理核心上是不能缩短总运行时间的(walltime),反而会小幅增加,所以,说核心的之后,尽量以物理核心为准。

进程间的通信 有三种方式,通信、同步、和集聚,主要方式就是通信,通过消息(message)传递,进行通信,实现的方式可以是借助共享传输以及网路通讯,但是这对用户都是不可见的,我们只应该调用MPI。

两台节点:intel i7 4核,6g显卡,1T硬盘,独立显卡(gpu太弱,不用它来计算,只用于连接显示器)intel Gigabit以太网卡。

网络连接:gigabit以太网switch hub(L2交换机),网线,需要连接互联网

安装ubuntu 16.04,lts,具体的调试方法就很简单啦,略。

sudo apt-get -y update
sudo apt-get -y upgrade

首先,更新一下apt。

sudo apt-get -y install expect rlwrap emacs24 openssh-server openssh-client xinetd nfs-common libgomp1 samba samba-client openmpi-bin libopenmpi-dev openmpi-common update-manager-core


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-128882-1.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 张孟阁
      张孟阁

      “台湾区渔业广播电台”报了三十几年钓鱼台的天气

    热点图片
    拼命载入中...