Laura Seidel
04/01/2025, 9:09 AMMatthias Zepper
04/01/2025, 9:55 AMpdc_kth profile, how the partition a job is submitted to is chosen:
if (time <= 7.d && mem <= 111.GB && cpus <= 256) {
extra += ' -p shared '
}
else if (time < 1.d) {
// Shortish
if (mem > 222.GB) {
extra += ' -p memory,main '
} else {
extra += ' -p main '
}
} else {
// Not shortish
if (mem > 222.GB) {
extra += ' -p memory '
} else {
extra += ' -p long '
}
}
So in order to be submitted to the long partition, your job must have requested more than 222GB of memory for a runtime of more than 1 day.
I am not familiar with the #CEA7TBJGJ pipeline or this particular tool, but both seem quite excessive to me. If you still have logs from old runs in Uppmax, you could check how much the tool truly needed in the past and adapt your configuration accordingly.pontus
04/01/2025, 9:57 AMpontus
04/01/2025, 10:04 AMprocess_high in ampliseq. The resource values used in pipelines are hopefully good defaults, but since what's needed will depend on your data as well as your system and some other choices, it's not surprising it needs tuning from time to time. Here, you can try reducing the requested memory and see if it gets through (and in that case, it's good to follow up and see how much was actually used and possibly go lower in the next run).Daniel Lundin
04/01/2025, 5:12 PM--dada_assign_chunksize, set to 10,000 by default. How many ASVs do you have?Laura Seidel
04/02/2025, 6:54 AMDaniel Lundin
04/02/2025, 7:12 AMwc -l results/dada2/ASV_table.tsv. 2) You will likely still have to configure resources, but less. I haven't run Ampliseq at Dardel yet, but at Rackham I had a nextflow.config like this:
process {
withName: DADA2_ADDSPECIES {
memory = 110.GB
cpus = 10
time = '6d'
}
withName: DADA2_TAXONOMY {
memory = 110.GB
cpus = 10
time = '6d'
}
}
There are two problems with the above. I would reduce the time to maybe '1d' (to avoid getting into the "long" queue) and increase the number of cpus. The way I've understood how cpu allocation works for Nextflow at Dardel is that the cpus in a Nextflow config translates to "virtual cpus" (two hyperthreads per physical core) and there 256 virtual cpus for each normal node. Since there's 256 GiB RAM, of which 220-240 or so is available to user processes, for each GiB RAM you ask for you should ask for a cpu. If you ask for less your Nextflow process will only see that smaller number. (Not so important, I believe, for DADA2 taxonomy, but as a general principle.) So when you allocate 110 GiB RAM, ask for, say, 100 cpus too (less than the memory to be on the safe side of not allocating more cpus than required as they're not going to be put to good use anyway). @Matthias Zepper and @pontus: Is this in line with how you understand this?
With 2.13.0 of Ampliseq you can probably reduce the memory requirement. In my runs I've had between ~700 and 65,000 ASVs, so maybe accepting the default 10,000 per batch and opting for 64 GiB memory could work. Please post what you find to work here.
Edit: I don't actually think the DADA2_ADDSPECIES needs the same amount of resources as DADA2_TAXONOMY, so try to set that lower. At Dardel economizing on cpu cores is much more important than at Rackham due to the incredible number of cores per node.pontus
04/02/2025, 7:46 AMresourceLimits for e.g. supporting systems with fewer cores).
I never recall its setup but dardel seems to have two sockets of 64 core CPUs that are exposed with hyperthreading (or whatever AMD calls it) as 256 cores in total (others do other stuff with hyperthreading, but I guess this is what cray felt like a good thing).Laura Seidel
04/03/2025, 8:06 AMpontus
04/03/2025, 8:08 AMpdc_kth should set appropriate resourceLimits, what you need to do is to provide good values for the different nextflow processes (see the link posted above for additional information).