【问题标题】:How to change code so that it worked for distributed computing如何更改代码以使其适用于分布式计算
【发布时间】:2017-03-05 11:18:00
【问题描述】:

我有以下问题。 我是物理学家。对于我目前的工作,我必须对一些问题进行数值调查。

我使用蒙特卡罗方法计算了一些 7D 积分。我使用 OpenMP 进行并行计算,但我的程序在一台计算机上运行缓慢。在工作中,IT部门的人说他可以做虚拟机,我可以使用分布式计算进行计算。

我使用 C++ 和 OpenMP(用于并行计算)。 我的问题如下:

我的程序可以在分布式计算的虚拟机上运行吗?我应该如何修改我的分布式计算代码(如果有必要)?

我的并行计算代码很简单

omp_set_dynamic(0);
omp_set_num_threads(Npot);
#pragma omp parallel for shared(result, errors) private(i)`
for (i = 0; i < Npot; i++){
..... 
}

【问题讨论】:

  • 可能是使用高端显卡的CUDA?
  • 我对编程一点也不熟悉。如果我理解正确,如果操作简单,图形卡计算是好的。但在我的例子中,被积函数包含平方二维积分,包含特殊函数(如具有复杂参数的超几何函数)。
  • “我有一个问题。我是物理学家。” - 喜欢它:-)
  • 虚拟机不太可能使算法运行得更快,因为最终您仍然只有相同数量的硬件。
  • 这取决于虚拟机中包含的真实核心的数量。

标签: c++ distributed-computing


【解决方案1】:

OpenMP 将代码分布在一个处理器的内核上。如果你想使用多个处理器,比如你的电脑和虚拟机,你将不得不研究 MPI。 你怎么把这两者联系在一起,我不知道。但现在你有了一个起点。

您也可以使用 CUDA 在显卡上运行代码。

【讨论】:

    猜你喜欢
    • 2013-10-30
    • 1970-01-01
    • 2020-04-11
    • 1970-01-01
    • 1970-01-01
    • 2012-07-17
    • 1970-01-01
    • 2013-12-31
    • 1970-01-01
    相关资源
    最近更新 更多