Как будто вы пытаетесь получить доступ к объекту, который является null
. Рассмотрим ниже пример:
TypeA objA;
. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException
, что имеет смысл.
См. Также этот пример:
String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
практически весь код HPC, о котором я услышал, или для решения систем линейных уравнений или FFT's. Вот некоторые ссылки для начинания Вас, по крайней мере, в пользовавшихся библиотеках:
Даже при том, что не FOSS, Intel IPP и библиотеки MKL могут действительно сохранить Вас много времени (и в разработке и во времени выполнения), если необходимо выполнить какую-либо из операций, поддерживаемых этими библиотеками (например: обработка сигналов, обработка изображений, матричная математика). Конечно, это зависит от Вашей платформы, можно ли взять преимущество от них.
(номер: Я не работаю на Intel, но счастливого их клиента, который я.)
комплект Trilinos библиотек и пакетов предлагает широкий диапазон библиотек промежуточного программного обеспечения для HPC включая редкие, повторяющиеся линейные решатели; нелинейные решатели; собственные решатели; ОДА & интеграторы DAE включая анализ чувствительности; оптимизация (и агрессивный и черный квадрат); интерфейсы конечного элемента; сетчатые интерфейсы; предварительные формирователи; и т.д. Все эти пакеты разработаны с помощью довольно современных методов C++ (существуют API Python, а также некоторый C и Фортран). Там использовал в очень крупномасштабной параллели (5000 + центральные процессоры) моделирования исключительного последствия (дизайн ядерного оружия) с большим успехом. Эти пакеты предлагают большой комплект возможностей, которые являются намного высокоуровневыми, чем BLAS, и т.д.
Проверьте библиотека Eigen Vector/Matrix . API очень изящен, и получающиеся программы сверкают быстро (из-за явной векторизации для архитектуры SSE2)..
Первая вещь могла бы читать приблизительно MPI (Интерфейс передачи сообщений) , который является фактическим стандартом в межсоединениях узла HPC.
Несмотря на то, чтобы быть 14 + годы, новаторская работа Шаблоны Выражения все еще рассматривается как часть самой исключительной работы C++ в течение многих лет. Быстрый, эффективный, безопасный... Я использовал методы, и они действительно замечательны.
Редактирование: В случае, если вышеупомянутая ссылка остается поврежденной, вот альтернативная ссылка для Шаблонов Выражения . Эта статья DDJ цитирует исходную работу Veldhuizen.
Смотрите на Адаптивная коммуникационная среда (ACE) . Это - библиотека шаблонов и объектов для высокопроизводительных приложений в C++. Это имеет большие межплатформенные примитивы для поточной обработки, сетей, и т.д.
Независимо от того, что Вы пишете, и сколько Вы разрабатываете для производительности с начала, возможности довольно хороши, она извлечет выгоду из настройки производительности. Обычно, чем больше программа, тем больше это извлечет выгоду. ЭТО является простым, эффективным способом сделать ту настройку. Это основано "на глубоко выборке", техника, которая дает точность диагноза при преуменьшении роли измерения.
Вы могли также посмотреть http://en.wikipedia.org/wiki/Performance_analysis#Simple_manual_technique
Высокая масштабируемость - Создание больших, быстрых и надежных веб-сайтов.
А также: