Подтвердить что ты не робот

(Re) Начиная с С++ (для научных вычислений)

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

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

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

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 4

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

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

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

http://cplusplus.com/

И, проверьте библиотеку Boost:

http://www.boost.org/

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

Ответ 5

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