Re[2]: Гомоку, рэндзю
От: _SZ_ Украина  
Дата: 17.10.13 16:05
Оценка:
Здравствуйте, Qbit86, Вы писали:

Q>Ты читал книжку «Дядя Петрос и проблема Гольдбаха»?


В 2013 году тернарная гипотеза Гольдбаха была окончательно доказана Харальдом Гельфготтом... ах, дядя Петрос...
(с)(_SZ_)
Re[3]: Гомоку, рэндзю
От: de Niro Ниоткуда  
Дата: 17.10.13 17:52
Оценка:
Здравствуйте, _SZ_, Вы писали:

Q>>Ты читал книжку «Дядя Петрос и проблема Гольдбаха»?


_SZ>В 2013 году тернарная гипотеза Гольдбаха была окончательно доказана Харальдом Гельфготтом... ах, дядя Петрос...


Бинарная проблема Гольдбаха всё ещё далека от решения. (c) оттуда же

Дядя Петрос емнип, пытался решить именно бинарную.
Re: Вычислительные ресурсы хочу
От: Sheridan Россия  
Дата: 18.10.13 20:52
Оценка:
Кругом линух. Сделай свой модуль просчета демоном (или хотя бы консольной софтиной), я вполне могу дать тебе мипсы.
Matrix has you...
Re: Ещё хочу
От: Шебеко Евгений  
Дата: 01.11.13 17:36
Оценка:
Я немного допилил алгоритм, и хотя он мне всё ещё не нравится, но результаты довольно обнадёживающие.
Всего 2 машины, 5 потоков, работающих время от времени добились довольно неплохих результатов.
Так что можно немного поборзеть, и попробовать решить дерево целиком.
Я планировал добавить автоматическую статистику на сайт, но врядли у меня в ближайшее время получится.
Обещать что-то пока пожалуй тоже не буду.

И так, если вы хотите принять участие, заходите сюда, качайте windows или ubuntu версию.
Запускаете f5_spawn. По умолчанию он стартует с количеством проццессов, равных к-ву ядер в системе.
Можно предварительно отредактировать f5_spawn и вписать явно к-во процессов.
Также можно вписать src_name, чтобы идентифицировать себя вместо "somebody".
Я смогу потом в ручном режиме обработать логи, и выдать статистику по юзерам.

Для запуска на ubuntu возможно понадобиться доставить пакеты.

apt-get install daemon
apt-get install wget


Отстреливать процессы так:

ps -x | grep f5 | grep daemon


будет строчка вроде:

8678 ? S 0:00 daemon --chdir=/home/shebeko/solver/spawn/0 --pidfile=/home/shebeko/solver/spawn/0/pid ../../f5_solve.sh
kill 8678
kill -9 8678



На Windows версию хром ругается "is not commonly downloaded and could be dangerous".
Что с этим делать, я не знаю. Доверять или нет — решать вам.

Также можно собрать solver из исходников.
Для windows, правда, wget всё равно не получится собрать.

Для ubuntu, для сборки понадобиться дополнительные пакеты:

apt-get install build-essential cmake
apt-get install libboost1.49-all-dev


сборка делается так:

cd five-in-line/solver/cmake/
cmake -f CMakeLists.txt
make


Получившийся solver подкладываете в оригинальный архив.
Re[2]: Ещё хочу
От: Anton Batenev Россия https://github.com/abbat
Дата: 03.11.13 20:05
Оценка:
Здравствуйте, Шебеко Евгений, Вы писали:

ШЕ> Также можно собрать solver из исходников.

ШЕ> Для windows, правда, wget всё равно не получится собрать.

На FreeBSD по прежнему собирается и запускается (увы, других серверов 24х7 нет)?
avalon/1.0.433
Re[3]: Ещё хочу
От: Шебеко Евгений  
Дата: 03.11.13 20:44
Оценка:
AB>На FreeBSD по прежнему собирается и запускается (увы, других серверов 24х7 нет)?
Не факт. Я переехал на отдельный сервер на облачном хостинге, а они как на зло все линуксовые.
Я проверю.
Re[2]: Ещё хочу
От: night beast СССР  
Дата: 04.11.13 07:40
Оценка:
Здравствуйте, Шебеко Евгений, Вы писали:

ШЕ>Я немного допилил алгоритм, и хотя он мне всё ещё не нравится, но результаты довольно обнадёживающие.

ШЕ>Всего 2 машины, 5 потоков, работающих время от времени добились довольно неплохих результатов.
ШЕ>Так что можно немного поборзеть, и попробовать решить дерево целиком.
ШЕ>Я планировал добавить автоматическую статистику на сайт, но врядли у меня в ближайшее время получится.
ШЕ>Обещать что-то пока пожалуй тоже не буду.

ШЕ>И так, если вы хотите принять участие, заходите сюда, качайте windows или ubuntu версию.

ШЕ>Запускаете f5_spawn. По умолчанию он стартует с количеством проццессов, равных к-ву ядер в системе.
ШЕ>Можно предварительно отредактировать f5_spawn и вписать явно к-во процессов.
ШЕ>Также можно вписать src_name, чтобы идентифицировать себя вместо "somebody".
ШЕ>Я смогу потом в ручном режиме обработать логи, и выдать статистику по юзерам.

в можно сделать таски более продолжительные? а то много времени на скачку уходит.
или сервак какой свой написать, чтобы вгет каждый раз не запускать.
Re[3]: Ещё хочу
От: Шебеко Евгений  
Дата: 04.11.13 10:46
Оценка:
NB>в можно сделать таски более продолжительные? а то много времени на скачку уходит.
NB>или сервак какой свой написать, чтобы вгет каждый раз не запускать.

Если очень уж быстро, возможно он ничего не считает?
Хотя я вас в статистике за сегодня вижу:

921 fiveinline_info
11478 night_beast
4395 shebeko_work
176 somebody


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

В f5_spawn.bat
set lookup_deep=3 можете увеличить до 4 или 5.

Главное не уменьшайте, а то это на качество решения влияет.


Ещё может быть вариант, что дерево переодически сплитится на сервере, в этот момент сервис оказывается недоступен.
Или просто сервак не доступен в какие-то моменты, из вашей точки по сетевым причинам.
Выглядит это так, как будто постоянно запросы идут.
Re[4]: Ещё хочу
От: Шебеко Евгений  
Дата: 04.11.13 10:49
Оценка:
ШЕ>

ШЕ> 11478 night_beast

Кстати, какой у Вас конкретно проц и сколько потоков?
Re[5]: Ещё хочу
От: night beast СССР  
Дата: 04.11.13 12:51
Оценка:
Здравствуйте, Шебеко Евгений, Вы писали:

ШЕ>>

ШЕ>> 11478 night_beast

ШЕ>Кстати, какой у Вас конкретно проц и сколько потоков?

можно на ты?

проц. haswell i5. 4 потока.

глубину увеличу.
Re[2]: Ещё хочу
От: Шебеко Евгений  
Дата: 11.11.13 08:47
Оценка:
Статистика здесь
Re[3]: Ещё хочу
От: night beast СССР  
Дата: 11.11.13 09:57
Оценка:
Здравствуйте, Шебеко Евгений, Вы писали:

ШЕ>Статистика здесь


там до конца далеко?
у тебя данные о решении как сохраняются? я запускаю с глубиной 5, в дальнейшем все плохие варианты полученные при обходе будут повторно проверяться, или нет?
Re[4]: Ещё хочу
От: Шебеко Евгений  
Дата: 11.11.13 11:40
Оценка:
NB>там до конца далеко?
Прогресс есть, но ещё далеко.
Прогресс видно по новыми решениям, которые появляются, например, здесь

NB>у тебя данные о решении как сохраняются? я запускаю с глубиной 5, в дальнейшем все плохие варианты полученные при обходе будут повторно проверяться, или нет?

К сожалению, будут. 5 может очень круто.
Но <3 тоже ставить нельзя, дерево на диске очень сильно растёт за счёт тупиковых веток.

Для меня лучше, низкопроизводительный, но долгосрочны расчёт.
Лучше пустить один процесс, и даже понизить ему приоритет, но чтобы он молотил месяц.
Re[5]: Ещё хочу
От: night beast СССР  
Дата: 11.11.13 11:45
Оценка:
Здравствуйте, Шебеко Евгений, Вы писали:

NB>>у тебя данные о решении как сохраняются? я запускаю с глубиной 5, в дальнейшем все плохие варианты полученные при обходе будут повторно проверяться, или нет?

ШЕ>К сожалению, будут.



ШЕ>5 может очень круто.


на трех проц мало нагружается

ШЕ>Но <3 тоже ставить нельзя, дерево на диске очень сильно растёт за счёт тупиковых веток.


ШЕ>Для меня лучше, низкопроизводительный, но долгосрочны расчёт.

ШЕ>Лучше пустить один процесс, и даже понизить ему приоритет, но чтобы он молотил месяц.

я на домашнем запускаю. на ночь/рабочий день, естественно вырубаю.
Re: Вычислительные ресурсы хочу
От: Шебеко Евгений  
Дата: 18.11.13 16:50
Оценка:
Статья на хабре
Re[4]: Ещё хочу
От: Anton Batenev Россия https://github.com/abbat
Дата: 23.11.13 00:36
Оценка:
Здравствуйте, Шебеко Евгений, Вы писали:

ШЕ> Не факт. Я переехал на отдельный сервер на облачном хостинге, а они как на зло все линуксовые.

ШЕ> Я проверю.

К сожалению, под FreeBSD как-то не очень. Внес следующие изменения в CMakeLists.txt (протестировал на FreeBSD и Linux):

--- CMakeLists.txt    (revision 126)
+++ CMakeLists.txt    (working copy)
@@ -43,7 +43,12 @@
 add_definitions(-D_CRT_SECURE_NO_WARNINGS)
 
 if(NOT WIN32)
-      TARGET_LINK_LIBRARIES(solver boost_filesystem.a boost_signals.a boost_system.a)
+      FIND_PACKAGE(Boost COMPONENTS filesystem signals system REQUIRED)
+      IF(Boost_FOUND)
+            INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})
+            LINK_DIRECTORIES(${Boost_LIBRARY_DIRS})
+      ENDIF(Boost_FOUND)
+      TARGET_LINK_LIBRARIES(solver ${Boost_FILESYSTEM_LIBRARY} ${Boost_SIGNALS_LIBRARY} ${Boost_SYSTEM_LIBRARY})
 endif()
 
 link_directories($ENV{BOOST}/stage/lib)


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

f5_spawn.sh:
#!/bin/sh

# contributor name
SRC_NAME="somebody"

# max process count (leave empty to use all processors)
PROCESS_COUNT=""

# depth
LOOKUP_DEEP=2

# web service
URL="http://fiveinline.info/solutions/root/solve.php"

# check depency
OS=$(uname)

if [ "${OS}" = "Linux" ]; then
    DAEMON=$(which daemon)
    if [ -z "${DAEMON}" ]; then
        echo "daemon not found, please install it and try again"
        exit 1
    fi
fi

FETCH=""
if [ -n "$(which wget)" ]; then
    FETCH="wget -q -O"
elif [ -n "$(wich fetch)" ]; then
    FETCH="fetch -q -o"
elif [ -n "$(which curl)" ]; then
    FETCH="curl -s -o"
else
    echo "Fetch command not found"
    exit 1
fi

# get processors count
if [ -z "${PROCESS_COUNT}" ]; then
    if [ "${OS}" = "Linux" ]; then
        CPU_COUNT=$(cat /proc/cpuinfo | grep processor | wc -l)
    elif [ "${OS}" = "FreeBSD" ]; then
        CPU_COUNT=$(sysctl hw.ncpu | cut -d ' ' -f 2)
    else
        echo "Unsupported OS: ${OS}"
        exit 1
    fi

    PROCESS_COUNT="${CPU_COUNT}"
fi

export URL="${URL}"
export SRC_NAME="${SRC_NAME}"
export LOOKUP_DEEP="${LOOKUP_DEEP}"
export PROCESS_COUNT="${PROCESS_COUNT}"
export FETCH="${FETCH}"

# spawn processes
cd `dirname $0`

BASE_DIR=$(pwd)

PROCNO=0

while [ "${PROCNO}" -lt "${PROCESS_COUNT}" ]
do
    WORK_DIR="${BASE_DIR}/spawn/${PROCNO}"

    if [ ! -d "${WORK_DIR}" ]; then
        mkdir -p "${WORK_DIR}"
        if [ $? -ne 0 ]; then
            exit $?
        fi
    fi

    cd "${WORK_DIR}"

    if [ "${OS}" = "Linux" ]; then
        daemon --chdir="${WORK_DIR}" --pidfile="${WORK_DIR}/pid" "${BASE_DIR}/f5_solve.sh"
    elif [ "${OS}" = "FreeBSD" ]; then
        daemon -p "${WORK_DIR}/pid" "${BASE_DIR}/f5_solve.sh"
    else
        echo "Unsupported OS: ${OS}"
        exit 1
    fi

    PROCNO=$(expr "${PROCNO}" + 1)
done


f5_solve.sh:
#!/bin/sh

KEY_FILE="key_file"

while true
do
    ${FETCH} "${KEY_FILE}" "${URL}?src_name=${SRC_NAME}&cmd=get_job"
    if [ $? -ne 0 ]; then
        exit $?
    fi

    KEY=$(cat "${KEY_FILE}")

    if [ -z "${KEY}" ]; then
        exit 1
    fi

    echo "Current key is: ${KEY}"

    RESULT=$(../../solver "${KEY}")
    if [ $? -ne 0 ]; then
        exit $?
    fi

    echo "Result is: ${RESULT}"

    N=$(echo "${RESULT}" | awk '{print $2}')
    W=$(echo "${RESULT}" | awk '{print $3}')
    F=$(echo "${RESULT}" | awk '{print $4}')

    ${FETCH} result_file "${URL}?src_name=${SRC_NAME}&cmd=save_job&key=${KEY}&n=${N}&w=${W}&f=${F}"
    if [ $? -ne 0 ]; then
        exit $?
    fi
done
avalon/1.0.433
Re[5]: Ещё хочу
От: sinmaster  
Дата: 03.01.14 08:16
Оценка:
привет.
как узнать что некоторая пачка "заданий" обработалась? Как часто обновляется http://fiveinline.info/solutions/root/stat.php ?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.