Jobs in batch mode for SAS software timing out

Hello! I am trying to run analyses in SAS (on Discovery). My jobs keep timing out (not completing) on the Main partition. In my email, I get the following message:
Failed, Run time 2-00:00:23, TIMEOUT, ExitCode 0

Similar analyses with the same data sample have been able to run on a PC/laptop in less than 2 days.

Perhaps it is an issue with my requested resources. As a side note, according to SAS documentation, Proc HPmixed is not set up to utilize multiple threads/nodes. Here is an example job script:

#!/bin/bash
#SBATCH --job-name=ACE
#SBATCH --ntasks=1
#SBATCH --nodes=1
#SBATCH --cpus-per-task=1
#SBATCH --mem=0
#SBATCH --time=48:00:00
#SBATCH --output=ACE%j.log
cd /project/catalinz_296/PT/
module load sas/9.4
sas -memsize MAX /project/name_number/PT/ACE.sas

In the SAS script, I am using SAS Proc HPmixed for multilevel modeling with a sample size of about 85,000. Here is an example SAS script:

proc HPmixed data=libname.onlyfam order=data noclprint method=reml;
class famid;
model zLeader = / s ; *z-scored variable;
random int / subject=famid type=vc;
random wtAC wtAf wtAm wt1-wt4 wtm1-wtm5 /subject=FAMID type=TOEP(1);
parms (.10)(.20)(.70) / ;
run;

@catalinz If your SAS program is limited to using 1 core then it’s runtime could primarily be affected by the CPU frequency. I see that your jobs were running on a node with a relatively low CPU frequency. Try adding the following option and see if it helps improve the runtime: #SBATCH --constraint="xeon-2640v3". This will request a node with a relatively higher CPU frequency. Also, according to the job statistics your job was not using much memory (~ 425 MB), so you may want to try #SBATCH --mem=4GB for example to reduce the queue time.

1 Like

I will try this constraint.

On a previous job with the same data set, my SAS log had the following message “Data file sampledata.DATA is in a format that is native to another host, or the file encoding does not match the session encoding. Cross Environment Data Access will be used which might require additional CPU resources and might reduce performance.”

I verified that the data file is utf-8 Unicode (UTF-8) encoding.

I am wondering

  1. Could this cause enough problems in reduced performance and lead to timing-out on the partition?
  2. what file encoding format is being used for the version of SAS on the servers?

Yes, that’s probably part of the performance issue as well. This means the data set was saved on a different operating system but is now being used on our specific Linux operating system. You should be able to convert it using something like:

data sampledata.DATA;
   set sampledata.DATA;
run;

And then you can check/compare formats with something like:

proc contents data=sampledata.DATA;
run;

I tried the #SBATCH --constraint="xeon-2640v3" and received the following error:
Slurm Job_id=2488612 Failed, Run time 00:00:08, OUT_OF_MEMORY

here are my resource requests
#!/bin/bash
#SBATCH --ntasks=1
#SBATCH --nodes=1
#SBATCH --cpus-per-task=1
#SBATCH --constraint=“xeon-2640v3”
#SBATCH --time=48:00:00

If a memory option is not specified, the default is 2 GB per CPU. I’m not sure exactly how much memory you need, but you could try something like #SBATCH --mem=16GB.