我即将开始一个科学计算的新项目,它将在一个使用8到32个CPU的计算机集群上运行.我将使用MPI来分配计算.最后一点是哪种语言更适合使用C或C++?我会做一些严肃的数字运算,我需要一个平滑且分布均匀的并行化.我没有使用MPI的经验,但我知道它比C++更适合C,即使使用了像boost :: MPI这样的库.考虑到性能至关重要,使用哪种语言更好?
注意:当然,可以在C++上编写C风格的代码,但毕竟不是C++.当我谈到C++时,我的意思是使用大量的OOP和泛型编程.
假设我有一个名为"server"的节点,它会生成一个名为"server1"的进程,如下所示:
register(server1,spawn(module, generate_new_server, []))
Run Code Online (Sandbox Code Playgroud)
如何从名为"user"的其他节点向"server1"发送消息?
使用net_adm我只能ping节点"server",而不能生成节点"server1".我想我启动服务器的方式有问题,即
erl -sname server
Run Code Online (Sandbox Code Playgroud)
现在,如果我在另一台机器上
erl -sname user
net_adm:ping('server@pc')
Run Code Online (Sandbox Code Playgroud)
从"user @ pc"我可以连接到它,但如果我这样做
erl -sname user
net_adm:ping('server1@pc')
Run Code Online (Sandbox Code Playgroud)
它告诉我无法到达节点.是否有不同的语法用于连接"server1"?
我有一个问题是要求绘制一个矢量时钟时间线图来说明在事件关系之前发生的部分顺序.
这是矢量时钟:
V(a) = (4,4,2)
V(b) = (4,2,2)
V(c) = (2,2,3)
V(d) = (4,3,2)
V(e) = (4,4,4)
V(f) = (3,2,2)
Run Code Online (Sandbox Code Playgroud)
我不确定如何确定每个事件属于哪个进程.我使用的所有示例都使用矢量时钟,其值从0开始,例如V(a)=(1,0,0),因此我假设事件a是第一个发生的事件或者它与其他进程并发但我不知道该怎么做这个特别的问题.
有人可以帮忙吗?
谢谢
synchronization clock distributed-computing distributed-system
假设我们有两个业务组件
这拥有用户.更改用户信息时,此组件将发布消息.所以例如"NewUserCreated"
处理与用户的通信.电子邮件,推文等.因此,该组件订阅用户消息将该信息的子集存储在其自己的商店中.
如果用户管理组件在出版物组件之前联机,会发生什么?出版物如何获得现有用户列表?它不应该知道用户管理组件如何存储其数据.
我现在正在学习Mapreduce和Hadoop.我知道我可以做一些测试并在单个节点上运行一些样本.但我真的想在真实的分布式环境中做一些练习.所以我想问:是否有一个网站可以为我提供分布式环境进行实验?
有人告诉我,我可以使用亚马逊网络服务来构建分布式环境.这是真的吗?有人有这样的经历吗?
我想知道你们在工作中使用它之前你们是如何学习hadoop的?
谢谢!
我希望将OpenCL库用于需要分发给许多(1000s)机器的程序.因为程序的大小是一个问题,我想知道静态链接OpenCL库是否有意义.OpenCL是否足够轻量级应用于此应用程序?
distributed-computing dynamic-linking static-libraries opencl
我正在测试Microsoft Orleans作为分布式计算框架的可行性。似乎它可以工作,但是我想知道如何设置给定筒仓中的最大活动颗粒数?
我的谷物不会纯粹受 CPU 限制,而是会执行一些 IO 和其他相关任务。我担心如果我让它疯狂运行,它会启动大量实例,这会使整个事情陷入困境。
像这样的筒仓配置可能吗?
总订单:
Lamport 时间戳可用于通过使用某种任意机制来打破联系(例如进程的 ID),在分布式系统中创建事件的总排序。
逻辑顺序:
当两个实体通过消息传递进行通信时,发送事件被称为“发生在接收事件之前”,并且可以在事件之间建立逻辑顺序
谁能给我一个例子,我可以看到逻辑顺序和总顺序的差异?两个订单有什么区别?
这是从一个跟进的问题在这里.我正在尝试基于此实现实现k-means .它的伟大工程,但我想换成groupByKey()用reduceByKey(),但我不知道如何(我并不担心现在的表现).这是相关的缩小代码:
val data = sc.textFile("dense.txt").map(
t => (t.split("#")(0), parseVector(t.split("#")(1)))).cache()
val read_mean_centroids = sc.textFile("centroids.txt").map(
t => (t.split("#")(0), parseVector(t.split("#")(1))))
var centroids = read_mean_centroids.takeSample(false, K, 42).map(x => x._2)
do {
var closest = read_mean_centroids.map(p => (closestPoint(p._2, centroids), p._2))
var pointsGroup = closest.groupByKey() // <-- THE VICTIM :)
var newCentroids = pointsGroup.mapValues(ps => average(ps.toSeq)).collectAsMap()
..
Run Code Online (Sandbox Code Playgroud)
请注意,这println(newCentroids)将给出:
地图(23 - >( - 6.269305E-4,-0.0011746404,-4.08004E-5),8 - >( - 5.108732E-4,7.336348E-4,-3.707591E-4),17 - >( - 0.0016383086 ,-0.0016974678,1.45 .. …
scala mapreduce machine-learning distributed-computing apache-spark
有人能说出HazelCast的多播发现是如何运作的.我想要每个成员的细节发现它的同行.我一直试图找到一些好的资源,但没有找到任何详细的解释.
mapreduce ×2
apache-spark ×1
c ×1
c++ ×1
clock ×1
distributed ×1
erlang ×1
event-store ×1
hadoop ×1
hazelcast ×1
java ×1
messaging ×1
mpi ×1
nservicebus ×1
opencl ×1
orleans ×1
scala ×1