Перейти к содержимому

Totoro

Гуру
  • Публикации

    1 950
  • Зарегистрирован

  • Посещение

  • Победитель дней

    289

Сообщения, опубликованные пользователем Totoro


  1. ...

     

    Давай для начала определим, что такое сложная задача.

    При решении любой сложной задачи, первое, что делает человек - это разбивает её на множество простых задач. В этом практически основа программирования.

    Любой серьезный алгоритм нахождения чего-нибудь нужного в итоге сведётся к тому, что компьютер будет делать 1+1, или 0+1, или 0+0.

     

    Теперь по поводу задачи.

    В рамках этой темы, мы не собираемся решать никаких задач, за исключением задачи организации распределённых вычислений.

    Твоя задача интересна, и ты можешь создать математический топик, где все неравнодушные к математике могут попробовать её решить. Но здесь это оффтоп.


  2. Вчера делали наброски в Кобре, но кто-то увел исходники. @ivan52945 сделал нам бекап (http://pastebin.com/8HLqrPNa) за что ему спасибо  :)

     

    Чтобы придать этому делу основательности, я зафигачил репозиторий на Github:

    https://github.com/cc-ru/cluster

     

    Там набросок ридмишки, лицензия и файлик с инструкциями для тех, кто захочет присоединиться (contributing).

    Говорите ваши акки на Github, всех подключу.

    Отдельные фичи пилим в отдельных ветках, чтобы не ломать ветку master, которая долна оставаться рабочей.

     

     

     

    Как видишь, многопоточность придумана для детских вычислений по типу 2x2.

     

    Я вот хз что ты пытаешься доказать. Что многопоточность в принципе ненужная штука? Тебя не смущает, что операционная система

    в которой ты работаешь, сейчас поддерживает десятки активных потоков, которые обеспечивают тебе комфортную работу?


  3. Божечки кошечки. Да это же попытка #1000001 по созданию ОС для OpenComputers.

     

    WUT? Какая ОС, Серёга, ты о чём?

     

    1. Можете провести для меня эксперимент: "На сколько медленее работают N процессов на нескольких OC компах, чем на одном?"

      Просто у меня такое ощущение, что все компы в opencomputers исполняются в одном процессе

     

    Официальная дока говорит, что не в одном, а в нескольких.

    OpenComputers uses a fixed number of low-priority threads for coroutines to cause as little delay on the server tick as possible


  4. Хм. Для каких конкретно вычислений можно будет задействовать данную... ээ... вещь? Возможно ли прикрутить эту опенкомпьютерную систему к реальной, типа BOINC?

     

    А хрен его знает. Надо придумать.

    Можно читать что-то с интернета в несколько потоков. Можно просчитывать буфферы для 3D графики. Можно мониторить табуны дронов.

     

    Что касается BOINC - лучше подключи свой домашний комп. Нет смысла отдавать процессорные ресурсы нашего серва, да ещё таким хитровывернутым способом.


  5. Что-то вы разбираете лёгкие примеры, а как насчёт более сложных алгоритмов, как их разбивать собираетесь?

    Например как разбить алгоритм нахождения и заноса в таблицу простых чисел. Без многопоточности алгоритм используя таблицу с первыми простыми числами самозаполняет себя. А вот как разбить подобный алгоритм я вообще не в курсе, это реально?

    Или вот пример, нужно рассчитывать и заносить числа Фибоначчи в таблицу. Как этот алгоритм собираетесь разбивать?

     

    Для каких целей вообще собираетесь свою многопоточность использовать? Чтобы детские задачи решать???

     

    Очевидно что нереально разбить на потоки алгоритм, который разбить на потоки нереально.

    Но это проблема юзера. Я не говорю, что либа будет панацеей.

     

    Либа будет решать те задачи, какие потребуется выполнить пользователю. Не важно, детские или нет.


  6. Для такой задачи нужна библиотека-помощник для хранения таких огромных чисел. Будет 869 цифр.

     

    Да, тут надо продумать вопрос с тем, как поднять в кластере нужное окружение.

    Можно скрипт для HPM замутить. =) Который будет окружение разворачивать.


  7. Я думаю вопрос разделения задачи на составные части нас вообще не должен волновать.

    Мы - чисто исполнители.

     

    Юзер сам думает, как ему разделить задачу.

    Например юзеру надо перемножить числа от 1 до 400. (Это не слишком сложная задача, но для примера сойдёт.)

    Он может юзать нашу либу так (псевдокод):

    -- подключаем либы
    local event = require('event')
    local cluster = require('supercomputer')
    
    -- инициализируем кластер
    cluster.init()
    
    -- тут генерим строки-программки, для нашей задачи
    function step(x)
      return "local n = " .. tostring(x) .. "; for i = n, n+100 do n = n * i end; return n"
    end
    
    -- задаём кластеру несколько параллельных задач
    cluster.setup("process1", step(1))
    cluster.setup("process2", step(101))
    cluster.setup("process3", step(201))
    cluster.setup("process4", step(301))
    
    -- запускаем на выполнение
    cluster.run()
    
    -- сюда будем складывать результаты
    local result = 1
    
    while true do
      -- слушаем эвенты от кластера
      local name, address, action, x = event.pull('cluster')
    
      if name == 'cluster' then
        -- если получили очередное вычисленное значение - добавляем к результату
        if action == 'result' then
          result = result * x
        -- если все "процессы" закончили работу - сворачиваемся
        else if action = 'done' then
          break
        end
      end
    end
    
    -- сбрасываем все задачи кластера, или "гасим" его или ещё что-то
    cluster.reset()
    
    -- выводим результат
    print("Произведение чисел от 1 до 400 = " + result)

    Тут мы раздали задачи кластеру, запустили, собрали ответы и получили результат. Вычисление заняло в 4 раза меньше времени (потенциально), чем если бы мы считали на одном процессоре.

    Разумеется для мелких задач результат будет почти не заметен. Но на достаточно сложных вычислениях он должен проявляться сильнее.

     

    Здесь программа очень проста. Нет отображениия промежуточных этапов и т.п.

    Но идею иллюстрирует.

    • Нравится 1

  8. Ну это не флуд, а дельная идея.

    Я вот предлагал Лёхе попробовать рендер 3D графики распределить через кластер.

     

    Но в любом случае, сначала надо спроектировать библиотеку.

     

     

    2)Зачем это надо?

     

    Для прикола. Это крутая идея, и будет прикольно её увидеть работающей.


  9. Я как соавтор идеи поддерживаю её и может даже поучаствую в разработке.  :)

     

    Основная идея пока такова:

    Делаем всё просто. Как с Zn. Реализуем небольшую либу для распределённых вычислений. Этакий Supercomputer API.

     

    Его задача будет

    - собрать компьютеры-ноды в один кластер

    - получать от юзера фрагменты задачи (самое простое в виде строки-кода)

    - распределять между свободными нодами кластера

    - получать результаты от нод, которые завершили вычисление

    - мерджить результат (по алгоритму предоставленному юзером) либо организовывать общение с нодами кластера в реальном времени

     

    Самый главный плюс всей идеи - реальная многопоточность. Все вычисления будут происходить параллельно, в реальном времени на разных компьютерах кластера.

    Наша задача - придумать максимально простую и удобную в использовании библиотеку под это дело.


  10. Ну тут я думаю очевидно, что самое обидное - обломится игра в стрелялки лазером. Но ладно, раз вам приятнее играть в лагах и ограничениях, то играйте. А я потом приду и буду записывать на камеру, как ваши роботы даже первого этапа не пройдут, залагав на старте.

     

    Хоть на этот раз кто-то запишет нормальное видео.


  11. Ну там половина участников накатала программы за 5 минут до эвента =)

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

    А остальные баги будут нам fun создавать на эвенте.

    Это часть запланированного веселья.  :D


  12. Ты просто не понял в чём моя стратегия. Я сначала жду пока игра перестанет обновляться (хотя многие играют во время хайпа) А потом в игре, где исправлены многие ошибки, становится приятнее играть.

     

    А я вот больше люблю Debian Testing.

    (Во всяком случае - для домашнего компьютера)


  13. 1.7.10 уже хорошо изведан, многие баги все знают, с её механикой все знакомы, есть моды которые ТОЛЬКО на 1.7.10 идут, например популярный русский аддон для галактиккрафта. 20-30% популярных модов с моей сборки идут только на 1.7.10, либо заканчивают обновлять и пишут только под 1.7.10 свои моды. (например тот самый аддон под галактиккрафт не хотят под новые версии выпускать, обновляют только на 1.7.10)

    Выходит - это самая популярная и проработанная версия. Устанавливать новые версии - равносильно брать кота в мешке. Какие только там баги только не всплывут. Лазеры - это ещё только начало, первый взгляд на новую версию майна.

    Но ладно, раз решили так делать, то это ваше дело.

     

    "...Пещера уже хорошо изведана, все стены знакомы, можно в темноте ходить и ни разу лбом не удариться. Есть штуки которые можно ТОЛЬКО в пещерах делать, например орать и слышать эхо. 20-30% всех моих занятий связано с пещерой, либо планируется под пещеру (например парное орание песен под пещерное эхо).

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

    Но ладно, раз решили выйти - ваше дело..."

    :P

     

     

    ИМХО. Устраивать ивент на 1.10 не самая удачная идея. Было бы лучше запустить тестовый сервер на 1-2 месяца, чтобы желающие могли там поиграться, потестить, посмотреть на новый механики майна и новые версии модов. И уже по результатам решить о проведении ивента.

     

    И сам ивент, судя по описанию, рассчитан явно не на нубов (вроде меня), так что желающих а тем более способных принять в нем участие наверняка можно будет сосчитать по пальцам одной руки опытного столяра

     

    Какой смысл смотреть на эти механики? Активная фаза эвента будет 2-3 часа. За это время некоторые даже не поймут на какой версии Майна они сейчас находятся.

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

     

    Сам эвент рассчитан на всех, кто осмелится заявить себя в участники. Остальные могут смело присоединяться как зрители.

    Прошлый этап эвента собрал 4 участников и около 20 зрителей.

    • Нравится 2

  14. Если кто-то хочет моего мнения (я его уже высказывал, к слову), оно совпадает с мнениями предыдущих ораторов.

    Это конкурс для программистов.

     

    Можно сделать бои игроков через "робо-аватаров". Можно сделать стратегический замес я-ля Supreme Commander изспользуя роботов как юниты.

    Это всё замечательные идеи для ивентов. Но их лучше обсуждать в отдельной теме.

    Вот прямо создавайте тему, описывайте идею, создавайте карту, пишите софт. Никто не мешает, а я даже лайк поставлю.  :D

    • Нравится 2
×
×
  • Создать...