проверка mpi программ в ejudge

Обсуждение вопросов, связанных с системой проведения турниров ejudge.
Post Reply
Rinat Minyazev
Posts:14
Joined:06 January 2017, 08:49
проверка mpi программ в ejudge

Post by Rinat Minyazev » 18 March 2017, 22:23

Добрый день!
Хочу сделать контест для проверки MPI программ. Поставил mpich. Написал скрипты mpicc-version.in и mpicc.in (за образец взял скрипты для gcc). Переконфигурировал систему, новый компилятор (mpicc) появился в списке для отправки решения в контесте.

При запуске программ на проверку надо указывать число запускаемых процессов, например так: mpiexec -n 4 ./programma (запуститься локально на 4 процессах).

Вопрос: как указать в контесте, чтобы проверка решения делалась с приставкой mpiexec -n 4 ?

(Ejudge - последняя версия, ubuntu server 16.04 x64).

cher
Posts:1153
Joined:13 March 2004, 17:00
Contact:

Re: проверка mpi программ в ejudge

Post by cher » 19 March 2017, 19:26

Попробуйте настройть start_cmd:

https://ejudge.ru/wiki/index.php/Serve. ... :start_cmd

Rinat Minyazev
Posts:14
Joined:06 January 2017, 08:49

Re: проверка mpi программ в ejudge

Post by Rinat Minyazev » 20 March 2017, 07:22

Благодарю! Правильно ли я понимаю, что для использования своего скрипта для запуска я пишу свою секцию [tester] в serve.conf, там для параметра start_cmd указываю свой скрипт (myscript.bash например)?

Что имеется ввиду под этой строкой в инструкции по Вашей ссылке: "Кроме того до запуска вспомогательной программы настраиваются все перенаправления ввода-вывода...", в каком случае это делать? Посмотрел в файле javarun, там вроде никаких перенаправлений нет.

cher
Posts:1153
Joined:13 March 2004, 17:00
Contact:

Re: проверка mpi программ в ejudge

Post by cher » 20 March 2017, 08:19

Эта опция должна быть в разделе [problem]

Code: Select all

start_cmd = "runmpi.sh"
скрипт runmpi.sh может иметь такой вид:

Code: Select all

#! /bin/sh
exec mpiexec -n 4 $@

Rinat Minyazev
Posts:14
Joined:06 January 2017, 08:49

Re: проверка mpi программ в ejudge

Post by Rinat Minyazev » 20 March 2017, 19:06

Спасибо! Это помогло! Программа запускается, но при прогоне теста на первой же задаче стандартного контеста ejudge (сложение 2 чисел) выдает Run-time error на 1 тесте, в отчете пишет:

...
YOUR APPLICATION TERMINATED WITH THE EXIT STRING: File size limit exceeded (signal 25)
This typically refers to a problem with your application.
Please see the FAQ page for debugging suggestions

--- Stderr: size 0 ---

--- Resource usage ---
program: { utime=8, stime=0, ptime=8, rtime=147, maxvsz=7663616, maxrss=3473408, nvcsw=69, nivcsw=11 }


Программу запускаю на 4 процессах, числа принимаю, складываю и выдаю в 0 процессе, остальные по факту отрабатывают вхолостую, использую стандартные функции scanf, printf.

увеличивал параметры:
Maximum virtual memory size:
Maximum stack size:
до 512M и 64M соответвстенно, не помогает, в чем может быть причина?

cher
Posts:1153
Joined:13 March 2004, 17:00
Contact:

Re: проверка mpi программ в ejudge

Post by cher » 20 March 2017, 21:39

max_file_size?
Судя по диагностике.

Rinat Minyazev
Posts:14
Joined:06 January 2017, 08:49

Re: проверка mpi программ в ejudge

Post by Rinat Minyazev » 21 March 2017, 12:44

Большое спасибо! Мне помогло!

Rinat Minyazev
Posts:14
Joined:06 January 2017, 08:49

Re: проверка mpi программ в ejudge

Post by Rinat Minyazev » 22 March 2017, 00:25

Еще такой вопрос возник, если указывать в serve.cfg у параметров задачи свой скрипт в start_cmd, то он используется всегда, не зависимо от того на каком языке сдается задача, мне же нужно, чтобы мой скрипт запускался, только при сдаче через определенный компилятор (mpicc), можно ли в рамках настроек ejudge это сделать? (например добавив новую секцию [tester] со своими настройками в serve.cfg) ?

cher
Posts:1153
Joined:13 March 2004, 17:00
Contact:

Re: проверка mpi программ в ejudge

Post by cher » 22 March 2017, 09:44

Не лучше ли отдельную задачу сделать для MPI?
И разрешить использование только одного компилятора c помощью enable_language?

Rinat Minyazev
Posts:14
Joined:06 January 2017, 08:49

Re: проверка mpi программ в ejudge

Post by Rinat Minyazev » 22 March 2017, 14:23

да, можно, отдельный контест сделать для задач на MPI, просто удобнее, когда 1 общий контест с набором задач, и каждую задачу студент сначала решает и сдает на одном языке, потом ту же задачу сдает на другом.

я так понимаю, что поддержка разных вариантов секции [tester], реализована в коде самого ejudge?

cher
Posts:1153
Joined:13 March 2004, 17:00
Contact:

Re: проверка mpi программ в ejudge

Post by cher » 22 March 2017, 14:41

[tester] лучше не трогать. Она, в общем, не нужна и почти игнорируется.

Все-таки, разве не удобнее сделать две задачи в рамках одного контеста?

Rinat Minyazev
Posts:14
Joined:06 January 2017, 08:49

Re: проверка mpi программ в ejudge

Post by Rinat Minyazev » 22 March 2017, 16:59

Лучше я сделаю полностью отдельные контесты, чтобы не было путаницы, на каком языке можно, на каком нельзя писать решение задачи.

Post Reply