Stata
👉Вернуться к списку инструкций
.png)
Доступные версии на суперкомпьютере НИУ ВШЭ
module load stata/v14.2 # релиз 14.2 от 01.2018
В рамкам имеющейся лицензии пользователям доступна возможность использования Stata-MP на 2 ядрах процессора.
Для большей производительности рекомендуется использовать дополнительный модуль parallel, не имеющий ограничения на количество ядер.
Пользователи: Центр трудовых исследований, любые подразделения НИУ ВШЭ.
Запуск Stata на суперкомпьютере в пакетном режиме с использованием модуля parallel
Для выполнения расчётов пакетном (неинтереактивном) режиме необходимо подготовить .do файл и скрипт-файл для постановки задачи в очередь Slurm. Примеры файлов доступны на суперкомпьютере в каталоге /opt/software/stata/examples/Пример входного файла для Stata, в котором сравнивается производительность вычислений с использованием parfor (stata_parfor.do):
// Установка модуля parallel net install parallel, from (/opt/software/stata/packages/parallel/) replace mata mata mlib index // Передаём в переменную ncores количество выделенных ядер процессора args ncores clear all timer clear set seed 123 local n = 5e6 set obs `n' gen x = runiform() gen y_pll = . clonevar y_ser = y_pll prog def parfor args var forval i=1/`=_N' { qui replace `var' = sqrt(x) in `i' } end timer on 1 // Выполнение алгоритма с использованием модуля parallel parallel initialize `ncores', f parallel, prog(parfor): parfor y_pll timer off 1 timer on 2 // Выполнение алгоритма без использования модуля parallel parfor y_ser timer off 2 list in 1/10 gen diff = y_pll != y_ser tab diff timer list // Разница между последовательной и параллельной версиями di "Parallel is `=round(r(t2)/r(t1),.1)' times faster" exit
Sbatch-скрипт для запуска задачи в очереди (stata.sbatch):
#!/bin/bash #SBATCH --job-name=stata # Название задачи #SBATCH --cpus-per-task=4 # Количество CPU на одну задачу #SBATCH --mail-user=ваша_почта # Укажите ваш email для отправки уведомлений #SBATCH --mail-type=END,FAIL # События, требующие уведомления module load stata # Загрузка модуля Stata # Запуск Sata с файлом stata_parfor.do # Переменная окружения $SLURM_CPUS_PER_TASK передаёт количество выделенных CPU в переменную ncores в скрипте stata -b stata_parfor.do $SLURM_CPUS_PER_TASK
Для постановки задачи в очередь выполните команду sbatch stata.sbatch
Не забудьте скорректировать параметры в скрипте для своих расчетов!
Посмотреть состояние своих задач можно с помощью команды mj
. list in 1/10 +--------------------------------+ | x y_pll y_ser | |--------------------------------| 1. | .3132002 .5596429 .5596429 | 2. | .5559791 .7456401 .7456401 | 3. | .9382851 .9686512 .9686512 | 4. | .7363221 .8580921 .8580921 | 5. | .1924075 .4386429 .4386429 | |--------------------------------| 6. | .1951401 .4417466 .4417466 | 7. | .9509598 .9751717 .9751717 | 8. | .2904454 .5389299 .5389299 | 9. | .8190824 .9050317 .9050317 | 10. | .4882096 .69872 .69872 | +--------------------------------+ . gen diff = y_pll != y_ser . tab diff diff | Freq. Percent Cum. ------------+----------------------------------- 0 | 5,000,000 100.00 100.00 ------------+----------------------------------- Total | 5,000,000 100.00 . timer list 1: 5.90 / 1 = 5.9010 2: 16.81 / 1 = 16.8130 97: 0.36 / 1 = 0.3620 98: 0.40 / 1 = 0.3990 99: 4.94 / 1 = 4.9430 . . // Разница между последовательной и параллельной версиями . di "Parallel is `=round(r(t2)/r(t1),.1)' times faster" Parallel is 2.8 times faster
Дополнительные ресурсы по выполнению расчетов в Stata
Полезные ссылки
- Инструкция по работе с системой HPC TaskMaster
Нашли опечатку?
Выделите её, нажмите Ctrl+Enter и отправьте нам уведомление. Спасибо за участие!
Сервис предназначен только для отправки сообщений об орфографических и пунктуационных ошибках.