예제 #1
0
    def test_submit_script_with_num_cores_per_mpiproc(self):
        """
        Test to verify if scripts works fine if we pass only 
        num_cores_per_mpiproc value
        """
        from aiida.scheduler.datastructures import JobTemplate
        from aiida.common.datastructures import CodeInfo, code_run_modes

        s = SlurmScheduler()

        job_tmpl = JobTemplate()
        job_tmpl.job_resource = s.create_job_resource(
            num_machines=1,
            num_mpiprocs_per_machine=1,
            num_cores_per_mpiproc=24)
        job_tmpl.uuid = str(uuid.uuid4())
        job_tmpl.max_wallclock_seconds = 24 * 3600
        code_info = CodeInfo()
        code_info.cmdline_params = [
            "mpirun", "-np", "23", "pw.x", "-npool", "1"
        ]
        code_info.stdin_name = 'aiida.in'
        job_tmpl.codes_info = [code_info]
        job_tmpl.codes_run_mode = code_run_modes.SERIAL

        submit_script_text = s.get_submit_script(job_tmpl)

        self.assertTrue('#SBATCH --no-requeue' in submit_script_text)
        self.assertTrue('#SBATCH --time=1-00:00:00' in submit_script_text)
        self.assertTrue('#SBATCH --nodes=1' in submit_script_text)
        self.assertTrue('#SBATCH --ntasks-per-node=1' in submit_script_text)
        self.assertTrue('#SBATCH --cpus-per-task=24' in submit_script_text)

        self.assertTrue( "'mpirun' '-np' '23' 'pw.x' '-npool' '1'" + \
                         " < 'aiida.in'" in submit_script_text )
예제 #2
0
    def test_submit_script(self):
        """
        Test the creation of a simple submission script.
        """
        from aiida.scheduler.datastructures import JobTemplate
        from aiida.common.datastructures import CodeInfo, code_run_modes

        s = SlurmScheduler()

        job_tmpl = JobTemplate()
        job_tmpl.uuid = str(uuid.uuid4())
        job_tmpl.job_resource = s.create_job_resource(
            num_machines=1, num_mpiprocs_per_machine=1)
        job_tmpl.max_wallclock_seconds = 24 * 3600
        code_info = CodeInfo()
        code_info.cmdline_params = [
            "mpirun", "-np", "23", "pw.x", "-npool", "1"
        ]
        code_info.stdin_name = 'aiida.in'
        job_tmpl.codes_info = [code_info]
        job_tmpl.codes_run_mode = code_run_modes.SERIAL

        submit_script_text = s.get_submit_script(job_tmpl)

        self.assertTrue(submit_script_text.startswith('#!/bin/bash'))

        self.assertTrue('#SBATCH --no-requeue' in submit_script_text)
        self.assertTrue('#SBATCH --time=1-00:00:00' in submit_script_text)
        self.assertTrue('#SBATCH --nodes=1' in submit_script_text)

        self.assertTrue( "'mpirun' '-np' '23' 'pw.x' '-npool' '1'" + \
                         " < 'aiida.in'" in submit_script_text )
예제 #3
0
    def test_submit_script_with_num_cores_per_machine(self):
        """
        Test to verify if script works fine if we specify only
        num_cores_per_machine value.
        """
        from aiida.scheduler.datastructures import JobTemplate
        from aiida.common.datastructures import CodeInfo, code_run_modes

        s = PbsproScheduler()

        job_tmpl = JobTemplate()
        job_tmpl.job_resource = s.create_job_resource(
            num_machines=1,
            num_mpiprocs_per_machine=2,
            num_cores_per_machine=24
        )
        job_tmpl.uuid = str(uuid.uuid4())
        job_tmpl.max_wallclock_seconds = 24 * 3600
        code_info = CodeInfo()
        code_info.cmdline_params = ["mpirun", "-np", "23",
                                    "pw.x", "-npool", "1"]
        code_info.stdin_name = 'aiida.in'
        job_tmpl.codes_info = [code_info]
        job_tmpl.codes_run_mode = code_run_modes.SERIAL

        submit_script_text = s.get_submit_script(job_tmpl)

        self.assertTrue('#PBS -r n' in submit_script_text)
        self.assertTrue(submit_script_text.startswith('#!/bin/bash'))

        self.assertTrue('#PBS -l select=1:mpiprocs=2' in submit_script_text)
        # Note: here 'num_cores_per_machine' should NOT override the mpiprocs

        self.assertTrue("'mpirun' '-np' '23' 'pw.x' '-npool' '1'" +
                        " < 'aiida.in'" in submit_script_text)
예제 #4
0
    def test_submit_script(self):
        """
        Test to verify if scripts works fine with default options
        """
        from aiida.scheduler.datastructures import JobTemplate
        from aiida.common.datastructures import CodeInfo, code_run_modes

        s = PbsproScheduler()

        job_tmpl = JobTemplate()
        job_tmpl.job_resource = s.create_job_resource(num_machines=1, num_mpiprocs_per_machine=1)
        job_tmpl.uuid = str(uuid.uuid4())
        job_tmpl.max_wallclock_seconds = 24 * 3600
        code_info = CodeInfo()
        code_info.cmdline_params = ["mpirun", "-np", "23", "pw.x", "-npool", "1"]
        code_info.stdin_name = 'aiida.in'
        job_tmpl.codes_info = [code_info]
        job_tmpl.codes_run_mode = code_run_modes.SERIAL

        submit_script_text = s.get_submit_script(job_tmpl)

        self.assertTrue('#PBS -r n' in submit_script_text)
        self.assertTrue(submit_script_text.startswith('#!/bin/bash'))
        self.assertTrue('#PBS -l walltime=24:00:00' in submit_script_text)
        self.assertTrue('#PBS -l select=1' in submit_script_text)
        self.assertTrue("'mpirun' '-np' '23' 'pw.x' '-npool' '1'" + \
                        " < 'aiida.in'" in submit_script_text)
예제 #5
0
    def test_submit_script_with_num_cores_per_mpiproc(self):
        """
        Test to verify if scripts works fine if we pass only
        num_cores_per_mpiproc value
        """
        from aiida.scheduler.datastructures import JobTemplate
        from aiida.common.datastructures import CodeInfo, code_run_modes

        scheduler = TorqueScheduler()

        job_tmpl = JobTemplate()
        job_tmpl.shebang = '#!/bin/bash'
        job_tmpl.job_resource = scheduler.create_job_resource(
            num_machines=1,
            num_mpiprocs_per_machine=1,
            num_cores_per_mpiproc=24)
        job_tmpl.uuid = str(uuid.uuid4())
        job_tmpl.max_wallclock_seconds = 24 * 3600
        code_info = CodeInfo()
        code_info.cmdline_params = [
            "mpirun", "-np", "23", "pw.x", "-npool", "1"
        ]
        code_info.stdin_name = 'aiida.in'
        job_tmpl.codes_info = [code_info]
        job_tmpl.codes_run_mode = code_run_modes.SERIAL

        submit_script_text = scheduler.get_submit_script(job_tmpl)

        self.assertTrue('#PBS -r n' in submit_script_text)
        self.assertTrue(submit_script_text.startswith('#!/bin/bash'))
        self.assertTrue(
            '#PBS -l nodes=1:ppn=24,walltime=24:00:00' in submit_script_text)
        self.assertTrue("'mpirun' '-np' '23' 'pw.x' '-npool' '1'" +
                        " < 'aiida.in'" in submit_script_text)
예제 #6
0
    def test_submit_script(self):
        """
        Test the creation of a simple submission script.
        """
        from aiida.scheduler.datastructures import JobTemplate
        from aiida.common.datastructures import CodeInfo, code_run_modes

        s = LsfScheduler()

        job_tmpl = JobTemplate()
        job_tmpl.shebang = '#!/bin/bash'
        job_tmpl.uuid = str(uuid.uuid4())
        job_tmpl.job_resource = s.create_job_resource(tot_num_mpiprocs=2,
                                                      parallel_env='b681e480bd.cern.ch')
        job_tmpl.max_wallclock_seconds = 24 * 3600 
        code_info = CodeInfo()
        code_info.cmdline_params = ["mpirun", "-np", "2", "pw.x", "-npool", "1"]
        code_info.stdin_name = 'aiida.in'
        job_tmpl.codes_info = [code_info]
        job_tmpl.codes_run_mode = code_run_modes.SERIAL

        submit_script_text = s.get_submit_script(job_tmpl)


        self.assertTrue( submit_script_text.startswith('#!/bin/bash') )

        self.assertTrue( '#BSUB -rn' in submit_script_text )
        self.assertTrue( '#BSUB -W 24:00' in submit_script_text )
        self.assertTrue( '#BSUB -n 2' in submit_script_text )

        self.assertTrue( "'mpirun' '-np' '2' 'pw.x' '-npool' '1'" + \
                         " < 'aiida.in'" in submit_script_text )