I am looking to use the SLOT_WEIGHT both to steer high-memory jobs to high-memory machines,
As far as I know, SLOT_WEIGHT is an accounting tool, not a scheduling one: it has no immediate effect on which job is selected to run on which resource. The effect is indirect, as a job which runs for the same amount of time in a heavier slot will reduce the submitter's priority by more, so that submitter will be less likely to be the first considered for the next available resource.
You _can_ use RANK to indicate that the high-memory machines prefer high-memory jobs, but the effect of RANK is very small in pools without pre-emption (which is turned off by default) -- RANK only applies if more than (newly free) resource matches the same job in the same negotiation cycle.
You can abuse the "newly free" caveat to make it more likely for high-memory machines to run only high-memory jobs (without them refusing to run low memory jobs at all) via a START expression which requires high-memory jobs for some amount of time after the slot goes idle. If you have more than one AP in your pool, you can reduce CLAIM_WORKLIFE on the high-memory to force renegotiation more often; this should have the effect of spreading high-memory slots more evenly among high-memory submitters.
-- ToddM