(重新)从C ++开始(用于科学计算)

时间:2010-11-25 23:03:53

标签: c++ scientific-computing

我有各种语言的编程。我一直在使用MATLAB实现我的研究代码(在过去的几个月里),并且第一次真的注意到MATLAB v $ C的执行速度的差异。(尽管我非常喜欢这个快速原型制作能力)。

我正在寻找C ++,并开始在我的研究中使用它。我知道OOP并编写了相当长的Java(相对较长的背面)和C ++(甚至更长的背面)。我现在想深入了解C ++,因此需要对资源提出建议:

  • 我需要学习哪些C ++(STL和。)才能真正充分利用C ++?
  • 什么是开始使用的好教程/手册?
  • C ++的数值/科学库有哪些? GSL?是否存在Scipy / Numpy for C ++的等效(功能)?

我将在Linux上编程,所以我将使用g ++。

对先前SO问题的任何指示也表示赞赏。

5 个答案:

答案 0 :(得分:7)

您希望尽快掌握并行编程。对于消息传递,我喜欢Karniadakis and Kirby这本书。关于OpenMP的书籍,对于分布式内存编程,this one是最好的。

如果您可以访问它们,那么英特尔的线程构建模块,数学内核库和集成性能基元很有用。如果没有,那么有很多开源替代品,开始关注Netlib

哦,我差点忘了BOOST,这是必须的。

答案 1 :(得分:5)

关于像Numpy这样的数字内容,你应该看看两者:

Blitz ++ http://www.oonumerics.org/blitz/

Jama / TNT http://math.nist.gov/tnt/download.html

答案 2 :(得分:4)

在图书馆方面,查看Armadillo。它almost gives you the full extent of MATLAB's array manipulation syntax并使用LAPACK和BLAS(ATLAS)。

答案 3 :(得分:2)

本教程绝对不错,但您最初可能不想解决它。

http://www.parashift.com/c++-faq/

请务必使用以下网站阅读STL(标准模板库)和其他内容:

http://cplusplus.com/

并查看Boost库:

http://www.boost.org/

为了更好地利用C ++,你需要至少学习STL,仅此一项就可以节省大量时间,但正如parashift所提到的,如果你不使用动态绑定,C ++ OOP只能用对象编程

答案 4 :(得分:-2)

TRNG是并行随机数生成库。它允许您创建多个独立的流,并且设计用于群集。