Чем больше количество потоков процессора, тем для скорости оптимизации лучше.
Количество оперативной памяти подбирайте исходя из задач и алгоритма расчета, описанному ниже.
Конечное потребление памяти при оптимизации можно рассчитать по следующей формуле:
Память (байт) = ЧислоБар * 8 * ЧислоУникНаборовПараметров
ЧислоБар – сколько бар истории вы подали в скрипт
8 – столько байт займет одно число double
Число Уникальных Наборов Параметров – сколько уникальных сочетаний параметров в скрипте получается. Далеко не всегда эта цифра равна числу итераций в скрипте. Для двух скользящих с периодом от 1 до 300, число уникальных наборов будет равно всегда 299, при том что число пересчетов будет много больше. И именно за счет кэширования этих самых 299 уникальных результатов будет получен тот самый прирост скорости оптимизации, который получается при помощи использования GetData.
В одном гигабайте всегда 1024 мегабайта, а в одном мегабайте 1024 килобайта, а в килобайте всегда 1024 байта.
В рамках программы на одно число double может уходить до 10 байт. TSLab выделяет память не только под кэш, но и под другие промежуточные расчеты, а так же с тем, что закэшируются и цены закрытия инструмента (что может занять некоторое количество памяти). Поэтому, памяти будет затрачено несколько больше, чем получится по выше приведенной формуле.
Программа полностью поддерживает многопоточность. Поэтому, чем больше потоков поддерживает процессор, тем быстрее идет оптимизация, при достаточном количестве оперативной памяти.
Открыть меню Оптимизация скриптов можно выбрав пункт Файл - Настройки программы - Оптимизация скриптов
Для многоядерных процессоров включите опцию "Включить для многоядерных процессоров"
Отладка скриптов - это отладчик, дебаггер для работы с Visual studio или SharpDevelop
Макс. время работы - по умолчанию стоит 40 секунд. Это время пересчета скрипта, если компьютер не смог рассчитать скрипт за указанное время, программа остановит пересчет, снимет задачу. Настройка влияет не только на оптимизацию, но данный параметр - это максимальное время расчета агента.
Кеш для скриптов - подбирается методом подбора. Все компьютеры разные, даже с одинаковым железом. В зависимости от драйверов, установленных программ, версии ОС и запущенных сервисов они могут вести себя по-разному. Для последних версий Windows, при условии переизбытка оперативной памяти и работе в 64бит, данный параметр можно не трогать или поставить его близким к имеющейся физически свободной оперативной памяти.
О методе подбора значений от пользователя: Пересчетом данных занимается процессор, ОЗУ занимается хранением данных, откуда и потребляет их процессор (если очень упрощенно). Больший объем ОЗУ позволит Вам разместить там больший объем "запаса" расчетных данных без необходимости "добывания" этих данных с HDD, за сам пересчет отвечает процессор, соответственно, скорость оптимизации будет определяться точкой баланса между количество оперативной памяти и быстродействием процессора. Увеличение оперативной памяти без увеличения быстродействия процессора не даст эффекта после прохождения точки максимальной загрузки ОЗУ, равно как увеличение частоты процесса будет давать меньший эффект при малой ОЗУ, т.к. данные придется брать с низкоскоростных хранилищ данных типа HDD и SDD. Примерно так это все работает
"метод подбора значений" в данном случае подразумевает под собой необходимость нахождения своей точки баланса между количеством данных, которые необходимо оптимизировать, частотой процессора, размером ОЗУ, скоростью HDD/SSD и количеством процессов уже запущенных в Вашей системе.
Это и есть "метод подбора значений". При оптимизации Вы можете играть на компе в Need For Speed, понятно, что при прочих равных общих параметрах оптимизация в таком режиме будет идти медленнее, чем на той машине, на которой игра не запущена. Думается, что именно это имелось в виду в документации к ТСЛаб Александр Ганов
Количество потоков оптимизации - 0, означает, что программа будет использовать количество потоков исходя из количества ядер.
В примере на картинке обычный двухъядерный 2ghz xeon. У него по умолчанию 2 потока, так как два ядра. Однако, если используете гипертрейдинговые процессоры, например i7, то количество потоков можно взять по количеству ядер, умножить на два. Скорость оптимизации возрастет значительно.
Остановить оптимизацию, мало памяти - программа остановит оптимизацию, если ресурсы оперативной памяти исчерпаны. Если снять флаг, Windows может увести процессы в SWAP (при использовании 64 бит) или выдать ошибку исключение по памяти, если 32 бит Включить для многоядерных процессоров - настройка доступна, начиная с версии программы 2.1. Это настройка сборщика мусора NET. Например, для многоядерных xeon, больше 8 ядер, настройка обязательна, даже в не зависимости от версии Windows (серверная или нет). С меньшим количеством ядер настройка может не повлиять на загрузку процессора.
Перебор - Прямой перебор параметров с заданным шагом от меньшего к большему, по очереди.
Случайно - Перебор параметров с заданным шагом, в случайном порядке
Genetic - Подробнее в статье API. Plugins. Implementing IOptimizationMethod
Параметры в оптимизацию включаются в свойствах блока.
Ставим границы оптимизации параметра, например 1 - 100, шаг 1. Итого максимум 100 проходов.
Но если поставить 30 проходов, а не максимальное - 100, то оптимизатор пройдет не ровно 30 проходов, а 34-35.
Пояснение:
"Количество проходов" задает минимальное количество проходов. В общем случае количество должно быть кратно количество задействованных параметров.
Выводит значение из скрипта Результат для оптимизации в колонку по имени блока.
Результатов для оптимизации может быть несколько (ограничено здравым смыслом)
В колонке ничего не считается, т.е. просто выводит из блока Результат оптимизации значение в таблицу Результаты оптимизации. Например, какую-то характеристику, оценивающую стратегию.
Если не загружается таблица Результатов оптимизации, проверьте настройку фильтров:
Нажмите кнопку Сохранение параметров во вкладке "Оптимизация". Дайте имя набору параметров. Данный набор параметров будет доступен во вкладке "Параметры"
Вопрос: Есть несколько котировок. Необходимо запустить скрипт по этим котировкам с определенными наборами оптимизируемых параметров и сохранить результаты в файл. Есть ли возможность для решения этой задачи создать дополнительный скрипт, который будет выполнять выше приведенную задачу? Было бы очень удобно поставить скрипт на ночь так, что бы все запланированные оптимизации были выполнены ночью. Так как оптимизации могут длиться 2-3 часа, то было бы удобно запланировать на ночь выполнение нескольких расчетов. Что значительно ускорит процесс оптимизации. Ответ: Встроенными средствами сделать оптимизацию по нескольким задачам в очереди в TSLab нельзя. Т.е. как либо запланировать расписание, или создать очередь из задач нескольких оптимизаций нельзя. У нас есть планы реализовать эти возможности в будущем.
Будет ли в программе оптимизация на GPU? GPU способна делать не все вычисления и в данном случае это технически сделать нельзя, ответ нет.
Данная проблема может остро ощущаться на многоядерных процессорах Xeon Настройка связана со сборщиком мусора Net Framework. Если многоядерный процессор (8 или более ядер) загружается не полностью, попробуйте выставить следующие настройки в программе:
Ядрами управляет не TSLab, а виндоус и CLR .Net Это тонкий момент, который нужно понимать. Все эти настройки "сверху" TSLab. TSLab здесь выступает просто как генератор вычислений. В зависимости от количества ядер и количества процессоров в системе, нагрузку на ядра можно повысить настройками: Для переключения использования сборщика мусора используйте настройку Режим сборщика мусора .NET
В файле TSLabApp.runtimeconfig.json в папке с установленной TSLab C:\Program Files\TSLab\TSLab 2.2 Измените настройки, при выключенной программе, в зависимости от процессора, скорее всего хватит Server: "System.GC.Server": true, - если это сервер или если очень мощная desktop "System.GC.RetainVM": true, - если машина виртуальная дополнительная информация: https://docs.microsoft.com/en-us/dotnet/core/run-time-config/garbage-collector
В случае, если используется двухпроцессорная машина или более: Есть еще настройка не относящаяся к однопроцессорной машине. нужно DOTNET_Thread_UseAllCpuGroups переменную окружения в Windows прописать DOTNET_Thread_UseAllCpuGroups =1 Чтобы настроить среду CLR для распределения потоков из пула потоков по всем группам ЦП. https://docs.microsoft.com/ru-ru/dotnet/core/runtime-config/threading
Некоторая информация:
После настройки необходимо подождать минуту пока кеш заполнится.
"System.GC.HeapHardLimit": 8000000000, ограничение использования оперативной памяти. Этот параметр без необходимости использовать нет смысла. "System.GC.HeapCount": 8 количество КУЧ. Этот параметр имеет смысл ставить, если по умолчанию не удается нагрузить ядра полностью. Параметр должен быть кратен количеству ядер.
Скачать версию TSLab 2.1 можно по ссылке: версия программы TSLab 2.1
Если выше приведенная настройка не помогла и процессоры не нагружаются.
Исходное значение:
<!-- <gcServer enabled="true"/>-->
Измененное значение:
<gcServer enabled="true"/>
Сохраните изменения
Чем быстрее (высокая частота) процессор и чем больше ядер (возможных потоков), тем быстрее оптимизация. Прочитайте статью по теме:
В старых версиях программы можно было в программе выбирать какой именно сборщик мусора использовать. "Включить для многоядерных процессоров" Серверную версию или десктопную. Так как при использовании серверного сборщика на десктопном процессоре вызывает утечки памяти, мы эту возможность убрали. А сама возможность выбирать сборщик мусора есть в файле конфигурации программы. Ядрами управляет не TSLab, а виндоус и CLR .NetЭто тонкий момент, который нужно понимать. Все эти настройки "сверху" TSLab. TSLab здесь выступает просто как генератор вычислений.Файл TSLabApp.runtimeconfig.json в папке с установленной TSLabИзмените настройки, при выключенной программе, в зависимости от процессора, скорее всего хватит Server: "System.GC.Server": true, "System.GC.CpuGroup": true, "System.GC.RetainVM": true, дополнительная информация: P.S. В случае, если используется двухпроцессорная машина: Есть еще настройка не относящаяся к однопроцессорной машине. нужно DOTNET_Thread_UseAllCpuGroups переменную окружения в Windows прописать DOTNET_Thread_UseAllCpuGroups =1
Таблица Результаты оптимизации появляется в начале процесса оптимизации, если не выбран параметр "Сохранить в Excel" на странице Оптимизация. В таблице есть колонка Результат из скрипта. В инструментарии в редакторе есть блок Результат для оптимизации. Код блока есть здесь:
Откройте меню Настроек программы (Файл - Настройки программы).
В окне Настройки программы перейдите во вкладку Оптимизация скриптов.
Установите галку напротив опции Включить для многоядерных процессоров. Нажмите на кнопку Применить.
Поправьте файл конфигурации программы TSLabApp.exe.config Файл находится в папке C:\Program Files\TSLab\TSLab 2.1
После строки <gcServer enabled="true"/> добавьте еще параметры Запись должна быть такой:
В директории с установленным приложением TSLab 2.0 (по умолчанию C:\Program Files (x86)\TSLab 2.0) выберите файл TSLabApp64.exe.config
Скопируйте файл TSLabApp64.exe.config в отдельную директорию, например на Рабочий стол Windiws
Откройте файл TSLabApp64.exe.config в текстовом редакторе (рекомендуем использовать редактор с поддержкой нумерации строк, например Notepad++)
Перейдите на строку №102. Внесите следующие изменения в тексте строки №102:
Замените файл TSLabApp64.exe.config в каталоге с установленным приложением TSLab 2.0 (по умолчанию C:\Program Files (x86)\TSLab 2.0) на измененный файл TSLabApp64.exe.config. Запустите программу
При каждом перезапуске программы, вероятно, необходимо будет повторять пункт №5