C ++ vs C用于分布式计算

时间:2011-02-14 20:49:49

标签: c++ c mpi distributed-computing

我即将开始一个科学计算的新项目,它将在一个使用8到32个CPU的计算机集群上运行。我将使用MPI来分配计算。最后一点是哪种语言更适合使用C或C ++?我会做一些严肃的数字运算,我需要一个平滑且分布均匀的并行化。我没有使用MPI的经验,但我知道它比C ++更适合C,即使使用了像boost :: MPI这样的库。考虑到性能至关重要,使用哪种语言会更好?

注意:当然,可以在C ++上编写C风格的代码,但毕竟不是C ++。当我谈到C ++时,我的意思是使用大量的OOP和泛型编程。

6 个答案:

答案 0 :(得分:12)

您可以用任何语言编写慢速代码。 MPI是一个消息传递库,所以它根本不关心你是用C还是C ++调用它---使用更好的语言。

您应该通过分析和测量来确定。

Language Shootout comparison between C and C++甚至与大小,速度和内存使用有关。

最后,还有低估了编码时间的重要性。您可以在C ++中比在C中更快地使用工作程序,因为您可以使用更多高级工具。或者你可能没有,所以我会尝试衡量。

答案 1 :(得分:7)

  

当我谈到C ++时,我的意思是使用大量的OOP和泛型编程。

这可能是一个坏主意。 C ++主要不是面向对象的语言,并且将其用作“仅仅因为”并不是一种好方法。 C ++在泛型编程中的作用更大。

特别是如果性能对您很重要,请使用C ++,it’s faster than C while still allowing high abstraction if properly used,但不要使用OOP。有关如何更好地使用C ++的方法,请查看<algorithms>标准标题。

答案 2 :(得分:1)

除了你,没有人能真正回答这个问题。如果你的大部分代码都是数字运算,你真的需要OOP吗?

答案 3 :(得分:0)

我的投票将是C,因为您需要的只是数字运算,并且不需要花哨的库来传递对象等。无论如何,对于MPI来说,提升速度并不是那么快。

答案 4 :(得分:0)

您可以使用任何一种语言编写高效的代码或可怕的代码。你最好的选择很可能就是坚持使用你最熟悉的语言。您的编程技能可能比语言选择带来更大的好处(假设您可以访问两种语言同样功能的编译器)。

如果所有其他方法都失败了,请不要忘记您可以在系统中同时使用C和C ++。您可以在C中编写数字运算算法,将其构建到库中,然后将该库链接到C ++应用程序中。

答案 5 :(得分:0)

我总是在这种应用中使用C.只是mho。