LINUX.ORG.RU

На чем сейчас модно писать научные программы?


0

3

Конечно большинство сегодня по инерции еще пишут на Фортране или Си, но ведь задачи на сегодняшний день изменились, требования уже другие. Да и логика гораздо сложнее стала.
Расчеты требуют больше удобного написания программы, чем скорость счета (не продакшен же), но скорость тоже важна.

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

★★★★★
Ответ на: комментарий от melkor217

>> Расчеты требуют больше удобного написания программы, чем скорость счета (не продакшен же), но скорость тоже важна.

Расчёты требуют в первую очередь эффективного алгоритма. При этом затрады времени на кодинг этого алгоритма, пусть даже на Си, ничтожны

4.2. Как правило чем алгоритм эффективней тем сложней его кодить. Напр наши алгоритмы самые эффективные и чудовищно сложно реализуются. Иначе все б ими уже давно пользовались...

AIv ★★★★★
()
Ответ на: комментарий от AIv

> 4.2. Как правило чем алгоритм эффективней тем сложней его кодить. Напр наши алгоритмы самые эффективные и чудовищно сложно реализуются. Иначе все б ими уже давно пользовались...

Очевидный фикс. Чем алгоритм _сложнее_, тем сложней его кодить.

Кстати, «наши» это какие?

melkor217 ★★★★★
()
Ответ на: комментарий от melkor217

> Не вижу прямой связи между сложностью и эффективностью.

Человеческий мосг и ЦПУ работает по разному;-) Человек пишет алгоритм так, как удобно ему, для машины такой вариант обычно крайне неэффективен. Что бы написать действительно эффективный алгоритм надо учитывать особенности работы машины, отсюда и возрастание сложности.

Ну Вы погуглите аббревиатуру LRnLA, погуглите... ;-)

AIv ★★★★★
()
Ответ на: комментарий от Rakot

> Что ж это за область физики такая? Такого рода высказывания попахивают заявлениями отца Фантом ОС.

Погуглите аббревиатуру LRnLA

AIv ★★★★★
()
Ответ на: комментарий от AIv

> Что бы написать действительно эффективный алгоритм надо учитывать особенности работы машины, отсюда и возрастание сложности.

И что же там учли? Там где вместо формальной оценки сложности нарисовали график потребления ресурсов? Или там где посреди матчасти вставили картинку иерархии распараллеливания?

melkor217 ★★★★★
()
Ответ на: комментарий от melkor217

Там учли особенности работы подсистемы памяти. Формальная оценка сложности там тоже есть, но она к реальным задачам никакого отношения не имеет а относится лишь к модели «сферического вычислителя в вакууме».

Приведу такой результат этого учета - для у-й максвелла и у-й сплошной среды (сейсмика) реально достигнутая за счет LRnLA производительность порядка десятков тактов на ячейку на шаг при размере сетки 1024х1024х1204 на вполне обычной персоналке. Говорит о чем нить?

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

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

AIv ★★★★★
()
Ответ на: комментарий от AIv

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

melkor217 ★★★★★
()
Ответ на: комментарий от melkor217

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

ЯП - С++ (суровые шаблоны) и питон. На питоне хитрый кодогенератор + интерфейс и вся обвязка.

AIv ★★★★★
()
Ответ на: комментарий от AIv

> На питоне хитрый кодогенератор

Преимущества Питона видятся мне только в кодогенерации. Можно об этом по-подробнее? Насколько вообще такие хаки с кодогенерацией играют большую роль?

iVS ★★★★★
()
Ответ на: комментарий от iVS

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

from mymodel import *
M = myclass()
M.a = 1
M.b = 2
...
while M.time<time_max : M.calc()
...

Форточки тоже легко цепляются. С таким подходом новая задача с нуля пишется за часы.

А кодонерация - ну чего там... нужно склепать делать сотню С-функций (гран условия). Они очень похожи, где то индексы переставлены где то знаки поменяны. Ищем закономерности, пишем кодогенератор. Тут как раз какой нить лисп наверное лучше подошел бы, да у нас его никто не знает;-)

Мы пилим потихоньку CAS на питоне заточенную на кодогенерацию, да уж больно непростое это дело. Ну че та уже работает, как допилим будет всеобщее щастье человеческое - схему численную вбил, получил на выходе самый эффективный в мире код на С++;-)

AIv ★★★★★
()
Ответ на: комментарий от AIv

Спасибо за ответ. Коль уж за «всеобщее щастье человеческое» ратуете, то желаю удачи в столь благом начинании!

iVS ★★★★★
()
Ответ на: комментарий от AIv

А, ну , значит, с фотонными кристаллами работаешь, я как раз видел ссылку на труды 50-й конференции? Только в чём такая гиперсложность LRnLA? Никто до этого не смог осилить запрограммировать? Так я и на этот вопрос ответ знаю (я имею ввиду почему) :)

Rakot ★★
()
Ответ на: комментарий от Rakot

С фотонными да, не я, но коллеги.

Никто до этого не мог такое придумать (были робкие попытки, а автор LRnLA дошел до конца) + да, никто кроме автора не может закодить. Даже я не могу;-) Есть авторская библиотека, остальные ее юзают. Там очень много подводных камней «дьявол кроется в деталях»

AIv ★★★★★
()
Ответ на: комментарий от Rakot

Он энтузиаст и патриот в хорошем смысле этого слова, и если б не его личный пример я бы сейчас был просто программистом;-)

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

AIv ★★★★★
()
Ответ на: комментарий от Rakot

Да я вообще физфак заканчивал, сейчас в ИПМ и в долгопе был раз 5;-) Да, наверно незнакомы. Ладно, буду я отчет писать дальше «Проведение испытаний и корректировка технической документации по результатам проведенных испытаний» епрст...

AIv ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.