Бенчмарк и оценка времени ============================== Обзор -------- Библиотека включает систему оценки времени, которая помогает предсказать, сколько времени займут расчеты ORCA. Это необходимо для планирования крупномасштабных расчетов дескрипторов QSAR. Как это работает ------------ Система оценки времени использует бенчмарк-расчет для калибровки производительности на вашей машине: 1. **Бенчмарк-расчет**: Выполняется одноточечный расчет на бензоле (C₆H₆) для измерения: - Количества базисных функций - Времени одного SCF-цикла - Общего времени расчета 2. **Формула масштабирования**: Для новых молекул система оценивает время, используя: - Масштабирование по размеру молекулы (O(N³.⁵) для DFT расчетов) - Тип метода (SP, Opt, Freq) - Количество процессоров 3. **Масштабирование параметров**: Система автоматически корректирует для разных: - Количество процессоров (accounts for parallel efficiency) - Базисных наборов (масштабирует по размеру) - Функционалов (учитывает вычислительную стоимость) Зачем это нужно --------------- * **Планирование**: Оценка общего времени для больших наборов данных * **Управление ресурсами**: Эффективное распределение вычислительных ресурсов * **Отслеживание прогресса**: Мониторинг прогресса расчетов * **Оптимизация**: Выбор оптимальных параметров для вашего оборудования Запуск бенчмарка ------------------- Через CLI ~~~~~~~~~ .. code-block:: bash orca_descriptors run_benchmark --working_dir ./calculations Бенчмарк использует бензол в качестве стандартной тестовой молекулы и сохраняет результаты в ``.orca_benchmark.json``. Через Python ~~~~~~~~~~~~ .. code-block:: python from orca_descriptors import Orca orca = Orca(working_dir="./calculations") benchmark_data = orca.run_benchmark() print(f"Время SCF-цикла: {benchmark_data['scf_time']:.2f} секунд") print(f"Количество базисных функций: {benchmark_data['n_basis']}") Оценка времени расчета ---------------------------- Через CLI ~~~~~~~~~ .. code-block:: bash orca_descriptors approximate_time --molecule CCO --method_type Opt Это оценивает время без запуска реального расчета. Через Python ~~~~~~~~~~~~ .. code-block:: python from orca_descriptors import Orca from rdkit.Chem import MolFromSmiles, AddHs orca = Orca(working_dir="./calculations") mol = AddHs(MolFromSmiles("CCO")) estimated_time = orca.estimate_calculation_time(mol) print(f"Оценка времени: {estimated_time:.2f} секунд") Автоматическое масштабирование параметров --------------------------- Система автоматически масштабирует данные бенчмарка для разных параметров. Вам не нужно перезапускать бенчмарк, если вы меняете: * **Количество процессоров**: Автоматически учитывает эффективность параллелизации * **Базисный набор**: Масштабирует на основе размера базисного набора (O(N³.⁵)) * **Функционал**: Корректирует для относительной вычислительной стоимости Пример: Если ваш бенчмарк был запущен с 1 процессором и def2-SVP, вы можете оценить время для 4 процессоров и def2-TZVP без перезапуска бенчмарка. Расположение файла бенчмарка ----------------------- Данные бенчмарка сохраняются в:: /.orca_benchmark.json Этот файл содержит: * Использованные функционал и базисный набор * Количество процессоров * Количество базисных функций * Время SCF-цикла * Общее время расчета Вы можете использовать этот файл в разных рабочих директориях, если используете то же оборудование и версию ORCA.