Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Ядерно-физические приборы (7 сем) / КручининПА_Лаб8_отчет

.docx
Скачиваний:
0
Добавлен:
21.04.2026
Размер:
1.04 Mб
Скачать

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ ЯДЕРНЫЙ УНИВЕРСИТЕТ «МИФИ»

Институт Космофизики НИЯУ МИФИ

Кафедра «Экспериментальной ядерной физики и космофизики»

Отчет по лабораторной работе на тему:

«Знакомство с ОС Linux и командной оболочкой Bash, используемых при обработке и анализе данных космофизических и наземных экспериментов»

Выполнил

Студент группы Б19-104

Кручинин Павел Алексеевич

Проверил преподаватель

Юлбарисов Рустам Фаритович

Москва - 2022 г.

Цель работы: приобрести опыт работы в оболочке Bash и удаленной работы с сервером. Осуществить многопоточную обработку данных на кластере, используя в качестве примера измерения, выполненные в эксперименте PAMELA.

Введение

Bash — это усовершенствованная и модернизированная вариация Bourne shell. Ее название происходит от англ. Bourne again shell (еще одна оболочка Борна). В настоящее время является стандартной оболочкой в большинстве дистрибутивов Linux.

Интерпретатор Bash имеет множество внутренних и внешних команд. Внутренние команды встроены непосредственно в оболочку и при выполнении не порождают новый процесс. Внешние являются частью операционной системы и представлены бинарными исполняемыми файлами в /bin. После имени команды могут указываться дополнительные опции — ключи, а также один или несколько параметров (аргументов).

В операционной системе Linux существует система прав доступа к файлам. Каждый файл или директория обладает тремя параметрами доступа: чтение (r — read), запись (w — write), исполнение (x — execituion).

Выделяют три категории пользователей, для которых устанавливаются права доступа: владелец (u — user), группа (g — group), остальные (o — other).

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

Постановка заданий в очередь.

Команда qsub предназначена для постановки задания с различными параметрами в одну из существующих очередей. Предположим, у нас есть скрипт с описанием задания под названием task.sh. Его постановка в очередь queue выглядит следующим образом:  $ qsub -q queue task.sh Ключ -q указывает на выбор очереди с названием, указанным после пробела. После успешной постановки в очередь задания Torque возвращает его идентификатор (job identifier). Идентификатор необходим для любого действия, затрагивающего задание, такого как проверка статуса задания, модификация задания, отслеживание или удаление задания. Опция -v позволяет передавать заданию переменные окружения из текущей терминальной сессии. Синтаксис использования этого ключа выглядит следующим образом:  $ qsub -q queue -v variable_list task.sh где variable_list — это перечень переменных в формате variable или variable=value, разделенных запятыми.

Выполнение работы

В лабораторной работе использовались экспериментальные данные. Все данные Level3 разбиты на классы, каждому классу соответствует суточный файл, данные в котором организованны в виде массивов длинной в число событий в сутки, число строк такого массива соответствует числу событий. Число столбцов может быть разным. Переменная может определяться как для всех зарегистрированных событий (триггеров) в сутки, так и для части из них, в зависимости от того, для каких именно событий определена переменная.

В процессе лабораторной работы использовались три переменные:

1) dEdxtof – Ионизационные потери (в «mip») в каждой плоскости ВПС (6 плоскостей). Данная переменная относится к классу ACToF (переменные системы антисовпадений и времяпролётной системы) и представляет собой массив из 6 столбцов. Каждый столбец соответствует плоскости ВПС.

2) Rig – измеренная трековой системой жёсткость (ГВ). Переменная относится к классу Tracker (Переменные трековой системы) и представляет столбец значений жесткости для каждого зарегистрированного события. Значения жесткостей определены у событий, для которых восстановлен трек, поэтому размер этой переменной меньше, чем dEdxtof.

3) Event – номер триггера однотрекового события. Относится к классу NTrack (Число треков различных типов а также синглетов). Переменная представляет собой столбец.

Для обработки данных необходимо определенное количество процессов выполнить одновременно. Для этого их требуется поставить в очередь. Далее приведены скрипты, посылающие задачи на PBS.

Скрипт Cyrcle.sh: запускает цикл передачи параметра day (номер дня) в скрипт DI.sh (постановка в очередь).

for ((i=300; i<320; i++))

do

echo $i

qsub -q pamela -v day=$i DI.sh

done

Скрипт DI.sh: принимает параметр day и с данным значением запускает код DrawIon.m, предназначенный для построения графика зависимости ионизационных потерь в плоскости ВПС от жесткости.

#PBS -k oe -j oe

#PBS -W umask=0002

date

cd $PBS_O_WORKDIR

echo HOST: $HOSTNAME

echo PWD=$PWD

date

cd /lustre/home/kruchinin/PAMELA/lab8/

/lustre/incos/MatLab/R2020a/bin/matlab -nodesktop -nodisplay -ingleCompThread -r "DrawIon('$day')"

Скрипт DrawIon.m: строит зависимость ионизационных потерь в плоскости ВПС от жесткости для дня day. В данном варианте данная зависимость реализуется для потерь в первой плоскости ВПС.

function [a] = DrawIon(day)

load(['/lustre/PAMELA/Experiment/10red/std/L3idealUpd2/Mat/ACToF/ACToF_' num2str(day) '.mat'],'dEdxtof');

load(['/lustre/PAMELA/Experiment/10red/std/L3idealUpd2/Mat/NTrack/NTrack_' num2str(day) '.mat'],'Event');

load(['/lustre/PAMELA/Experiment/10red/std/L3idealUpd2/Mat/Tracker/Tracker_' num2str(day) '.mat'],'Rig');

p = plot(Rig,dEdxtof(Event,1), '.', "LineStyle","none", 'Markersize',2)

xlabel('Rig, GV')

ylabel('dE/dx, mip')

xlim([0 16])

ylim([0 16])

saveas(p, ['DrIon_day_' num2str(day) '.png'])

%If there isn't error

a=1;

end

Ниже представлены примеры результатов работы после завершения работы на PBS.

Рис.1 График зависимости ионизационных потерь от жесткости для 300 дня

Рис.2 График зависимости ионизационных потерь от жесткости для 305 дня

Рис.3 График зависимости ионизационных потерь от жесткости для 310 дня

На полученных графиках можно выделить две характерные линии, которые стремятся к определенному значению ионизационных потерь при увеличении жесткости. События для линии, которая расположена выше, соответствуют ядрам гелия He4. Для нижней «ветви» соответствуют протоны. Так как протоны и ядра гелия делают основной вклад в химический состав космических лучей, то этих событий значительно больше. В области между линиями гелия и протона, а также на их границах можно выделить события, соответствующим ядрам гелия He3, дейтерию. В области малых значений жесткости и ионизационных потерь происходит регистрация положительных пионов и позитронов.

Заключение

В ходе лабораторной работы приобретен опыт работы в оболочке Bash и удаленной работы с сервером. Осуществлена многопоточная обработка данных на кластере, используя в качестве примера измерения, выполненные в эксперименте PAMELA.

Начало работы связано со знакомством с Bash. В результате данного этапа приобретены навыки работы с терминалом и сервером.

Далее производилась обработка данных эксперимента PAMELA на сервере. По итогу данного этапа был построена зависимость ионизационных потерь в плоскости ВПС от жесткости заряженной частицы.

Затем производилась работа с системой пакетной обработки Torque. Написаны скрипты для постановки в очередь задач и построения зависимостей для различных дней работы эксперимента PAMELA. В результате получены зависимости ионизационных потерь от жесткости для 300 – 319 дня работы PAMELA. Примеры показаны на рис.1-3.

Все скрипты и графики располагаются в директории:

/lustre/home/kruchinin/PAMELA/lab8