пятница, 31 августа 2012 г.

Аспирант я

Сегодня узнал, что теперь я аспирант МФТИ :) Экзамены сданы, все дела по этому поводу сделаны:) Так что я в новом статусе - аспирант МФТИ.
Вот лет 5-6 назад, если бы кто-нибудь сказал бы мне, что я буду аспирантом МФТИ, то я бы не поверил бы ему. Потому что в те времена, во времена первых курсов КГУ, для меня МФТИ было чем-то заоблачным, таким же, как и МГУ, я не думал, что туда можно поступить и там учиться, серьезно, я так не думал :) Но, как оказывается, в жизни может быть все, если поставить цель и этого захотеть. Так что надо пробовать, если чего-то очень хочется, то это сбудется и ты это сделаешь :) Вот так :)

среда, 29 августа 2012 г.

Сдал типа философию я :)

Сегодня проходил экзамен по философии для поступления в аспирантуру. Звучит это как-то скучновато, на самом деле, может быть оно так и есть :) Тем не менее напишу сюда свои ощущения :)

Небольшая история вопроса подготовки к экзамену.
Подготовку я начал дней за 5 до экзамена, потому что вопросов было много - 48 штук, и это не просто вопросы, это вопросы по ФИЛОСОФИИ! Короче, я начал читать и конспектировать материал по вопросам. Дело это муторное, скажу я вам. Писать приходилось много, у меня аж запястье начало болеть на 5 или 7 странице писанины :) В итоге вышло у меня примерно 60-65 страниц написанного от руки текста. Это много. Но когда я закончил писать все это дело, был уже вечер 28 числа! А экзамен 29 утром! Ну и получается, что я толком не повторил ничего :) Думал, что повторю перед экзаменом.
Значится так, экзамен проходил в Долгопрудном (Долгопе, Долгопопе, Черти где и .т.п как угодно) в МФТИ. Звучит все серьезно:) Началось все не очень серьезно, я понял, что абсолютно ничего не могу вспомнить из того, что писал и пытался учить. Как бы ничего страшного, перед экзаменом всегда такое бывает, когда учишь много. Зашли значит все в аудиторию, человек 150 было в ней с 5 или 6 факультетов. Далее, значит, сидим и ждем своего преподавателя, когда он придет и раздаст вопросы каждому. Вот он приходит, я подхожу к нему один из первых, он сразу вспомнил меня :-) и дал мне 2 вопроса: вопросы номер 2 и 22:) "Все круто" - подумал я, и побежал на место готовиться.
Вопрос 2: Учение Гераклита Эфесского. Изменчивость мира и концепция    единства     противоположностей в учении Гераклита.
Вопрос 22: Эмпиризм и рационализм в европейской философии Нового времени   в XVII–XVIII веках. Основные идеи эмпиризма и рационализма и их крупнейшие представители.
Опять же я подумал, что ничего сложного, вроде бы все это читал, да и записями пока можно было воспользоваться, пока люди разбирали вопросы и была суматоха и неразбериха :) Но, вопрос номер 22 я не нашел в своих записях, потому что, как я понял уже раньше, я его не написал, т.к. он был слишком общий, и ан него можно было ответить используя предыдущие вопросы. Короче, я так и сделал.
А после того, как  я подготовился, я понял, что люди уже взяли свои билеты и начали записываться в очередь на сдачу к нашему преподавателю (все же знают что своему преподавателю сдавать лучше?) В итоге, пропустив момент записи в очередь я оказался где-то 16. Это очень далеко, учитывая, что один человек может сдавать экзамен от 30 до 40 минут.
В общем делать нечего, сижу жду. Пока сидел, увидел, что на потолке появилось желтое пятно, от дождя (уже 2й день дождь льет не переставая) и плитка с потолка намокла и упала на пол! Студенты, естественно, начали смеяться, это же забавно, когда ремонт в аудитории недавно сделали, крышу отремонтировали, а она все равно течет :) Ну и в общем на протяжении всего экзамена потолок потихоньку падал и оттуда капала вода :-)
Далее уже начали подходить уже другие преподаватели с кафедры философии, и начали зазывать студентов к себе, чтобы те не ждали и сдавали по быстрее, не задерживали ни себя, ни преподавателей. Ну вот тупо же! Почему если никто не хочет к тебе идти, то надо постоянно напоминать, что ты свободен и чтобы тебя не боялись и шли к тебе? Вот был там мужик один, бородатый такой, он сидел, к нему подошел оидн человек, спросил можно или нет, тот ответил, что можно, студент сел и через час сдал на 5. Потом подошел второй и третий, а после никто не хотел к нему идти, потому что людей стало мало и они хотели к "своим" идти, так он встал, отдал ведомость и ушел:-) Вот это молодец:) Правильный подход, никого не нервировать своими "Свободный преподаватель, подходим, не стесняемся", или вот еще "Молодые люди, есть свободный преподаватель, подходите и сдавайте, зачем сидеть". Бесило это просто.
Ну так вот, когда до меня оставалось уже буквально 1-2 человека, ко мне подошел мужик какой-то, еврей, и сказал, чтобы я шел ему сдавать и не сидел тут. Ррррррр!
Пошел я к нему. Страшновато было немного, потому что фиг знает что за чел такой, из студентов его никто не знает :) Короче, сел я к нему. Он меня спросил первый вопрос, я ему ответил, причем, ответил даже дополнительный вопрос (!). Далее пошел второй вопрос, и тут я сам себя завел в дебри, начал говорить про Бэкона, Декарта и .т.п. А он давай меня спрашивать подробности философии каждого. Я знаю, что я их читал, может даже особенности читал, но я не могу вот сейчас что-то сказать про них, на языке вообще ничего не вертится про них! Говорю ему, какие-то вещи, которые, как я думал, могут быть похожи, но нет. Потом пошла специфика преподавания каждого преподавателя. Он спросил вопрос, который, возможно, на своих лекциях упоминает, делает упор на это, типа это важно, а наш не делает упор на это, и поэтому я этого не могу знать. Спросил он, я сказал, что не припоминаю такого (слово "не помню" лучше вообще забыть, когда ты на физтехе). И потом от него пошел принципиальный вопрос "Вам принципиально получить 5, или можно 4?" Ну, я не гордый, сказал, что мне не принципиально, можно и 4:) Ну вот так:) Получил я 4 :)
Короче тут дело случая и везение сыграло роль. Потому что подойди он минут на 10 попозже, или сначала не ко мне, или сидел бы я подальше от него, то, возможно, я пошел бы к своему и получил бы у него 5 (это я точно знаю).
Ну это все фигня - 4 или 5, формальность:) Так что я рад, что избавился от этого груза, нависающего надо мной последнюю неделю :)

понедельник, 13 августа 2012 г.

Собираем LAMMPS Ubuntu

Запись крайне похожа на ту, что сделана для CentOS, но тут попроще :)
Опять же, нам нужно будет следующее ПО на компьютере
1) Intel(R) Compiler
2) Intel(R) MKL
3) Intel(R) MPI Library 4.0.*

Основная особенность установки LAMMPS на Ubuntu - это то, что тут почти ничего делать не надо :)
Нужно поставить необходимые пакеты, если они уже стоят, то, значит все хорошо

sudo apt-get install build-essential fftw-dev tcsh mpich2 gfortran

После установки качаем LAMMPS (http://lammps.sandia.gov/download.html), распаковываем его и создаем файл /src/MAKE/Makefile.ubuntu следующего содержания


# ubuntu_parallel = Ubuntu 9.10, mpicxx (g++), MPICH2 1.2, FFTW 2.1.3

SHELL = /bin/sh

# System-specific settings

CC = mpicxx
CCFLAGS = -O -DFFT_FFTW -DLAMMPS_GZIP -DMPICH_IGNORE_CXX_SEEK
DEPFLAGS = -M
LINK = $(CC)
LINKFLAGS = -O
USRLIB = -lfftw
SYSLIB =
ARCHIVE = ar
ARFLAGS = -rc
SIZE = size

# Link target

$(EXE): $(OBJ)
$(LINK) $(LINKFLAGS) $(OBJ) $(USRLIB) $(SYSLIB) -o $(EXE)
$(SIZE) $(EXE)

# Library target

lib: $(OBJ)
$(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ)

# Compilation rules

%.o:%.cpp
$(CC) $(CCFLAGS) -c $<

%.d:%.cpp
$(CC) $(CCFLAGS) $(DEPFLAGS) $< > $@

# Individual dependencies

DEPENDS = $(OBJ:.o=.d)
include $(DEPENDS)


Как видно, ничего тут сверхестественного нет, все крайне просто, в отличие от CentOS.

Далее переходим в src и делаем

make ubuntu

После чего файл lmp_ubuntu можно запускать:)

Ссылка:
http://katter-world.blogspot.com/2010/07/install-lammps-on-ubuntu.html

Собираем LAMMPS CentOS 6.2

Сегодня попробовал свои силы на сборке LAMMPS для системы Linux Red Hat CentOS 6.2. Получилось удачно, пакет я собрал.
Итак, что нам нужно для его сборки.
1) Intel(R) Compiler
2) Intel(R) MKL
3) Intel(R) MPI Library 4.0.*

Для начала нужно скачать пакет FFTW библиотек, к сожалению для LAMMPS нужны не самые новые библиотеки, поэтому качаем fftw-2.1.5 с сайта
http://www.fftw.org/fftw-2.1.5.tar.gz

Установка будет состоять из 3-х шагов:
1) Установка FFTW
2) Установка библиотек для LAMMPS
3) Установка LAMMPS

Итак, по порядку:

1) После разархивирования FFTW заходим внутрь и пишем

./configure CC=mpiicc F77=mpiifort FC=mpiifort --prefix=/usr/local/fftw-2.1.5

затем, после успешной конфигурации начинаем сборку

make
make check
make install

Готово.

2) Разархивировали lammps.tar.gz (http:/lammps.sandia.gov/download.html) и заходим

В файлах /lib/reax/Makefile.ifort и lib/meam/Makefile.ifort меняем
F90 =           ifort
на
F90 =           mpiifort
и собираем в каждой папке командой
make -f Makefile.ifort

Далее в lib/poem/ меняем в файле Makefile.icc строчку
CC =            icc
на
CC =            mpiicc
и собираем командой
make -f Makefile.icc

3) Заходим в src
Проверяем установленные пакеты командой
make package-status
Затем редактируем файл MAKE/Makefile.linux, меняя в нем следующие строки:

Комментируем
#MPI_PATH =
#MPI_LIB = -lmpich -lpthread
Исправляем
CC=mpiicc
LINK=mpiicc
FFT_INC = -I/usr/local/fftw-2.1.5/include -DFFT_FFTW
FFT_PATH = -L/usr/local/fftw-2.1.5/lib
FFT_LIB = -lfftw

Вот и все изменения. После этого собираем сам LAMMPS

make linux                                  -              На выходе файл lmp_linux
make makelib                             -              Делаем Makefile для библиотек
make -f Makefile.lib linux         -              Получаем файл liblmp_linux с библиотеками LAMMPS

Ну вот и все:) Получили работающий файл lmp_linux, который готов для параллельной работы.

Хороший сайт:
http://hpclab.blogspot.com/2010/05/quick-install-guide-for-lammps-on-linux.html

пятница, 3 августа 2012 г.

Текстовый редактор vim или vi

После начала работы с кластерами, а также системой Linux я задался вопросом: "Как же удобно и быстро для себя можно редактировать файлы в этих системах (в терминале), не копируя их к себе на компьютер каждый раз?"
Вопрос очень давно меня мучил, т.к. в основном работа ведется в ОС Windows, где все быстрые действия можно делать с помощью мышки, ну или же работа ведется с помощью удобной штуки Far manager, в то время как через терминалы SSH доступа визуальные и графические оболочки в большинстве случаев недоступны. Находясь в этом году на суперкомпьютерной академии в МГУ, я заметил, что многие пользуются редактором vi.
В чем же его удобство?
На первый взгляд он выглядит очень просто. Открывая файл с его помощью

vi myfile 

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


Клавиши перемещения:
h, j, k, l – соответствуют стрелкам влево, вниз, вверх и вправо;
0 («ноль») – в начало текущей строки;
^ - к первому не пробельному символу в строке;
$ – в конец текущей строки;
e – последний символ следующего слова;
w – на слово вправо, первый символ следующего слова;
b – на слово влево;
W – до пробела вправо, переход по длинным словам;
B – до пробела влево, переход по длинным словам;
( - передвинуть курсор назад на предложение (до точки);
) - передвинуть курсор вперед на одно предложение;
} – абзац вниз (до пустой строки);
{ – абзац вверх;
Ctrl+End – перейти на последний символ последней строки файла;
<number>G или <number>gg – перейти на конкретную строку <number> ;
f<symbol> – передвинуться вперед (forward) к символу <symbol> в текущей строке;
F<symbol> – назад (backward) к символу <symbol> в текущей строке;
; – для того что бы повторить последнюю команду f или F;
, - повторяет поиск, но в отличии от «;», в обратном порядке;
t<symbol>/T<symbol> - то же что и описано выше, но при этом курсор устанавливается прямо перед символом, а не на сам символ;
H – передвинуть курсор наверх экрана;
M – передвинуть курсор в центр экрана;
L – передвинуть курсор вниз экрана;
<number>% – передвинуть курсор в соответствующее место документа;
Ctrl+d или Ctrl+f – на страницу вперёд;
Ctrl+u или Ctrl+b – на страницу назад;
% – когда под курсором находиться скобка, то нажатие на % переместит курсор на соответствующую парную скобку(),] или }), при повторном нажатии вернется обратно;
[{ - позволяет переместиться назад по тексту к символу скобки, которая является отрывающей текущий блок кода;
]{ – вперед к закрывающей скобке текущий блок кода;


Примеры использования:
3G - перейти на строку под номером 3;
ft – передвинуть курсор на ближайший символ «f» в строке, потом нажав «;» – перейти на следующий символ «f», если он еще встречается в строке;
gd – перейти к объявлению функции или переменной, которая находиться под курсором;
gD – перемещает к определению глобальной переменной;


Нужная особенность редактора. Если нужно открыть файл на какой-то конкретной строке (допустим, чтобы посмотреть ошибку в этой строке), то можно набрать команду

vi +num myfile

где num - номер строки, например, чтобы открыть файл на 303 строке, нужно набрать

vi +303 myfile 

Для просмотра последней строки файла достаточно написать просто

vi + myfile

После того, как понятно как перемещаться по файлу, можно перейти к командам редактирования.


Клавиши удаления:
x - удалить символ под курсором;
X - удалить символ влево (удалить символ перед курсором);
d<символ(ы)_перемещения> - удаляет с символа под курсором до положения после ввода команды перемещения;
dd - удалить текущую строку;
d<число_строк>d - стирание числа строк начиная с текущей;
d+ - удаляет текущую строку и следующую за ней;
d/<pattern> - удаляет текст начиная с текущего положения курсора до первого встретившегося "pattern", не включая его;
daw - удаляет слово, даже когда курсор находится в середине этого слова;
D - вырежет текст от позиции курсора и до конца текущей строки (аналог d$);
Весь удаляемый текст переносится в буфер обмена, откуда позже может быть вставлен.

Примеры использования:
d^ - удаляет символы с текущего до начала строки;
ciw - удаляет слово под курсором и переходит в режим вставки;
4x - удаляет 4 символы вперед начиная с символа под курсором;

Клавиши удаления с переходом в режим вставки:
s - вырезать текущий символ и оставить редактор в режиме вставки (аналогична xi);
S - вырезать текущую строку и оставить редактор в режиме вставки (аналогична cc);
с - команда аналогичная d, но после удаление переходит в режим ввода;
C - вырезать текст от курсора до конца строки и оставить редактор в режиме вставки;
cc - вырежет текущую строку и оставит редактор в режиме вставки;
r - заменить один символ под курсором;
R - перейти в режим ввода с забиванием текста (режим замены);

Клавиши копирования и вставки:
yy - копирование текущей строки в неименованный буфер;
y<число>y - копирование числа строк начиная с текущей в неименованный буфер;
Y - скопировать весь текст, подобно yy (аналог y$);
p - вставка содержимого неименованного буфера под курсором;
P - вставка содержимого неименованного буфера перед курсором;
]p – подобно p, но автоматически подбирает отступ для вставки кода;


Клавиши отмены:
u – отмена последней команды;
U – отмена изменений во всей строке;
Ctrl+r – отмена отмены;

Переход в режим вставки:
Режим вставки позволяет набирать текст в файле
i – перейти в режим ввода с текущей позиции;
I – переместиться в начало строки и перейти в режим ввода;
a – вставить текст справа от текущего символа;
A – вставить текст в конец текущей строки;
o – перейти в режим ввода с новой строки под курсором;
O – перейти в режим ввода с новой строки над курсором;

Другие не менее полезные действия:
. – повтор последней команды;
J – слияние текущей строки со следующей;
`. – перейти к строке, которая редактировалась последней;
` дважды – переход между двумя последними позициями курсора;
‘ дважды - переход между двумя строками, где находились позиции курсора;
>> – сдвинуть вправо строку (в визуальном режиме – весь выделенный текст;
<< – тоже самое, что и >>, но сдвиг происходит влево;
K – посмотреть man-страницу слова под курсором;
gf – открыть файл с именем, находящимся под курсором;
Ctrl+a – перемещает курсор на ближайшее число и увеличивает его на единицу;
Ctrl+x – перемещает курсор на ближайшее число и уменьшает его на единицу;
~ – меняет регистр букв на противоположный по мере прохождения курсора;
g~~/guu/gUU – меняет регистр на противоположный/нижний/верхний во всей строке;

Это еще не все возможности данного редактора, но все необходимые :)

Информация была взята с сайтов
http://system-administrators.info/?p=1193
http://funix.ru/programs_utilities/klavishi-i-kombinacii-klavish-vim.html