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(四)——案例准备的更多相关文章

  1. 高通量计算框架HTCondor(一)——概述

    目录 1. 正文 2. 目录 3. 参考 4. 相关 1. 正文 HTCondor是威斯康星大学麦迪逊分校构建的分布式计算软件和相关技术,用来处理高通量计算(High Throughput Compu ...

  2. 高通量计算框架HTCondor(六)——拾遗

    目录 1. 正文 1.1. 一些问题 1.2. 使用建议 2. 相关 1. 正文 1.1. 一些问题 如果真正要将HTCondor高通量计算产品化还需要很多工作要做,HTCondor并没有GUI界面, ...

  3. 高通量计算框架HTCondor(二)——环境配置

    目录 1. 概述 2. 安装 3. 结果 4. 相关 1. 概述 HTCondor是开源跨平台的分布式计算框架,在其官网上直接提供了源代码和Windows.Linux以及MacOS的安装包.因为平台限 ...

  4. 高通量计算框架HTCondor(五)——分布计算

    目录 1. 正文 1.1. 任务描述文件 1.2. 提交任务 1.3. 返回结果 2. 相关 1. 正文 1.1. 任务描述文件 前文提到过,HTCondor是通过condor_submit命令将提交 ...

  5. 高通量计算框架HTCondor(三)——使用命令

    目录 1. 目录 2. 进程 3. 命令 3.1. condor_q 3.2. condor_status 3.3. conodr_submit 3.4. conodr_rm 4. 相关 1. 目录 ...

  6. 腾讯正式开源图计算框架Plato,十亿级节点图计算进入分钟级时代

    腾讯开源再次迎来重磅项目,14日,腾讯正式宣布开源高性能图计算框架Plato,这是在短短一周之内,开源的第五个重大项目. 相对于目前全球范围内其它的图计算框架,Plato可满足十亿级节点的超大规模图计 ...

  7. 译 - 高可用的mesos计算框架设计

    原文地址 http://mesos.apache.org/documentation/latest/high-availability-framework-guide/ 阅读建议:有写过或者看过Mes ...

  8. 实时计算框架:Flink集群搭建与运行机制

    一.Flink概述 1.基础简介 Flink是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算.Flink被设计在所有常见的集群环境中运行,以内存执行速度和任意规模来执行计算.主要特性包 ...

  9. 【codenet】代码相似度计算框架调研 -- 把内容与形式分开

    首发于我的gitpages博客 https://helenawang.github.io/2018/10/10/代码相似度计算框架调研 代码相似度计算框架调研 研究现状 代码相似度计算是一个已有40年 ...

随机推荐

  1. H3C网络监测工具命令

    1.Debugging 2.Display debugging 3.Display diagnostic-information display diagnostic-information 命令用来 ...

  2. Linux 内核设备驱动

    设备模型跟踪所有对系统已知的驱动. 这个跟踪的主要原因是使驱动核心能匹配驱动和新 设备. 一旦驱动在系统中是已知的对象, 但是, 许多其他的事情变得有可能. 设备驱动可 输出和任何特定设备无关的信息和 ...

  3. ubuntu16.04 无法wifi链接一段时间掉线且无法再连接

    ubuntu16.04 无法wifi链接一段时间掉线且无法再连接,从网上搜索的确认这个一个bug. 解决方法: 1.Get details of your PCI wireless card by r ...

  4. JQ绑定事件的叠加和解决,index()方法的坑

    JQ绑定事件的叠加和解决,index()方法的坑 前言 在做过几个不大不小的项目后,发现技术这种东西,必须要多多实践,才能发现各种问题,理论的知识掌握的再好终究是纸上谈兵. 因此目前感觉有两点是必须要 ...

  5. linux 如何查找命令的路径(which搜索系统命令,whichis搜索文件)

    http://hi.baidu.com/longredhao/item/911356ea2d8bed3687d9deed linux 下,我们常使用 cd ,grep,vi 等命令,有时候我们要查到这 ...

  6. CPP STL学习笔记

    STL的概念 源地址  https://www.ev0l.art/index.php/archives/15/ <li> Iterator (迭代器)<li> Containe ...

  7. 20191010-4 alpha week 1/2 Scrum立会报告+燃尽图02

    此作业链接参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/8747 2019小组名称:“组长”组 组长:杨天宇 组员:魏新,罗杨美慧,王 ...

  8. 看完知乎上500条答案,我为大家整理了这21个B站学习类UP主

    原文之前发在我的知乎,转载请注明出处. ​ 虽然,今天算法文章还没更新┏(゜ロ゜;)┛,但还是溜过来跑个题~ 之前看到了博客上有小伙伴在分享自己的B站资源,才突然意识到自己其实也积攒了很多优秀UP的资 ...

  9. 微信小程序背景音乐官方实例代码无效问题解决及音乐src获取方法

    最近在学习微信小程序时遇到了个问题:官方的背景音乐的api实例代码中的音乐src不管用(可能有期限,后面的方法获取的src同样可能有期限),因此本人只能自己去寻找办法获取src,现将方法记录在下面.( ...

  10. Python基础(二):操作基本数据类型

    Python是一门解释型语言,它的优势在于代码简洁,易于理解,可以通过大量已封装好的内建方法和第三方模块方法完成日常所需的操作. 字符串 索引 起始下标为0 (从前往后数),末尾下标为-1(从后往前数 ...