Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Программирование мат. моделей

29K
17 июня 2010 года
B@HTy3
17 / / 04.11.2007
Здравствуйте. Я занимаюсь индивидуально-ориентированным моделированием. Уже построено несколько моделей на C++ и на С#, не один из этих языков полностью не соответствует требованиям, т.к. C# по скорости не очень. А C++ неудобно - нужны интерфейсы для биологов удобные, чтобы настраивать модели. Кто может посоветовать язык или связку? Спасибо.
5
17 июня 2010 года
hardcase
4.5K / / 09.08.2005
Вычислительную логику можно гонять на C++, а интерфейс изготавливать на C#.
29K
17 июня 2010 года
B@HTy3
17 / / 04.11.2007
Цитата: hardcase
Вычислительную логику можно гонять на C++, а интерфейс изготавливать на C#.



Тоже склоняюсь к этому варианту, а как насчет распределенных вычислений? уж очень не хочется с сокетами и прочими средствами возиться...к WCF привык, что-то похожее можно на C++ будет реализовать под linux?

5
17 июня 2010 года
hardcase
4.5K / / 09.08.2005
Цитата: B@HTy3
Тоже склоняюсь к этому варианту, а как насчет распределенных вычислений?


Есть MPI.
Но все зависит от архитектуры моделей. Если это какие-то манипуляции с матрицами, то лучше использовать CUDA или OpenCL (для послднего есть как минимум две привязки в .NET).

2.1K
17 июня 2010 года
Norgat
452 / / 12.08.2009
Цитата: hardcase
Вычислительную логику можно гонять на C++, а интерфейс изготавливать на C#.



если не сложно, то можете набросать список статей/книжек, которые стоит прочитать по этой теме?

просто чувствую что скоро придётся заниматься этим)

29K
17 июня 2010 года
B@HTy3
17 / / 04.11.2007
Цитата: hardcase
Есть MPI.
Но все зависит от архитектуры моделей. Если это какие-то манипуляции с матрицами, то лучше использовать CUDA или OpenCL (для послднего есть как минимум две привязки в .NET).



Привязки в .Net? Эту платформу используют для науч.вычислений?

63
17 июня 2010 года
Zorkus
2.6K / / 04.11.2006
На самом деле вопрос по производительности - мягко говоря спорный. Имхо, потери в производительности окупятся повышенной надежностью и снижением времени и ресурсов на разработку и тестирование. При должной архитектуры вы окупите это в итоге наращиванием железа. При использовании правильных архитектурных решений, и знании общиз приемом написания производительного кода под .NEt, в дотнете вы вряд ли много проиграете в производительности.
63
17 июня 2010 года
Zorkus
2.6K / / 04.11.2006
Цитата: B@HTy3
Привязки в .Net? Эту платформу используют для науч.вычислений?


А почему нет?

29K
17 июня 2010 года
B@HTy3
17 / / 04.11.2007
Цитата: Zorkus
А почему нет?



Сейчас сталкиваюсь с волной непонимания среди науч.состава по отношению к индивид.-ориент моделированию...что уж говорить о технологиях программирования. Всех интересует фортран...

29K
17 июня 2010 года
B@HTy3
17 / / 04.11.2007
Цитата: Zorkus
На самом деле вопрос по производительности - мягко говоря спорный. Имхо, потери в производительности окупятся повышенной надежностью и снижением времени и ресурсов на разработку и тестирование. При должной архитектуры вы окупите это в итоге наращиванием железа. При использовании правильных архитектурных решений, и знании общиз приемом написания производительного кода под .NEt, в дотнете вы вряд ли много проиграете в производительности.



Тогда может вообще сделать все в рамках mono? Т.к. скорость разработки на С++ желает оставлять лучшего.

5
17 июня 2010 года
hardcase
4.5K / / 09.08.2005
Цитата: B@HTy3
Тогда может вообще сделать все в рамках mono?

Так какая задача-то стоит? :rolleyes:
Mono, к слову, тот еще тормоз даже по сравнению с .NET.

А фортран, кстати, еще сиплюсплюсу фору может дать, если конечно пользоваться интеловским компилятором и "автоматическим" распараллеливанием OpenMP.

87
17 июня 2010 года
Kogrom
2.7K / / 02.02.2008
Не знаю, будет ли в тему, но упомяну NumPy. Рекламируется, что скорость математических расчётов сравнима со скоростью в си. С другой стороны, GUI + Python = намного удобнее, чем в C++.
5
17 июня 2010 года
hardcase
4.5K / / 09.08.2005
Цитата: Kogrom
Не знаю, будет ли в тему, но упомяну NumPy. Рекламируется, что скорость математических расчётов сравнима со скоростью в си. С другой стороны, GUI + Python = намного удобнее, чем в C++.


А неплохой вариант кстати.

63
17 июня 2010 года
Zorkus
2.6K / / 04.11.2006
Цитата: B@HTy3
Тогда может вообще сделать все в рамках mono? Т.к. скорость разработки на С++ желает оставлять лучшего.


Ну если надо под линукс - то можно на моно, можно на яве. Если надо под винду, то можно и на родном шарпе.

307
17 июня 2010 года
Artem_3A
863 / / 11.04.2008
(ASM) + (С++) + (Qt) + (GTK) + (любая либа для гуи) = все в шоколаде.

про скорость разработки... ну это как бы вообще спорно... у вас же, я так понимаю, высокоскоростные вычисления, а не бизнес логика....
5
17 июня 2010 года
hardcase
4.5K / / 09.08.2005
Цитата: Artem_3A
у вас же, я так понимаю, высокоскоростные вычисления, а не бизнес логика....


Как бы ни показалось странным, но на голом ассемблере высокопроизводительные вычисления не делают. Максимум - привязываются к SSE, которые торчат как сишные функции.

63
17 июня 2010 года
Zorkus
2.6K / / 04.11.2006
Цитата: hardcase
Как бы ни показалось странным, но на голом ассемблере высокопроизводительные вычисления не делают. Максимум - привязываются к SSE, которые торчат как сишные функции.


Че значит странным, это вполне очевидно что не делают.

307
17 июня 2010 года
Artem_3A
863 / / 11.04.2008
вообще то как бы асм имелся в виду в виде вставок для устранения узких и стопорных мест, ну и да, в качестве средства использования SSE. так что не надо тут, не имел я виду, что надо весь код на асме наколбасить, сие есть идеологически и практически противоестественный подход!:)
5
17 июня 2010 года
hardcase
4.5K / / 09.08.2005
Цитата: Artem_3A
вообще то как бы асм имелся в виду в виде вставок для устранения узких и стопорных мест

Чтобы не устранять узких мест не нужно делать этих мест ;)

307
17 июня 2010 года
Artem_3A
863 / / 11.04.2008
Цитата: hardcase
Чтобы не устранять узких мест не нужно делать этих мест ;)



ну это конечно да, согласен, но иногда они как бы сами!:D пример: преобразование цвета из RGB в HSV или HSL. переписали этот участок(функцию перевода) на асм + sse получили прирост в 30-40%.

29K
17 июня 2010 года
B@HTy3
17 / / 04.11.2007
Чтобы смогли обсудить более предметно, поясню в чем суть индивидуально-ориентированного моделирования. Например стоит задача проследить численность популяции некого животного. Мы строим программную модель в которой есть объект "животное", объект "корм", объект "хищник", у них есть различные хар-ки, вес, пол и т.д. Есть территория (массив двухмерный). И на каждой итерации, эти объекты взаимодействуют друг с другом. Т.е. в итоге очень близко к написанию игр, только не нужна графика, а достаточно выч. логики. Нужна работа с большими объемами данных, как в памяти придется проворачивать много данных, так и в БД.
29K
17 июня 2010 года
B@HTy3
17 / / 04.11.2007
Цитата: Artem_3A
(ASM) + (С++) + (Qt) + (GTK) + (любая либа для гуи) = все в шоколаде.

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



Может я не разобрался просто, но QT честно говоря по скорости отладки\разработки мне не понравилось, повторю, что это сугубо мое мнение.

307
18 июня 2010 года
Artem_3A
863 / / 11.04.2008
Забудьте, что я вам говорил, используйте шарп + вменяемую бд, в вашем случае это лучший вариант, так как затратных вычислений как таковых то у вас и нет, а только обработка больших объемов данных.

ЗЫ: для полной картины было не плохо еще просветить нас, как все эти твари у вас там взаимодействуют, рандомно + логика потребностей?
29K
18 июня 2010 года
B@HTy3
17 / / 04.11.2007
Цитата: Artem_3A
Забудьте, что я вам говорил, используйте шарп + вменяемую бд, в вашем случае это лучший вариант, так как затратных вычислений как таковых то у вас и нет, а только обработка больших объемов данных.

ЗЫ: для полной картины было не плохо еще просветить нас, как все эти твари у вас там взаимодействуют, рандомно + логика потребностей?



Все верно, логика потребностей +рандом. Случайные числа, пожалуй одно из самых узких мест: вызываются очень часто (на каждой итерации, для каждой особи, возможно даже не один раз), поэтому надо, чтобы функция была быстрая и с равномерным распределением. Насчет БД, в данный момент я работаю с постгресом, стоит заменять на что-то?

241
07 июля 2010 года
Sanila_san
1.6K / / 07.06.2005
Может тогда нагенерировать достаточно много случайных чисел и потом ими пользоваться, просто выбирая из списка? Насчёт постгреса - достаточно хороший выбор.
341
08 июля 2010 года
Der Meister
874 / / 21.12.2007
Кажется, это называется иммитационным моделированием.
Генератор целых чисел 32 бита:
 
Код:
seed = 1664525*seed + 1013904223
Для 16 бит:
 
Код:
seed = (214013*seed + 2531011);
return (seed >> 16) & 0x7FFF;

Распределение - во вложении.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог