|
|
|
Выбор скриптового языка программирования
|
|||
|---|---|---|---|
|
#18+
Привет. Коротко: C++. Как организовать доставку исполняемого кода на другой компьютер и выполнения его там? Развернуто: Есть очень интересная идея проекта обобщенных распределенных вычислений в гетерогенных средах. Упрощенно говоря дело обстоит так: с помощью некой технологии, MPI, например, запускается N вычислительных нод. Нода может быть любой - физический процессор, виртуальная, обезьянка со счетами, не важно. Суть в том, что сервер заданий распределяет при этом специально сформированые задания по нодам, на которых они выполняются, а результаты их выполнения собираются тем же сервером заданий и сохраняются. Пока не сложно? Язык - обязательно С++, т.к. это требование одной из выч. платформ. Вот теперь начинаются трудности. Сейчас система реализована так, что для решения задачи необходимо пересобирать всю платформу, т.е. вычислительный код "вкомпиливается" намертво. Однако вдохновившись Java, хочется передавать ноде класс, который она будет выполнять, таким образом обеспечивая возможность на лету менять вычислительный код. Кто знаком с J2EE, узнал подобие сервера приложений. Так вот, вопрос в том, как бы вы это реализовали? У меня пока основная идея выч. код писать на каком-то скриптовом языке, lua, например. Однако меня очень тревожит вопрос производительности. Я одно время баловался с ней в связке с C++, и если мне не изменят память, во встраиваемом интерпретаторе была возможность компиляции в байт-код. Или например не плохо было бы научиться компилять код на каком-то языке в машинный прямо на лету. Тогда потери производительности во время выполнения должны отсутствовать полностью. Есть какие-нибудь идеи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2011, 13:34 |
|
||
|
Выбор скриптового языка программирования
|
|||
|---|---|---|---|
|
#18+
wertlex, Лучше Явы ничего не будет. Самые лучшие по скорости байт-машины и переносимость. Нагуглился пример http://habrahabr.ru/blogs/java/104229/ Но потеря в скорости конечно будет - добавите колво узлов по вкусу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2011, 15:14 |
|
||
|
Выбор скриптового языка программирования
|
|||
|---|---|---|---|
|
#18+
wertlex, Ch is a C/C++ interpreter and scripting language environment used by teachers, students, engineers and scientists around the world to learn C/C++, numerical computing and write cross-platform code and embedded scripts quickly and efficiently. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2011, 15:15 |
|
||
|
Выбор скриптового языка программирования
|
|||
|---|---|---|---|
|
#18+
Siemargl, если идея выгорит, то на яву будет порт. Однако сейчас дело обстоит так, что основная доступная числодробилка имеет компилятор фортран и С++. Usman, тогда, думаю, лучше посмотреть в сторону Tiny CC. To All, а что вы думаете относительно javascript и v8 engine от гугла в качестве встроенного интерпретатора? Вообще вопрос, наверное прост. Какой встроенный скриптовый язык позволяет выжать максимум? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2011, 16:46 |
|
||
|
Выбор скриптового языка программирования
|
|||
|---|---|---|---|
|
#18+
wertlexTo All, а что вы думаете относительно javascript и v8 engine от гугла в качестве встроенного интерпретатора? Вообще вопрос, наверное прост. Какой встроенный скриптовый язык позволяет выжать максимум? ИМХО - Python ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2011, 17:50 |
|
||
|
Выбор скриптового языка программирования
|
|||
|---|---|---|---|
|
#18+
Usman, интересно, хотел одно время изучить питон, но потыкав в него день, понял, что не лежит душа к нему. не вдохновило отсутствие private/public. А вообще спасибо, посмотрю в эту сторону. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2011, 20:24 |
|
||
|
Выбор скриптового языка программирования
|
|||
|---|---|---|---|
|
#18+
wertlex, - "private" противоречит философии Python 'а, есть одно решение - написать модуль расширения на Си/Си++, тем самым скрыть логику - доставка исполняемого кода - можно как в исходном виде (скрипт), так и при помощи (де-)сериализации объектов ( pickle ) - в плане вычислений - предусмотрена встроенная поддержка длинной арифметики - ну, и большое кол-во реализаций ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2011, 20:41 |
|
||
|
Выбор скриптового языка программирования
|
|||
|---|---|---|---|
|
#18+
wertlexКто знаком с J2EE, узнал подобие сервера приложений. Так вот, вопрос в том, как бы вы это реализовали? Я программирую на Java, а раньше на C/C++, поэтому могу с уверенностью ответить: никак. Python,Lua,JavaScript не годятся для распределённых вычислений - скорость работы значительно меньше, чем у C/C++ и Java, поэтому смысл в распределении пропадает. Есть и другие обстоятельства, которые упоминать излишне, ввиду этого первого. Если нужно использовать С++, то можно написать разные варианты компонента, производящего вычисления, для разных сред, то есть наверно Windows и Linux, то придётся приложить некоторые усилия. Для объединения часто испрользуется библиотека MPI. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2011, 12:12 |
|
||
|
Выбор скриптового языка программирования
|
|||
|---|---|---|---|
|
#18+
Partisan M, ага, а я вот на обоих сейчас программирую и вот что скажу, да, в том ключе как это реализовано в java, действительно не получиться... но есть варианты. 1) Доставить библиотеку кода. Будем считать,что мы собрали библиотеку под все нам известные платформы. Библиотека содержит один метод void сделатьЧудо(); и в принципе чудо происходит, если компиляторы совпадут, платформы окажутся правильными итд. По скорости этот метод самый быстрый - исполняется оптимизированый скомпилированый машинный код. Плюсы: максимальная производительность. Гетерогенность Минусы: нечеловеческие усилия по разработке и отладке этой самой библиотеки. Если сама система разрабатывается один раз, и облысеет отлаживая ее один разработчик, то при использовании(кому она такая нужна?) облысеет в самых интимных местах целая армия. Вывод: необходимо использовать только в случае острой необходимости и осознания затрат 2) Внедрить какой-нибудь скриптовый язык. Пусть будет питоном, хотя это не принципиально. Что мы получаем при этом: код по прежнему выполняется в том же окружении, но уже на неком подобии встроенной в контейнер виртуальной машине или интерпретаторе этого языка. Разумеется, производительность не самая высокая. Давайте будем реалистами и заложим 66,(6) % оверхеда этого долбаного питона. Итого мы получаем в три раза меньшую производительность всей системы в целом. Я вообще физик по образованию, поэтому приведу реальный пример. Для диплома я на кластере считал поведение одной системы. Длилось это сутки и использовалось 100 ядер. Это не слишком много. На реализацию алгоритма я потратил 1 день. На то, чтобы заставить его работать параллельно при уже разработаной инфраструктуре, похожей на описанную здесь (предок этой системы) около двух недель. Теперь вопрос: написав то же самое на питоне за 10 минут и скормив числодробилке со ста ядрами я бы заботился я об этом оверхеде? Разумеется, если писать что-то, что считается очень долго, год, например, то есть смысл потратить лишнюю неделю на написание на C++, но в случае не слишком крупных заданий.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2011, 19:28 |
|
||
|
Выбор скриптового языка программирования
|
|||
|---|---|---|---|
|
#18+
Целевых платформ не так уж много, а те, которые интересны - имеют нужные компиляторы любимого С++. Может быть, есть 2% платформ, для которых кросс-компиляция затруднена. Ну и бог с ними - это же всего 2%. Доставлять код в готовом к употреблению виде. Т.е., уже в откомпилированном. Подключать на лету - например, используя систему плагинов. Или тупо в виде CGI - модулей для реализации web - сервисов. И т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2011, 23:14 |
|
||
|
Выбор скриптового языка программирования
|
|||
|---|---|---|---|
|
#18+
vvm, я столкнулся со следующей ситуацией. Существуют кластеры, они не общедоступны, но они есть. На кластере обычно есть планировщик, который выделяет ресурсы под задачу и запускает ее. Код работает по MPI. Тут и находится компилятор С++. Кроме того, существуют гетерогенные среды, ярким примером которой является BOINC, который не работает на кластере, но тоже вполне крут... Плюс к этому еще существуют доморощенные кластеры, которые на MPI, например, можно развернуть за час... ну собственно хочется объединить) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2011, 20:49 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=37554945&tid=1342579]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
25ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 203ms |
| total: | 308ms |

| 0 / 0 |
