PU! Setting up parallel universe in your pool and when (not!) to - - PowerPoint PPT Presentation

pu
SMART_READER_LITE
LIVE PREVIEW

PU! Setting up parallel universe in your pool and when (not!) to - - PowerPoint PPT Presentation

PU! Setting up parallel universe in your pool and when (not!) to use it HTCondor Week 2018 Madison, WI Jason Patton (jpatton@cs.wisc.edu) Center for High Throughput Computing Department of Computer Sciences University of Wisconsin-Madison


slide-1
SLIDE 1

PU!

Setting up parallel universe in your pool and when (not!) to use it

HTCondor Week 2018 – Madison, WI

Jason Patton (jpatton@cs.wisc.edu)

Center for High Throughput Computing Department of Computer Sciences University of Wisconsin-Madison

slide-2
SLIDE 2

› Requires more resources than a single

execute machine can provide, or

› Needs a list of machines prior to runtime, or › Assumes child processes will run (and exit)

  • n all machines at the same time

Imagine some software…

2

Examples:

  • MPI
  • Master-Worker frameworks (some, not all)
  • Server-Client testing (networking, database)
slide-3
SLIDE 3

› All slots for a job are claimed by the

“dedicated scheduler” before the job runs

› Each slot is given a node number ($(NODE)) › Execution begins simultaneously › By default, all slots terminate when the

executable on the "Node 0” slot exits

› Slots share a single job ad and a spool

directory on the submit machine (for

condor_chirp)

What is parallel universe?

3

slide-4
SLIDE 4

› Cannot be made to fit on a single machine › Needs a list of machines prior to runtime › Needs simultaneous execution on slots

Use parallel universe when a job…

4

Classic example: You have a MPI job that cannot fit

  • n one machine, and you don’t have a HPC cluster.

Example helper script for Open MPI: openmpiscript

slide-5
SLIDE 5

› When submitting MPI jobs that could be

made to fit on a single machine

› Break these up in to multicore vanilla

universe jobs… MPI works well on single machines (core binding, shared memory, single fs, etc.)

Don’t use parallel universe…

5

slide-6
SLIDE 6
  • 1. machine_count = 8
  • 2. Dedicated scheduler claims idle slots

(slots become Claimed/Idle) until it has 8 slots that match job requirements

  • 3. Job execution begins on all slots

simultaneously

  • 4. Processes on all slots terminate when the

process on node 0 exits

  • 5. Slots return to Claimed/Idle state

Example parallel universe job life cycle

6

slide-7
SLIDE 7

Example parallel universe job

7

universe = parallel executable = setup.sh arguments = $(NODE)

transfer_input_files = master.sh,worker.sh

  • utput = out.$(CLUSTER).$(NODE)

error = err.$(CLUSTER).$(NODE) log = log.$(CLUSTER) request_cpus = 1 request_memory = 1G machine_count = 8 queue #!/usr/bin/env bash node=$1 # check if on node 0 if (( $node == 0 )); then # run master program ./master.sh else # run worker program ./worker.sh fi

setup.sh queue 2?

slide-8
SLIDE 8

Example parallel universe job life cycle

8

$ condor_status Name State Activity slot1@execute1 Claimed Busy slot2@execute1 Claimed Busy slot3@execute1 Unclaimed Idle slot4@execute1 Claimed Busy slot1@execute2 Unclaimed Idle slot2@execute2 Unclaimed Idle slot3@execute2 Claimed Busy slot4@execute2 Unclaimed Idle slot1@execute3 Unclaimed Idle slot2@execute3 Unclaimed Idle

Job Submitted

slide-9
SLIDE 9

Example parallel universe job life cycle

9

$ condor_status Name State Activity slot1@execute1 Claimed Busy slot2@execute1 Claimed Busy slot3@execute1 Unclaimed Idle slot4@execute1 Claimed Busy slot1@execute2 Unclaimed Idle slot2@execute2 Unclaimed Idle slot3@execute2 Claimed Busy slot4@execute2 Unclaimed Idle slot1@execute3 Unclaimed Idle slot2@execute3 Unclaimed Idle

Job Submitted

slide-10
SLIDE 10

Example parallel universe job life cycle

10

$ condor_status Name State Activity slot1@execute1 Claimed Busy slot2@execute1 Claimed Busy slot3@execute1 Claimed Idle slot4@execute1 Claimed Busy slot1@execute2 Claimed Idle slot2@execute2 Claimed Idle slot3@execute2 Claimed Busy slot4@execute2 Claimed Idle slot1@execute3 Claimed Idle slot2@execute3 Claimed Idle

Negotiation Cycle #1

slide-11
SLIDE 11

Example parallel universe job life cycle

11

$ condor_status Name State Activity slot1@execute1 Claimed Busy slot2@execute1 Claimed Busy slot3@execute1 Claimed Idle slot4@execute1 Claimed Busy slot1@execute2 Claimed Idle slot2@execute2 Claimed Idle slot3@execute2 Claimed Busy slot4@execute2 Claimed Idle slot1@execute3 Claimed Idle slot2@execute3 Claimed Idle

Negotiation Cycle #2

slide-12
SLIDE 12

Example parallel universe job life cycle

12

$ condor_status Name State Activity slot1@execute1 Claimed Busy slot2@execute1 Claimed Busy slot3@execute1 Claimed Idle slot4@execute1 Unclaimed Idle slot1@execute2 Claimed Idle slot2@execute2 Claimed Idle slot3@execute2 Claimed Busy slot4@execute2 Claimed Idle slot1@execute3 Claimed Idle slot2@execute3 Claimed Idle

slide-13
SLIDE 13

Example parallel universe job life cycle

13

$ condor_status Name State Activity slot1@execute1 Claimed Busy slot2@execute1 Claimed Busy slot3@execute1 Claimed Idle slot4@execute1 Claimed Idle slot1@execute2 Claimed Idle slot2@execute2 Claimed Idle slot3@execute2 Claimed Busy slot4@execute2 Claimed Idle slot1@execute3 Claimed Idle slot2@execute3 Claimed Idle

Negotiation Cycle #3

slide-14
SLIDE 14

Example parallel universe job life cycle

14

$ condor_status Name State Activity slot1@execute1 Claimed Busy slot2@execute1 Claimed Busy slot3@execute1 Claimed Idle slot4@execute1 Claimed Idle slot1@execute2 Claimed Idle slot2@execute2 Claimed Idle slot3@execute2 Claimed Busy slot4@execute2 Claimed Idle slot1@execute3 Claimed Idle slot2@execute3 Claimed Idle

Negotiation Cycle #4

slide-15
SLIDE 15

Example parallel universe job life cycle

15

$ condor_status Name State Activity slot1@execute1 Claimed Busy slot2@execute1 Claimed Busy slot3@execute1 Claimed Idle slot4@execute1 Claimed Idle slot1@execute2 Claimed Idle slot2@execute2 Claimed Idle slot3@execute2 Claimed Busy slot4@execute2 Claimed Idle slot1@execute3 Claimed Idle slot2@execute3 Claimed Idle

Negotiation Cycle #5

slide-16
SLIDE 16

Example parallel universe job life cycle

16

$ condor_status Name State Activity slot1@execute1 Unclaimed Idle slot2@execute1 Claimed Busy slot3@execute1 Claimed Idle slot4@execute1 Claimed Idle slot1@execute2 Claimed Idle slot2@execute2 Claimed Idle slot3@execute2 Claimed Busy slot4@execute2 Claimed Idle slot1@execute3 Claimed Idle slot2@execute3 Claimed Idle

slide-17
SLIDE 17

Example parallel universe job life cycle

17

$ condor_status Name State Activity slot1@execute1 Claimed Idle slot2@execute1 Claimed Busy slot3@execute1 Claimed Idle slot4@execute1 Claimed Idle slot1@execute2 Claimed Idle slot2@execute2 Claimed Idle slot3@execute2 Claimed Busy slot4@execute2 Claimed Idle slot1@execute3 Claimed Idle slot2@execute3 Claimed Idle

Negotiation Cycle #6

slide-18
SLIDE 18

Example parallel universe job life cycle

18

$ condor_status Name State Activity slot1@execute1 Claimed Busy slot2@execute1 Claimed Busy slot3@execute1 Claimed Busy slot4@execute1 Claimed Busy slot1@execute2 Claimed Busy slot2@execute2 Claimed Busy slot3@execute2 Claimed Busy slot4@execute2 Claimed Busy slot1@execute3 Claimed Busy slot2@execute3 Claimed Busy

Job Starts

slide-19
SLIDE 19

Example parallel universe job life cycle

19

$ condor_status Name State Activity slot1@execute1 Claimed Idle slot2@execute1 Claimed Busy slot3@execute1 Claimed Idle slot4@execute1 Claimed Idle slot1@execute2 Claimed Idle slot2@execute2 Claimed Idle slot3@execute2 Claimed Busy slot4@execute2 Claimed Idle slot1@execute3 Claimed Idle slot2@execute3 Claimed Idle

Job Completes

slide-20
SLIDE 20

Example parallel universe job life cycle

20

$ condor_status Name State Activity slot1@execute1 Unclaimed Idle slot2@execute1 Claimed Busy slot3@execute1 Unclaimed Idle slot4@execute1 Unclaimed Idle slot1@execute2 Unclaimed Idle slot2@execute2 Unclaimed Idle slot3@execute2 Claimed Busy slot4@execute2 Unclaimed Idle slot1@execute3 Unclaimed Idle slot2@execute3 Unclaimed Idle

10 minutes later

slide-21
SLIDE 21
  • 1. Choose a submit machine to host the

“dedicated scheduler”

  • 2. Set DedicatedScheduler on participating

execute machines

  • 3. Adjust other settings (START, RANK,

PREEMPT, etc.) to taste

  • 4. Easy way – modify the example config:

Enabling parallel universe in your pool

21

condor_config.local.dedicated.resource

slide-22
SLIDE 22

Example config

22

submit1.wisc.edu execute1.wisc.edu

DedicatedScheduler = "DedicatedScheduler@submit1.wisc.edu" START = (Scheduler =?= $(DedicatedScheduler)) || ($(START)) PREEMPT = Scheduler =!= $(DedicatedScheduler) && ($(PREEMPT)) SUSPEND = Scheduler =!= $(DedicatedScheduler) && ($(SUSPEND)) RANK = Scheduler =?= $(DedicatedScheduler)

slide-23
SLIDE 23

Example config

23

execute1.wisc.edu

DedicatedScheduler = "DedicatedScheduler@submit1. wisc.edu"

highmem.wisc.edu submit1.wisc.edu submit2.wisc.edu submit3.wisc.edu execute2.wisc.edu

DedicatedScheduler = "DedicatedScheduler@submit1. wisc.edu"

gpu.wisc.edu

slide-24
SLIDE 24

› If you are particularly concerned about

reduced throughput in your pool

hClaimed/Idle slots when PU jobs are being

scheduled and completed

hThe dedicated scheduler may not schedule

dynamic slot claims efficiently

hIf you’re not careful about where PU jobs can

land, slow networks can hurt performance, see

ParallelSchedulingGroup in manual

hPreemption hurts total throughput if enabled

Don’t enable parallel universe…

24

slide-25
SLIDE 25

› Can adjust how long dedicated scheduler

holds on to Claimed/Idle slots

hUNUSED_CLAIM_TIMEOUT, see example

condor_config.local.dedicated.submit

› PU jobs usually talk between slots, check

firewall settings

› PU jobs may be sensitive to shared

filesystems and user names

Other config notes

25

slide-26
SLIDE 26

› Can you submit PU jobs without your admin

having configured your pool for them?

  • hNo. (Yes, will sit idle while dedicated scheduler

searches for nonexistent dedicated resources.)

› Should all MPI jobs use PU?

hNo, only if they cannot fit on a single machine.

› Can you submit Docker jobs using PU?

hYes!

universe = docker WantParallelScheduling = true

Parallel Universe Trivia

26

slide-27
SLIDE 27

Questions?

27

Example examples/ location: /usr/share/doc/condor-8.7.8/examples