Skip to content

ldfaiztt/MyDocuments

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

132 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

高性能地理计算学习资料清单

收集有关并行计算,并发设计和地理计算的相关资料进行汇总,方便自己学习查看。资料分为六个部分:

目录

  • 第一部分:地理信息科学总论,讨论地理信息科学的内容;
  • 第二部分:地理计算,有关GDAL/OGR等的资料;
  • 第三部分:并行计算,为高性能计算部分,有关并行、并发、MPI等资料;
  • 第四部分:高性能地理计算,收集整理高性能地理计算部分;
  • 第五部分:业界最新发展方向,为业界最新发展方向;
  • 第六部分:云计算和大数据,为业界的动态;
  • 第七部分:当前实验进展,为当前实验进展;

第一部分 地理信息科学总论

1 地理信息科学框架

框架

源文件visio格式

2 地理信息科学的主要研究方面

李老师的GIS三界理论

  • 第一界:GIS的理论研究
  • 第二界:GIS的技术开发
  • 第三界:GIS的应用实践

3 地理信息科学的核心重要问题

  • 定性
  • 定量
  • 定位(空间分析)
  • 定期(时序分析)
  • 定时(典型调查与总体特征分析)

4 地理信息科学的终级问答

人类依靠地理能怎样认识地球?


第二部分 地理计算

1 什么是地理计算

2 脚本绑定gdal

3 文档资料

4 开源地理服务

  • mapserver
  • geocloud2,A complete platform for managing geospatial data, making map visualisations and creating applications. Built on the best open source and standard based software.
  • opengoe-suite, Build great maps and apps with the geospatial power of our standards-based platform.
  • geoserver,is an open source software server written in Java that allows users to share and edit geospatial data.
  • geomoose,is a Web Client JavaScript Framework for displaying distributed cartographic data that built upon other open source projects MapServer,OpenLayers and Dojo Toolkit.
  • geonode. Open Source Geospatial Content Management System.
  • mapzen,一系列开源库,帮助你构建自己的地图系统。
  • mapbox,新一代的地图工具。
  • cartodb
  • openlayers
  • leaflet

5 地理计算脚本


第三部分 并行计算

包括一些有关并行的程序库和文档资料。

1 我的关于并行计算三个设定

  • 第一条:并行算法只能在并行计算机上运行
  • 第二条:并行算法处理的数据,串行算法没有办法处理
  • 第三条:并行算法不一定比串行算法快

2 程序语言讨论

程序语言 这是我的判断图。 源文件visio格式

当前最新的计算机语言,几乎都把并发当成语言内置的支持,这对并行计算影响很大。

注意

  • Cobra 语言设计很有意思将测试和契约设计思想融入语言的设计中,值得学习。

3 程序语言设计库

如何设计一门自已的程序语言,有以下库可以帮助你:

4 参考设计语言

5 理想中的语言

我自己的语言正在设计中,参见YAPL

6 软件开发过程管理

快速构建一致的开发环境

7 并行类库

  • ltsmin.中有一个有关mpi的事件机制的循环.可以学习。
  • casablance.该库中有一个线程实现库叫pplx,跨平台实现,可以参考API的设计
  • Ray.mpi为基础的并行计算库
  • theron.该库有设计并行的实现
  • mpi-rpc
  • zht-mpi
  • SObjectizer.The SObjectizer is a framework for agent-oriented programming in C++.
  • caf,该库有设计actor的实现
  • TBB,Intel Threading Building Blocks
  • libprocess.process之间的actor风格的库
  • actor-cpp.An implementation of the actor model for C++.
  • libactor.Actor Model Library for C.
  • Channel.Name Space Based C++ Framework For Asynchronous, Distributed Message Passing and Event Dispatching.
  • C++CSP2.Easy Concurrency for C++.
  • concurrencykit,高并发库。
  • libconcurrency
  • libtask
  • state-threads.线程级的库实现,这里有一些文档
  • chan,纯c实现在channel库
  • libcoro.一个并发库
  • libev.一个事件库
  • mapreduce c++
  • skynet.风云的博客中有一个关于工业级的使用,多进程和多线程,还有嵌入式脚本,博客的内容在这里
  • fibjs.其中有多个类库,可以学习
  • hpx.一个分布式计算框架,可以看看构架
  • neu.另一分布式计算框架,可以看看构架
  • meguro[Javascript].A Javascript Map/Reduce framework
  • Disco[python].a lightweight, open-source framework for distributed computing based on the MapReduce paradigm.
  • mrjob,Run MapReduce jobs on Hadoop or Amazon Web Services.
  • jug, A Task-Based Parallelization Framework.
  • GraphLab
  • MapReduce for C(MR4C),目的是为了优化其地理空间数据及计算机视觉代码库。
  • GeoKettle is a powerful, metadata-driven Spatial ETL tool dedicated to the integration of different spatial data sources for building and updating geospatial data warehouses. download
  • HPX ,A general purpose C++ runtime system for parallel and distributed applications of any scale.
  • dask,Dask provides multi-core execution on larger-than-memory datasets using blocked algorithms and task scheduling.

8 工具类库

9 关于并发的文章

10 c++中关于线程的学习

11 C++构建工具的选择

12 脚本绑定mpi

13 MPI相关问题汇总

MPI与Hadoop的区别和联系

并行计算的代表性技术是MPI,云计算的代表性技术是Hadoop。云计算的基础是并行计算,是并行计算和网络结合而发展起来的。MPI和Hadoop代表了不同背影开发者和学术的不同观点。所以MPI和Hadoop有很大的关系,既有共同点也有很多不同之处。

两者的相同点如下: 两者都是使用多个节点进行并行计算,协作完成一个任务;都可以在专用的并行机和廉价的PC机组成的机群上运行;Hadoop整体上是主从式架构的,HDFS是主从结构的,MapReduce任务调度模型也是主从结构的;MPI主要的程序设计模式也是主从式的。Hadoop分布式计算的主要思想是MPi和Reduce,而MPI也提供归约函数MPI_Reduce实现各个节点之间的归约操作。

两都的不同点如下:

(1)MPI标准的制定就是为了科学学者实现尖端科学技术的高速计算,目的是实现高效的并行计算。一般是在专用并行机或者PC机通过局域网搭建的机群上进行并行计算,耦合度很高,节点失效率低,所今MPI没有提供处理节点失效的备份处理。如果有节点失效,必须重新开始计算。而Hadoop是IT工程师开发实现的用于商业用途进行分布式计算的平台,目的是向用户提供服务。一般是由分布在各地的廉价PC通过互联网联接起来为用户提供服务,耦合度比较低,节点失效的可能性很大,所以Hadoop把节点失效看作是系统状态,提供了允许节点失效的备份处理容错机制。

(2)MPI向设计者提供的是一种节点间信息沟通的工具,开发者可以按照自己的意原采用任何架构来实现功能,没有主控节点,计算节点由程序员指定,在主从设计模式的程序中由指定的主节点控制信息的传递,在设计上有较大的自由度。Hadoop是一个分布式计算框架项目,是以架构的形式提出来的,HDFS的NameNode和MapReduce调度中的JobTracker控制其他执行节点,系统自动选择计算节点,所以如何进行分布处理对用户是透明的。

(2)MPI不提供分布式文件系统的支持,数据集中存储,由高级语言通过调用标准函数库传递消息实现并行计算。Hadoop有分布式文件系统HDFS支持,数据存储在HDFS上,由用户定制配置文件,然后编定Map和Reduce函数实现分布式的并行计算,计算时计算向存储迁移。

科学家和IT工程师对云计算技术做出了不同的选择反映了不同领域设计者从不同的角度和层次对同一事物做出不同描述和认识。MPI和Hadoop各有所长,MPI在程序设计上给程序员提供较大的自由度和Hadoop在程序设计上的简单给未来的云计算发展指出了方向。

注:以上的内容摘自基于MPI和MapReduce的分布并行计算研究,第24页

14 MPI的问题

具体的说,MPI允许进程之间在任何时刻互相通信。如果一个进程挂了,我们确实可以请分布式操作系统重启之。但是如果要让这个“新生”获取它“前世”的状态,我们就需要让它从初始状态开始执行,接收到其前世曾经收到的所有消息。这就要求所有给“前世”发过消息的进程都被重启。而这些进程都需要接收到他们的“前世”接收到过的所有消息。这种数据依赖的结果就是:所有进程都得重启,那么这个job就得重头做。

一个job哪怕只需要10分钟时间,但是这期间一个进程都不挂的概率很小。只要一个进程挂了,就得重启所有进程,那么这个job就永远也结束不了了。

虽然我们很难让MPI框架做到fault recovery,我们可否让基于MPI的pLSA系统支持fault recovery呢?原则上是可以的——最简易的做法是checkpointing——时不常的把有所进程接收到过的所有消息写入一个分布式文件系统(比如GFS)。或者更直接一点:进程状态和job状态写入GFS。Checkpointing是下文要说到的Pregel框架实现fault recovery的基础。

注:这段内容摘自大数据的首要目标是“大”而不是“快”

15 参考链接:


第四部分 高性能地理计算

目前高性能地理计算资料较少,在这里有一些mpi与gdal结合的程序

看看国外做了哪些东西:

  • HPGeoC,is conducting research and development in high performance computing, data intensive computing, and grid computing to support geoscience applications, with particular emphasis on computational seismology.

第五部分 业界最新发展方向

1 业界最新的计算框架

2 关注地理大数据的组织

  • locationtech,观注地理信息的存储、计算和表达的项目。

3 在线工具


第六部分 云计算和大数据

1 运维工具

2 自动化脚本

  • AHK
  • sikuli,Sikuli automates anything you see on the screen. It uses image recognition to identify and control GUI components. It is useful when there is no easy access to a GUI internal or source code.

3 Rake 使用

4 机器学习

搜索

推荐

挖掘


第七部分 实践中的地理计算框架

1 框架设想

MPI是高效的,基础的。

2 任务安排

第一步,构建消息库

  • 构建一个可靠的消息队列库
  • 利用消息队列库,实现多进程的合作

第二步,设计同步模式

  • 基于scala的actor
  • 基结go的channel
  • 基于react的,也就是基于事件
  • geaman队列系统

第三步,嵌入脚本语言

  • 嵌入脚本,融合python,ruby,lua或者newlisp。

3 打算要做的事

  • 将gdal中port库提出来,专门做一个工具库类库。
  • readme.md写完
  • mpi-rpc再拿出来研究

About

my hpgc resources

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • C++ 58.2%
  • C 38.9%
  • TeX 2.3%
  • Makefile 0.3%
  • Haskell 0.1%
  • XSLT 0.1%
  • Other 0.1%