Ок. Понял.
Поразбирался немного с пакетным режимом запуска YAFU 3.0.
Вроде все просто.
Команда запуска:
Код:
yafu-x64.exe "factor(@)" -batchfile run.txt -threads 4 -p >screen4.log
Где файл run.txt должен быть вида:
Код:
999999999999999999999999999999999999999999991
999999999999989 * 999999999999999999999999999999999999999999991
99999597927516812804847414529880573 * 99999683550587277607185624599397449
Т.е. без скобок и кавычек.
Число тредов на все расчеты одинаковое.
Но реально, при расчете, программа может использовать и меньшее число тредов, но не большее.
Это видно в логах.
Важное замечание, т.к. результат выводится на экран консоли и убегает вверх,
то используется простое перенаправление вывода в файл ( в виде ">screen4.log").
Чтобы не потерять и не пролистывать все эти строки...
Полное перенаправление (вида ">screen4.log 2>&1") НЕ используется, т.к. файл легко достигает размера 60Мб на одном значении расчета.
Поэтому все нужное пишется в файл "screen4.log", а не на экран консоли (на экран, в таком случае, попадает только stderr канал).
Нужную инфу выдергиваю с помощью команды
Код:
cat -s screen4.log|grep -A1 -B8 -e "factorization:" -e "fac: factoring"
Важный момент - команд "cat" и "grep" в винде нет, брал их из окружения компилятора gcc.
Т.е. это не стандартный метод.
Как "пропихнуть" некое значение вперед по очереди исполнения, когда все уже запущено в работу?
Мной делалось так:
1. вношу нужное, внеочередное, число в файл "run.txt", вставляя его сразу после того числа, которое считается прямо сейчас.
2. когда работает режим "-batchfile" создается файлик с фиксированным именем "__tmpbatchfile"
В нем программа, во время работы, размещает все, что было в "run.txt" за минусом первой строки.
А когда текущее число посчитано программа перемещает его содержимое в файл "run.txt".
Т.о. файл "run.txt" уменьшается по мере расчета запланированных значений.
Поэтому п.3
3. Делаю копию "__tmpbatchfile" в виде "1__tmpbatchfile.txt" (на всякий случай).
4. вношу в первую строку файла "__tmpbatchfile" нужное число для "пропихивания".
Собственно и все.
"Пропихнутое" число автоматом начинает считаться после текущего значения.
И еще, все кешированные данные от текущего расчета - удаляются автоматически при переходе к расчету нового значения.
Более глубже пока не разбирался.