高通量计算框架HTCondor(四)——案例准备
1. 正文
1.1. 任务划分
使用高通量计算第一步就是要针对密集运算任务做任务划分。将一个海量的、耗时的、耗资源的任务划分成合适粒度的小任务,需要综合考虑资源、数据等多方面因素。HTCondor并不参与这方面的工作,任务划分需要用户自己实现。
默认情况下,HTCondor会把一个CPU核心当成一个计算资源。最理想的情况,就是计算集群网络内所有的集群主机都是同样的配置,数据也是易于划分的,那么可以按照计算机集群内CPU的总核心数,对数据量等分划分。这样,因为同样的数据量同样的计算机资源,进行分布式计算时理论上会同时完成,也就达到了负载均衡。
这里就准备了这样的一个任务例子,假设任务已经划分好,已经放到同一个目录中:
0,1,2,..., 15就是划分好的16份数据,每个目录中都存放了数据。所谓计算任务,就是输入一个数据,处理后形成新的数据。所以,每个文件夹都放入了一个input.txt文件,作为计算任务的输入:
实例目的很简单,就是将这些划分好的任务提交到HTCondor,让HTCondor的计算资源分别处理这些数据,并将新的数据返回来。
1.2. 任务程序
既然要进行计算任务,那么不可或缺的就是运行的任务程序了。说到底分布式计算的基础还是单机运算,必须要保证发送的每个任务在单机下就能正确运行,才能谈任务调度的问题。
在这里我用的是一个C/C++的任务程序:
#include <iostream>
#include <fstream>
#include <string>
#include <time.h>
using namespace std;
int main()
{
fprintf(stdout, "开始运行\n");
//延时10S
fprintf(stdout, "延时10S\n");
time_t first = time(NULL);
double diff = 0;
while (diff<10)
{
time_t second = time(NULL);
diff = difftime(second, first); //计时
}
ifstream infile("input.txt");
if (!infile)
{
fprintf(stderr, "无法读取文件\n");
return 1;
}
string line;
getline(infile, line);
ofstream outfile("output.dat");
if (!outfile)
{
fprintf(stderr, "无法写出文件\n");
return 1;
}
outfile << "输出内容:\n";
outfile << line;
fprintf(stdout, "运行完成\n");
return 0;
}
可以看到这个程序特别简单,就是延时10秒后,读取input.txt的内容,写出到output.dat中。延时10秒是为了方便显示运行状态。其实不必非要C/C++的程序,只要是能够运行的可执行程序即可,条件是每台机器要有对应的运行环境,否则发送过去的任务会因为无法运行而挂起。
将这个程序编译的可执行程序放到bin目录中,保证在单机的情况下,能够正常运行。
在下一章中,将会介绍如何通过HTCondor框架运行这个实例。
2. 相关
高通量计算框架HTCondor(四)——案例准备的更多相关文章
- 高通量计算框架HTCondor(一)——概述
目录 1. 正文 2. 目录 3. 参考 4. 相关 1. 正文 HTCondor是威斯康星大学麦迪逊分校构建的分布式计算软件和相关技术,用来处理高通量计算(High Throughput Compu ...
- 高通量计算框架HTCondor(六)——拾遗
目录 1. 正文 1.1. 一些问题 1.2. 使用建议 2. 相关 1. 正文 1.1. 一些问题 如果真正要将HTCondor高通量计算产品化还需要很多工作要做,HTCondor并没有GUI界面, ...
- 高通量计算框架HTCondor(二)——环境配置
目录 1. 概述 2. 安装 3. 结果 4. 相关 1. 概述 HTCondor是开源跨平台的分布式计算框架,在其官网上直接提供了源代码和Windows.Linux以及MacOS的安装包.因为平台限 ...
- 高通量计算框架HTCondor(五)——分布计算
目录 1. 正文 1.1. 任务描述文件 1.2. 提交任务 1.3. 返回结果 2. 相关 1. 正文 1.1. 任务描述文件 前文提到过,HTCondor是通过condor_submit命令将提交 ...
- 高通量计算框架HTCondor(三)——使用命令
目录 1. 目录 2. 进程 3. 命令 3.1. condor_q 3.2. condor_status 3.3. conodr_submit 3.4. conodr_rm 4. 相关 1. 目录 ...
- 腾讯正式开源图计算框架Plato,十亿级节点图计算进入分钟级时代
腾讯开源再次迎来重磅项目,14日,腾讯正式宣布开源高性能图计算框架Plato,这是在短短一周之内,开源的第五个重大项目. 相对于目前全球范围内其它的图计算框架,Plato可满足十亿级节点的超大规模图计 ...
- 译 - 高可用的mesos计算框架设计
原文地址 http://mesos.apache.org/documentation/latest/high-availability-framework-guide/ 阅读建议:有写过或者看过Mes ...
- 实时计算框架:Flink集群搭建与运行机制
一.Flink概述 1.基础简介 Flink是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算.Flink被设计在所有常见的集群环境中运行,以内存执行速度和任意规模来执行计算.主要特性包 ...
- 【codenet】代码相似度计算框架调研 -- 把内容与形式分开
首发于我的gitpages博客 https://helenawang.github.io/2018/10/10/代码相似度计算框架调研 代码相似度计算框架调研 研究现状 代码相似度计算是一个已有40年 ...
随机推荐
- 机器学习——SVM
整理自: https://blog.csdn.net/woaidapaopao/article/details/77806273?locationnum=9&fps=1 带核的SVM为什么能分 ...
- 备战省赛组队训练赛第十七场(UPC)
upc:传送门 A: 题解[1] G: 题解[1] D,G,H,J,L 题解 by 鲁东大学
- linux单 open 设备
提供存取控制的强力方式是只允许一个设备一次被一个进程打开(单次打开). 这个技术最 好是避免因为它限制了用户的灵活性. 一个用户可能想运行不同的进程在一个设备上, 一 个读状态信息而另一个写数据. 在 ...
- 2018-2-13-手机1520-win8.1升级win10
title author date CreateTime categories 手机1520 win8.1升级win10 lindexi 2018-2-13 17:23:3 +0800 2018-2- ...
- Java 学习笔记(14)—— 文件操作
java文件操作主要封装在Java.io.File中,而文件读写一般采用的是流的方式,Java流封装在 java.io 包中.Java中流可以理解为一个有序的字符序列,从一端导向到另一端.建立了一个流 ...
- tjoi2019题解
t1:矩阵快速幂 t2:裸的平衡树 splay比treap代码长太多 常数大一倍 没加输优直接t了 还要特判n=1(我的splay删除的时候会遇到问题) t3: 很显然是容斥 然后对于$A+B+C+D ...
- F4与F1对比
- django框架(1)
一什么是web框架? 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单地说,就是你用别人搭建好的舞台来做表演. 对于所有的 ...
- java基础 -- 关键字static的用法
static关键字的基本作用就是方便在没有创建对象的情况下调用类的方法/变量, static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去进行访问. static ...
- 分布式架构基石RPC的实现原理
RPC的由来 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进. 单一应用架构 当网站流量很小时, ...