(Re) Начиная с C ++ (для научных вычислений) - PullRequest
16 голосов
/ 26 ноября 2010

У меня хороший опыт программирования на разных языках.Я реализовывал свои коды для исследования с использованием MATLAB (в течение последних нескольких месяцев) и впервые действительно заметил разницу в скорости выполнения MATLAB v $ C. (Как бы я ни любил эту невероятно быструю скорость)возможности прототипирования).

Я собираюсь взять C ++ и начать использовать его в своих исследованиях.Я знаю о ООП и программировал немало Java (относительно давно) и C ++ (еще больше назад).Я бы хотел по-настоящему углубиться в C ++ и, следовательно, нуждаться в предложениях относительно ресурсов:

  • Какие вещи C ++ мне нужно подобрать (STL и.), Чтобы действительно эффективно использовать C ++?
  • Что такое хороший учебник / руководство для начала?
  • Какие числовые / научные библиотеки для C ++?GSL?Есть ли эквивалент (особенности) Scipy / Numpy для C ++?

Я буду программировать на Linux, поэтому я буду использовать g ++.

Любые указатели на предыдущие вопросы SO такжеоценили.

Ответы [ 5 ]

7 голосов
/ 26 ноября 2010

Вы захотите освоить параллельное программирование как можно быстрее.Для передачи сообщений мне нравится эта книга Карниадакис и Кирби .Из книг по OpenMP, для программирования с распределенной памятью, эта лучшая.

Если вы можете получить к ним доступ, то Intel Threading Building Blocks, Maths Kernel Library и IntegratedПримитивы производительности хороши, чтобы иметь.Если нет, есть множество альтернатив с открытым исходным кодом, начните смотреть на Netlib .

О, я почти забыл BOOST , что является обязательным.

5 голосов
/ 26 ноября 2010

Что касается числовых вещей, таких как Numpy, вы должны взглянуть на:

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

и

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

4 голосов
/ 29 ноября 2010

На стороне библиотеки проверьте Armadillo . Он почти полностью раскрывает синтаксис манипулирования массивами в MATLAB и использует LAPACK и BLAS (ATLAS) под капотом.

2 голосов
/ 26 ноября 2010

Этот урок абсолютно потрясающий, но вы, возможно, не захотите заниматься им изначально.

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

Обязательно ознакомьтесь с STL (стандартной библиотекой шаблонов) и другими материалами, используя такие сайты, как:

http://cplusplus.com/

И, посмотрите библиотеку Boost:

http://www.boost.org/

Чтобы действительно хорошо использовать C ++, вам нужно изучить хотя бы STL, который сам по себе сэкономит вам много времени, но, как уже упоминалось, C ++ OOP программирует только объекты, если вы не используете динамические привязки .

0 голосов
/ 10 августа 2013

TRNG - это параллельная библиотека генерации случайных чисел.Он позволяет создавать несколько независимых потоков и предназначен для использования в кластерах.

...