Перспективы применения в вычислительной матетике
От: ST1 Россия  
Дата: 11.11.12 17:06
Оценка:
Интересуют перспективы применения Nemerle в такой области как CFD, где численно решаются дифференциальные уравнения в частных производных (ДУЧП). Эта область хороша тем, что все абстракции можно выразить математически. В частности, привлекают макросы, с которыми я пока на Вы,
позволяющие разворачивать матричные операции вида C = A + B без оверхеда в циклы.
Re: Перспективы применения в вычислительной матетике
От: VladD2 Российская Империя www.nemerle.org
Дата: 11.11.12 20:02
Оценка:
Здравствуйте, ST1, Вы писали:

ST1>Интересуют перспективы применения Nemerle в такой области как CFD, где численно решаются дифференциальные уравнения в частных производных (ДУЧП). Эта область хороша тем, что все абстракции можно выразить математически. В частности, привлекают макросы, с которыми я пока на Вы,

ST1>позволяющие разворачивать матричные операции вида C = A + B без оверхеда в циклы.

Nemerle — язык под .net. А .Net не лучшая платформа для мат.вычислений, так как не оптипизировался под них и имеет ряд рантайм-проверок, которые замедляют вычисления над матрицами, которые часто встречаются в мат.вычислениях.

Однако, ты прав в том смысле, что макросы позволяют генерировать оптимальный код по модели близкой к модели предметной области. Естественно, что нашлись люди которые попытались использовать эту особенность Nemerle. Например, есть такая библиотека NUDA. Вот статься автора о ней: Нетрадиционные языки для нетрадиционных суперкомпьютеров

Еще есть NemerleCL
Автор: hardcase
Дата: 16.06.10
которую написал Хардкейс.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Перспективы применения в вычислительной матетике
От: ST1 Россия  
Дата: 12.11.12 06:56
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Nemerle — язык под .net. А .Net не лучшая платформа для мат.вычислений, так как не оптипизировался под них и имеет ряд рантайм-проверок, которые замедляют вычисления над матрицами, которые часто встречаются в мат.вычислениях.


VD>Однако, ты прав в том смысле, что макросы позволяют генерировать оптимальный код по модели близкой к модели предметной области. Естественно, что нашлись люди которые попытались использовать эту особенность Nemerle. Например, есть такая библиотека NUDA. Вот статься автора о ней: Нетрадиционные языки для нетрадиционных суперкомпьютеров


VD>Еще есть NemerleCL
Автор: hardcase
Дата: 16.06.10
которую написал Хардкейс.


Матрицы не совсем удачный пример, меня интересует даже уровень выше.
Скажем сейчас в C++ для решения ДУЧП я использую связку freePOOMA и автоматическое дифференцирование (ADOL-C, CppAD, Sacado). Фактически, я записываю уравнения на уровне невязок с использованием разностных аналогов дифференциальных операторов div/grad относительно объектов авт.дифф-я. freePOOMA, за исключением OpenFOAM, это лучшее из опен-сорс,
но имеет ряд ограничений. Аналог этой либы я и хотел бы попробовать реализовать на Nemerle, а всю производную линейную алгебру перенаправить на C++ библиотеки. Вопрос в том, буду ли макросы Nemerle сопоставимы с шаблонами C++ по скорости если запись вида
div(grad(u))=0

будет разворачиваться в двумерной области в циклы
for (int i = 0; i < N; i++)
for (int j = 0; j < N; j++)
u(i+1,j)-2*u(i,j)+u(i+1,j)+u(i,j+1)-2*u(i,j)+u(i,j+1)=0


Работы Адинца находил. Интересно, пересекается ли он с ребятами из ttglabs
Re[3]: Перспективы применения в вычислительной матетике
От: VladD2 Российская Империя www.nemerle.org
Дата: 12.11.12 13:05
Оценка:
Здравствуйте, ST1, Вы писали:

ST1>Аналог этой либы я и хотел бы попробовать реализовать на Nemerle, а всю производную линейную алгебру перенаправить на C++ библиотеки. Вопрос в том, буду ли макросы Nemerle сопоставимы с шаблонами C++ по скорости если запись вида

ST1>
ST1>div(grad(u))=0 
ST1>

ST1>будет разворачиваться в двумерной области в циклы
ST1>
ST1>for (int i = 0; i < N; i++)
ST1>for (int j = 0; j < N; j++)
ST1>u(i+1,j)-2*u(i,j)+u(i+1,j)+u(i,j+1)-2*u(i,j)+u(i,j+1)=0
ST1>


Само переписывание будет работать существнно шустрее нежели на С++, так как код макросов предварительно компилируется в машинный код и выполняется почти так же быстро как рнтайм-код С++ (в отличии от шаблонов С++, которые по сути являются интерпретатором работающим во время компиляции).

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

ST1>Работы Адинца находил. Интересно, пересекается ли он с ребятами из ttglabs


Несомненно в чем-то пересекаются, но по ссылке предлагаются услуги по переписыванию код, а не библиотеки позволяющие писать такой код автоматически на базе ДСЛ. Похоже они занимаются закатом солнца вручную.

В прочем, это все не область в которой я серьезно разбираюсь. Пусть, лучше, говорят те кто в ней не одну собаку съел.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Перспективы применения в вычислительной матетике
От: hardcase Пират http://nemerle.org
Дата: 12.11.12 13:19
Оценка:
Здравствуйте, ST1, Вы писали:

ST1>Матрицы не совсем удачный пример, меня интересует даже уровень выше.

ST1>Скажем сейчас в C++ для решения ДУЧП я использую связку freePOOMA и автоматическое дифференцирование (ADOL-C, CppAD, Sacado). Фактически, я записываю уравнения на уровне невязок с использованием разностных аналогов дифференциальных операторов div/grad относительно объектов авт.дифф-я. freePOOMA, за исключением OpenFOAM, это лучшее из опен-сорс,
ST1>но имеет ряд ограничений. Аналог этой либы я и хотел бы попробовать реализовать на Nemerle

Для начала нужно сперва оформить для себя язык предметной области, а уж потом смотреть какими средствами можно его интегрировать в Nemerle (и нужно ли это вообще).
/* иЗвиНите зА неРовнЫй поЧерК */
Re[3]: Перспективы применения в вычислительной матетике
От: VladD2 Российская Империя www.nemerle.org
Дата: 12.11.12 14:00
Оценка:
Здравствуйте, ST1, Вы писали:

ST1>Матрицы не совсем удачный пример, меня интересует даже уровень выше.

ST1>Скажем сейчас в C++ для решения ДУЧП я использую связку freePOOMA и автоматическое дифференцирование (ADOL-C, CppAD, Sacado). Фактически, я записываю уравнения на уровне невязок с использованием разностных аналогов дифференциальных операторов div/grad относительно объектов авт.дифф-я. freePOOMA, за исключением OpenFOAM, это лучшее из опен-сорс,

А почему для решения этой задачи не взять какой-нибудь математический пакет вроде "Матиматиака" или "Маткад"?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Перспективы применения в вычислительной матетике
От: Аноним  
Дата: 12.11.12 16:57
Оценка: +1
Здравствуйте, VladD2, Вы писали:

VD>А почему для решения этой задачи не взять какой-нибудь математический пакет вроде "Матиматиака" или "Маткад"?


потому что шаг вправо шаг влево и немерли будет рвать их по скорости и удобству, правда шаги должны быть совсем не стандартные. Если бы немерли мог транслировать в С, то цены бы ему не было.
Re[4]: Перспективы применения в вычислительной матетике
От: ST1 Россия  
Дата: 12.11.12 17:11
Оценка:
Здравствуйте, VladD2, Вы писали:
VD>А почему для решения этой задачи не взять какой-нибудь математический пакет вроде "Матиматиака" или "Маткад"?

У меня далеко не школьные примеры — решаемые уравнения, расчетные области и разностные схемы не предусмотрены в этих пакетах.
Даже Comsol и матлабовский Femlab не получается использовать, только хардкор. GUI тоже кастомный — на данный момент использую WTL.
Притом что на руках есть работающий код в виде либы C++, использовать его для быстрого прототипирования (например в НИОКР'ах)
новых моделей пока не удается. Кодогенерация на внешних скриптовых языках как-то не шибко лучше. Я конечно попробую через interop вынести всю алгебру, посмотрим что выйдет. Фактически я стремлюсь получить в руки код на Nemerle под специфическую область (в которой уже 7 лет имею наработки) синтаксис matlab'а.
Re: Перспективы применения в вычислительной матетике
От: ST1 Россия  
Дата: 12.11.12 17:21
Оценка:
Процитирую себя:
"Реализация любой вычислительной модели сводится к решению системы нелинейных дифференциальных уравнений в частных производных сеточным методом и в этом смысле не отличается от многих других задач вычислительной механики сплошных сред. При этом заметим, что подобно тому, как расчетные переменные определены в узлах разностной сетки, любое CFD-приложение условно находится на пересечении линий, представляющих абстракции предметной области. Поэтому, если иметь доступные реализации этих абстракций, мы получаем, с одной стороны, среду, параметры изменения которой можно менять для конкретных приложений, c другой ‒ параметризуем возможные будущие изменения в самом приложении для оптимизации процесса его разработки при одновременной декомпозиции нежелательной «монолитности». Соответствующий подход к современному проектированию на C++ предложен в работе "Коплиен Дж. Мультипарадигменное проектирование для C++".

С другой стороны понятно, что соответствующий DSL, притом на редком языке без достаточной поддержки сторонних библиотек, может занять далеко не пару месяцев. Хотелось бы понять, не утопия ли это.
Re[2]: Перспективы применения в вычислительной матетике
От: Аноним  
Дата: 12.11.12 18:02
Оценка:
Здравствуйте, ST1, Вы писали:

В реальности у немерли просто нет библиотек для интерфейса, нет генерации в С
да, он лучше для написания аналога опенфоама чем с++, но особого смысла в этом нет.
Немерли не готов для применения в указанных областях. С н2 должно быть существенно лучше.
Re[5]: Перспективы применения в вычислительной матетике
От: VladD2 Российская Империя www.nemerle.org
Дата: 12.11.12 19:20
Оценка:
Здравствуйте, Аноним, Вы писали:

А>потому что шаг вправо шаг влево и немерли будет рвать их по скорости и удобству, правда шаги должны быть совсем не стандартные.


А что там с шагами?

А> Если бы немерли мог транслировать в С, то цены бы ему не было.


Ну, никто не запрещает сварганить генератор подмножетсва немела в С. В жабаскрипт ведь сделали, а там даже goto нет.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Перспективы применения в вычислительной матетике
От: VladD2 Российская Империя www.nemerle.org
Дата: 12.11.12 19:39
Оценка:
Здравствуйте, Аноним, Вы писали:

А>В реальности у немерли просто нет библиотек для интерфейса,


Что? Матумба, ты что ли?

А>нет генерации в С


До недавнего времени в JavaScript тоже не было...

А>да, он лучше для написания аналога опенфоама чем с++, но особого смысла в этом нет.

А>Немерли не готов для применения в указанных областях.

Это чёйто?

А>С н2 должно быть существенно лучше.


Ну, в Н2 много чего упростится. Но пока его нет и еще долгое время не будет (в ближайшие месяц-два можно ожидать только парсер).
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.