DtCraft

通用分布式编程系统
授权协议 MIT
开发语言 C/C++
所属分类 程序开发、 并发/并行处理框架
软件类型 开源软件
地区 不详
投 递 者 韦睿
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

DtCraft是一种基于数据并行流的通用分布式编程系统。 它提供了一种称为流图的新型强大编程模型,用于构建并行和分布式工作负载。 将应用程序转换为此框架后,内核将透明地为您执行作业分发。 您不必担心系统编程,可以专注于高级开发!

无论您是应用程序开发人员还是特定领域的工程师,都可以使用 DtCraft 来做:

  • 分布式编程 Distributed computing
  • 事件驱动编程 Event-driven programming
  • 网络编程 Network programming
  • 数据流处理 Data stream processing

示例代码:

#include <dtc/dtc.hpp>
  
using namespace std::literals;  // for the use of string literal
using namespace dtc::literals;  // for the use of memory literal

int main(int argc, char* argv[]) {

  dtc::Graph G;

  auto A = G.vertex();
  auto B = G.vertex();

  auto lambda = [] (dtc::Vertex& v, dtc::InputStream& is) {
    if(std::string s; is(s) != -1) {
      std::cout << "Received: " << s << '\n';
      return dtc::Event::REMOVE;
    }
    return dtc::Event::DEFAULT;
  };

  auto AB = G.stream(A, B).on(lambda);
  auto BA = G.stream(B, A).on(lambda); 

  A.on([&AB] (dtc::Vertex& v) { (*v.ostream(AB))("hello world from A"s); });  
  B.on([&BA] (dtc::Vertex& v) { (*v.ostream(BA))("hello world from B"s); });
  
  G.container().add(A).cpu(1).memory(1_GB);
  G.container().add(B).cpu(1).memory(1_GB);

  dtc::Executor(G).run();
}

 

 相关资料
  • 分布式程序是那些旨在在计算机网络上运行并且只能通过消息传递协调其活动的程序。 我们可能想要编写分布式应用程序的原因有很多。 这里是其中的一些。 Performance - 我们可以通过安排程序的不同部分在不同的机器上并行运行来使程序更快。 Reliability - 我们可以通过将系统结构化以在多台机器上运行来制造容错系统。 如果一台机器出现故障,我们可以继续使用另一台机器 Scalability

  • 问题内容: Linux中有没有可用的软件可以编译包含多核或分布式系统上并行大量文件的源代码。像gcc或xserver这样的库在单核/双机上花费大量时间进行编译,并且在大多数情况下,当您需要大量重新编译时,它们令人沮丧。有什么技术可以并行编译这些源代码? 问题答案: 在分布式内存系统上,可以使用distcc将编译作业分配给其他计算机。这需要一些设置,但是如果碰巧有一些额外的机器,它确实可以加快构建速

  • 本章描述如何编写运行于Erlang节点网络上的分布式Erlang程序。我们描述了用于实现分布式系统的语言原语。Erlang进程可以自然地映射到分布式系统之中;同时,之前章节所介绍的Erlang并发原语和错误检测原语在分布式系统和单节点系统中仍保持原有属性。 动机 我们有很多理由去编写分布式应用,比如: 速度 我们可以把我们的程序切分成能够分别运行于多个不同节点的几个部分。比如,某个编译器可以将一个

  • 译者:firdameng 作者:Soumith Chintala 在这个简短的教程中,我们将讨论PyTorch的分布式软件包。 我们将看到如何设置分布式设置,使用不同的通信策略,并查看包的内部部分。 开始 PyTorch中包含的分布式软件包(即torch.distributed)使研究人员和从业人员能够轻松地跨进程和计算机集群并行化他们的计算。 为此,它利用消息传递语义,允许每个进程将数据传递给任

  • 主要内容:一、从一个新闻门户网站案例引入,二、推算一下你需要分析多少条数据?,三、黄金搭档:分布式存储+分布式计算这篇文章聊一个话题:什么是分布式计算系统? 一、从一个新闻门户网站案例引入 现在很多同学经常会看到一些名词,比如分布式服务框架,分布式系统,分布式存储系统,分布式消息系统。 但是有些经验尚浅的同学,可能都很容易被这些名词给搞晕。所以这篇文章就对“分布式计算系统”这个概念做一个科普类的分析。 如果你要理解啥是分布式计算,就必须先得理解啥是分布式存储,现在我们从一个小例子来引入。 比如说

  • 被别人指出问题时,别管别人能不能做到,看别人说的对不对,然后完善自己。别人能不能做到是别人的事情,自己能不能做到关系到自己能否发展的更好。——hustlihaifeng Go语言号称是互联网时代的C语言。现在的互联网系统已经不是以前的一个主机搞定一切的时代,互联网时代的后台服务由大量的分布式系统构成,任何单一后台服务器节点的故障并不会导致整个系统的停机。同时以阿里云、腾讯云为代表的云厂商崛起标志着