Вычислительная наука

Вопросы и ответы для ученых, использующих компьютеры для решения научных задач

158
Рекомендации для удобной, быстрой библиотеки C ++ матрицы?

У кого-нибудь есть рекомендации по использованию удобной и быстрой матрицы библиотеки C ++? Что я подразумеваю под юзабилити - это следующее: Матричные объекты имеют интуитивно понятный интерфейс (например, я могу использовать строки и столбцы при индексации) Я могу сделать что-нибудь с классом...

89
Стоит ли писать модульные тесты для кодов научных исследований?

Я твердо убежден в ценности использования тестов, которые проверяют полную программу (например, тесты сходимости), включая автоматизированный набор регрессионных тестов . После прочтения некоторых книг по программированию у меня появилось мучительное чувство, что я "должен" написать модульные тесты...

84
Какие проблемы хорошо подходят для вычислений на GPU?

Так что я неплохо разбираюсь в том, какие проблемы, с которыми я работаю, являются лучшими в сериале, и которыми можно управлять параллельно. Но сейчас у меня нет особого представления о том, что лучше всего обрабатывать вычислениями на базе ЦП, и что следует выгружать в графический процессор. Я...

77
Есть ли качественный решатель нелинейного программирования для Python?

У меня есть несколько сложных невыпуклых задач глобальной оптимизации. В настоящее время я использую MATLAB Optimization Toolbox (в частности, fmincon()с алгоритмом = 'sqp'), что довольно эффективно . Тем не менее, большая часть моего кода написана на Python, и я бы тоже хотел провести оптимизацию...

74
Насколько лучше на самом деле компиляторы Фортрана?

Этот вопрос является продолжением двух обсуждений, недавно появившихся в ответах на " C ++ против Fortran for HPC ". И это больше вызов, чем вопрос ... Один из наиболее часто звучащих аргументов в пользу Fortran заключается в том, что компиляторы просто лучше. Поскольку большинство компиляторов C /...

66
Каковы хорошие стратегии для улучшения производительности моего кода?

Я работаю в вычислительной науке, и в результате я трачу нетривиальное количество своего времени, пытаясь увеличить научную пропускную способность многих кодов, а также понять эффективность этих кодов. Давайте предположим, что я оценил соотношение производительности и читаемости / возможности...

56
С ++ против Фортрана для HPC

В моей программе PhD по вычислительной технике мы работаем почти исключительно на C ++ и Fortran. Кажется, некоторые профессора предпочитают одного другому. Мне интересно, какой из них «лучше» или один лучше другого в определенных...

55
Насколько зрел проект научного языка «Юлия»?

Я рассматриваю возможность изучения нового языка для использования в проектах численного / имитационного моделирования в качестве (частичной) замены для C ++ и Python, которые я сейчас использую. Я столкнулся с Джулией , которая звучит как-то идеально. Если он выполняет все свои требования, я мог...

55
Как мне взять БПФ неравномерно расположенных данных?

Преобразование Фурье Быстрый алгоритм вычисляет Фурье разложения в предположении , что его входные точки равномерно распределены во временной области, . Что если они не? Есть ли другой алгоритм, который я мог бы использовать, или каким-то образом я мог бы изменить БПФ, чтобы учесть, что фактически...

54
Распространено не использовать библиотеки для стандартных числовых алгоритмов, и почему?

Многие численные алгоритмы (интеграция, дифференцирование, интерполяция, специальные функции и т. Д.) Доступны в библиотеках научных вычислений, таких как GSL . Но я часто вижу код с «ручными» реализациями этих функций. Для небольших программ, которые не обязательно предназначены для публичного...

52
Какими основными навыками должен обладать каждый ученый? [закрыто]

Каждый ученый должен знать немного о статистике: что означает корреляция, что такое доверительный интервал и так далее. Точно так же каждый ученый должен знать немного о компьютерах: вопрос в том, что? Что разумно ожидать, чтобы каждый работающий ученый знал о создании и использовании программного...

49
Каким руководствам следует руководствоваться при выборе разреженного линейного системного решателя?

Разреженные линейные системы появляются с возрастающей частотой в приложениях. Для решения этих систем нужно выбирать из множества процедур. На самом высоком уровне существует водораздел между прямым (например, разреженным методом исключения Гаусса или разложением Холецкого, со специальными...

48
Каковы концептуальные различия между методом конечных элементов и методом конечных объемов?

Существует очевидная разница между конечной разностью и методом конечных объемов (переход от точечного определения уравнений к интегральным средним по ячейкам). Но я считаю, что FEM и FVM очень похожи; они оба используют интегральную форму и усредняют по клеткам. Что делает метод FEM, а не FVM? Я...

46
Каковы критерии выбора между конечными отличиями и конечными элементами

Я привык думать о конечных различиях как о частном случае конечных элементов в очень ограниченной сетке. Итак, каковы условия выбора между методом конечных разностей (FDM) и методом конечных элементов (FEM) в качестве численного метода? На стороне метода конечных разностей (FDM) можно считать, что...

44
Каковы хорошие способы документирования научного программного обеспечения?

Много раз, когда я унаследовал или столкнулся с научным кодом, написанным другими людьми (или, иногда, даже с моей собственной работой), я заметил, что документация либо недостаточна, либо вообще отсутствует. Если мне повезет, я вижу информативные комментарии. Если мне очень повезет, есть даже...

43
Является ли алгоритмический анализ путем подсчета флопов устаревшим?

На моих курсах по численному анализу я научился анализировать эффективность алгоритмов, подсчитывая количество операций с плавающей запятой (флоп), которые им требуются, в зависимости от размера проблемы. Например, в тексте Trefethen & Bau о числовой линейной алгебре есть даже трехмерные...

42
Функциональное программирование и научные вычисления

Я прошу прощения, если это неопределенный вопрос, но здесь идет: В последние несколько лет функциональному программированию уделялось много внимания в сообществе разработчиков программного обеспечения. Многие начали использовать такие языки, как Scala и Haskell, и заявили об успехе над другими...

41
Что делает Фортран быстрым?

Фортран занимает особое место в численном программировании. Конечно, вы можете создавать хорошие и быстрые программы на других языках, но Fortran продолжает работать очень хорошо, несмотря на свой возраст. Более того, в Фортране проще создавать быстрые программы. Я сделал быстрые программы на C ++,...

41
Где можно получить хорошие наборы данных / тестовые задачи для тестирования алгоритмов / процедур?

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

40
Научные стандарты для числовых ошибок

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