Comments 49
Спасибо!
Были мысли о самостоятельной разработке подобного решения, а теперь буду, видимо, использовать ваши наработки!
JavaScript — гиблое дело. Производительность низкая, GPGPU не поддерживается.
Я бы смотрел в сторону Java-апплетов, Silverlight / .NET или NaCl
вычисления на ГПУ — не менее гиблое дело.
3 потока считают одно и тоже — у всех трёх разный результат)
Один мой коллега-аспирант 3 года пытался учитывать это, реализуя вычисления в СОКе.
3 потока считают одно и тоже — у всех трёх разный результат)

Не могли бы вы немного раскрыть, что тут имеется в виду?
Ошибки в железе? Ошибки во фреймворке? Ошибки в кернелах? Ошибки синхронизации?
Вроде беда была в том, что сами ядра в GPU допускают погрешность. А он изначально решил, что это не так. И его система сулившая высокую надежность и все такое давала что то противоположное от его цели.
Звучит довольно странно. GPU с которыми я немного знаком (Radeon, Southern Islands) предлагают вполне стандартные (IEEE 754) операции над 32-битными плавающими числами. Примеры из SDK OpenCL умножают матрицы с относительной погрешностью не более 10-8, что вполне на уровне для float32.
Сам я с GPU не работал. я сразу пошел по другому пути. А ему нужны были целые числа в первую очередь(как маленькие так и очень большие).
UFO landed and left these words here
Производительность вполне даже хорошая. Самое важное — javascript VM есть у всех, и ставить ничего дополнительно не нужно. В отличие от Java, NaCl или, прости госпадя, .NET.
Даже если и не такая большая, как с NaCl или .Net, то просто куда проще взять количеством добровольцев, готовых просто держать открытую вкладку.
Если производительность NaCl в 3 раза больше производительности JavaScript (что, вероятнее всего, истина), то из-за того, что пользователи Chrome составляют 1/3 интернета и у них у всех есть NaCl, они как минимум дадут те же вычислительные ресурсы.
Зато охват шире. Вот у меня нет на машине (и не появится) Java и Silverlight и Хромом я не пользуюсь. А JS работает. Причём JS работает и на моём планшете.
Не думаю, что имеет смысл производить научные вычисления на планшете.
Про ваш конкретный пример я написал выше. На всякий случай повторюсь: NaCl, вероятнее всего, как минимум в 3 раза быстрее лучшего JS движка. Хром как минимум у трети пользователей. Отсюда вывод: суммарная производительность, которую может предложить NaCl как минимум не ниже суммарной производительности JS. Но у него есть дополнительное преимущество: многие вычислительные библиотеки написаны на C++/FORTRAN
Это же проект распределённых вычислений, он работает на всё подряд, на чём уж пользователь запустит. Лучше иметь два клиента: на NaCl и JS.
Понятно, что лучше на всём подряд. Но если стоит выбор NaCl vs JavaScript следует выбирать NaCl по указанной выше причине.
Постоянно слышу, как люди говорят: JS — это плохо, плохой язык, очень простой, никуда не годится, ни для чего использовать нельзя, разве что для простеньких скриптов…

И моё мнение об этих людях — они совершенно не знакомы с JavaScript.

Ну посмотрите хотя бы вот эту вот демку:
triggerrally.com/
Это просто демка.
Посмотрите на FarCry или Need For Speed. Почувствуйте разницу, о которой идёт речь ;-)
Тогда вот:
hexgl.bkcore.com/
carvisualizer.plus360degrees.com/threejs/
mrdoob.github.com/three.js/examples/webgl_materials_cubemap.html

Вы полагаете, что такое сравнение корректно? Сравнивать пару демок, написанных на коленке, с продуктом, разрабатываемым большой компанией? Которая этим и зарабатывает на жизнь.
Если бы та же EA Games обратила внимание на WebGL (полагаю, уже обратила и экспериментирует), мы бы имели в вебе тот же Need For Speed. Ничуть не хуже
Вот странно: не Need For Speed вроде, а затягивает :)

Мой рекорд — метра два по отвесной стене снега)
А демо есть? Посмотреть хочется сколько оно кушает и как ведет себя)
К сожалению демо пока только в виде «Поставь пакет из PyPI; Скачай демо; Запусти демо»:
Мой проект javascript-ecdc (фреймворк для создения распределенных браузерных вычислительных сетей) схож с вашим по идеям, но только от начала и до конца на JavaScript (Node.js, Vanilla JavaScript). Даже как-то писал статью на подобную тему habrahabr.ru/post/119692/
Пишите если интересно сотрудничество :)
Здорово! Смотрю у вас очень много реализовано из того, что должен иметь подобный фреймворк :)
Здорово!
Сам разрабатываю что-то подобное в рамках своей магистерской работы, тоже на node.js+js. Жалко, что раньше не наткнулся на вашу статью, может избежал бы множества граблей))
Таким образом биткойны добывались, пока не начали их майнить на GPU. После это было бесполезно.
Кроме того, если я не ошибаюсь, там была проблема в том, что отъедались все процессорные мощности, которые были. Нельзя было использовать только, к примеру, 40% процессора. В итоге все порядком тормозило.
Как сейчас обстоит с этим у вас?

Многие проекты в Боинке используют GPU (и получают огромный прирост производительности). Яваскрипт вроде как не может использовать GPU напрямую?

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

Да, процессорные мощности отъедаются большими порциями (универсальный чит — запуск на многоядерных архитектурах). А вообще эта проблема — ещё та заноза и пути её решения, как мне кажется, не добавляют элегантности коду. Можно например вместо внешнего цикла вызывать минимальную процедуру вычислений по таймеру, отслеживать период выполнения и блокировать вычисления каждые 10 миллисекунд. И весь этот кошмар из-за отсутствия sleep() у WebWorker'ов.
(универсальный чит — запуск на многоядерных архитектурах

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

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

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

В общем, я надеюсь, Kaylee поможет развитию распределенных вычислений и науки в общем:)
Есть предложения. Пишите примеры реального использования.
Не одобряю, и так браузер превратили не пойми во что, 8 Гб памяти на компе, и последний Хром сжирает половину, а еще в 2008 году можно было жить на компьютере с 2 Гб свободно.

Куда катится мир.
Браузер нужен чтобы работать в интернете, распределенные вычисления это конечно круто, так сделайте отдельный клиент для них, и пусть те, у кого комп простаивает — врубают их.
Не по наслышке знаю, что мощный завис вынуждает перезагружать компьютер.
Вы что-то делаете не так, я до сих пор живу с 1,5Гб оперативки свободно.

Разве что андроид не пособираешь.
Я правильно понимаю, что Kaylee и BOINC не совместимы, то есть нельзя просто запустить браузер и подрубиться к SETI@home и другим подобным проектам?
Да, к сожалению так. Думаю можно было бы организовать совместимость BOINC<->NativeClient как предлагали выше, но у Kaylee чуточку другие цели.
>>И как было бы здорово просто кликнуть по ссылке в браузере и вмиг превратить компьютер в звено большой вычислительной сети!

хмм, Я думаю таких ссылок полно :) Особенно если браузер — ИЕ6 и нет антивируса.
Only those users with full accounts are able to leave comments. Log in, please.