Користувальницькі налаштування

Налаштування сайту


sage_tricks

Розбіжності

Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.

Посилання на цей список змін

Порівняння попередніх версійПопередня ревізія
Наступна ревізія
Попередня ревізія
sage_tricks [2014/07/27 10:48] wombatsage_tricks [2015/03/24 09:43] (поточний) wombat
Рядок 1: Рядок 1:
 +===== Запуск произвольных программ на Sage-сервере =====
 +
 +Чтобы запустить программу, написанную не на Python, а на других языках программирования (C/C++, Fortran, ...), на Sage-сервере, используя Sage Notebook только как графический веб-интерфейс для этого, можно:
 +
 +**1.** //**Загрузить**// в какой-либо рабочий лист (например, новый) свой файл с программой. Назовём его для примера ''program.c''
 +
 +**2.** //**Скомпилировать**// программу в исполнимый файл. Для этого в одной из ячеек рабочего листа выполнить команды:
 +
 +  os.chdir(DATA)
 +  os.system('gcc -o program.bin -program.c')
 +
 +или
 +
 +  os.system('cc -lm -fopenmp -o program.bin program.c')
 +
 +или
 +
 +  os.system("gfortran -o program.bin *.f90")
 +  
 +
 +**3.** Затем //**выполнить**// скомпилированную программу
 +
 +  os.chdir(DATA)
 +  os.system('./program.bin')
 +
 +==== Примечание: Вывод на экран ====
 +
 +Если в программе используется вывод чего-либо на экран (например, ''printf()'' в языке C), то программа будет работать только тогда, когда её рабочий лист открыт в окне браузера. Это связано с тем, что вывод на экран буферизируется, и когда вы закрываете рабочий лист, буфер начинает заполняться, так как реального вывода на экран не происходит. После заполнения буфера ядро ОС приостанавливает работу программы до тех пор, пока всё накопившееся в буфере не будет //реально// выведено на экран.
 +
 +Чтобы избежать остановки расчётов через пару минут после закрытия браузера, существует несколько вариантов:
 +
 +  * Не использовать вывод на экран в программе вообще (выкинуть все ''printf()''-ы) //(плохой, неудобный вариант)//;
 +  * Вместо вывода на экран запрограммировать вывод в файл (заменить все ''printf(...)'' на ''fprintf(file,...)'') //(плохой, негибкий вариант)//;
 +  * Перенаправить вывод программы в файл средствами командной оболочки (запускать как ''./program.bin > program.log'') //(хороший, гибкий вариант)//;
 +
 +FIXME Если использован последний из вариантов (хороший, годный), то вывод программы можно всегда проверить вручную, выполнив ''**(а оно не выполнится!!!)**''
 +
 +  os.chdir(DATA)
 +  os.system('tail program.log')
 +
 +
 +===== Загрузка архива на Sage-сервер =====
 +
 +Если на сервер нужно загрузить сразу несколько файлов или просто сжать файлы для передачи, вместо самих файлов можно загрузить архив, содержащий их. Тогда для работы с этими файлами в одной из ячеек соответствующего рабочего листа Sage нужно выполнить команду распаковки загруженного архива. В зависимости от типа архива, команды могут быть такими:
 +
 +  os.chdir(DATA) # вход в каталог -- общая для всех
 +  os.system('unzip infinite_cycle.zip')
 +  os.system('tar -xf infinite_cycle.tar.xz')
 +  os.system('tar -xf infinite_cycle.tar.bz2')
 +  os.system('tar -xf infinite_cycle.tar.gz')
 +  os.system('unxz infinite_cycle.c.xz')
 +  os.system('bunzip2 infinite_cycle.c.bz2')
 +  os.system('gunzip infinite_cycle.c.gz')  
 +
 +Эти команды подразумевают, что в архиве находится сама программа (состоящая из одного или более файлов), а не вложенный каталог, содержащий программу. Поэтому нужно либо архивировать файлы с текстами программы напрямую (в корень архива), либо после распаковки переходить в распакованный вложенный каталог с файлами программы.
 +
 +
 ===== Тонкая настройка matplotlib ===== ===== Тонкая настройка matplotlib =====
  
sage_tricks.1406458083.txt.bz2 · Востаннє змінено: повз wombat