Hi everyone, I’m currently testing `nf-core/eager`...
# eager
m
Hi everyone, I’m currently testing
nf-core/eager
on our HPC cluster (IBEX) using Singularity and Slurm, and the pipeline stops at the MALT metagenomics profiling step:
Copy code
NFCORE_EAGER:EAGER:METAGENOMICS:METAGENOMICS_PROFILING:MALT_RUN (doublestranded_0)
The error seems to be related to Java memory:
Copy code
java.lang.OutOfMemoryError: Java heap space
From the Slurm report, the job used around ~273 GB of memory, but it looks like MALT may not be receiving enough Java heap memory inside the container. I was wondering where would be the best place to add extra Java memory options for this process in
nf-core/eager
? For example, should I set something like:
Copy code
JAVA_TOOL_OPTIONS="-Xmx700G"
_JAVA_OPTIONS="-Xmx700G"
INSTALL4J_ADD_VM_PARAMS="-Xmx700G"
inside my Slurm submission script, in a custom Nextflow config using
withName: '.*MALT_RUN.*'
, or somewhere else? For context, I’m running the dev version/revision:
Copy code
nf-core/eager 3.0.0dev
revision: f77d2464a7c6fe06b67ce1832f2fe72ba21c8fde
and the metagenomics settings include:
Copy code
--run_metagenomics
--metagenomics_profiling_tool malt
--metagenomics_profiling_database /path/to/MALT_index
--metagenomics_malt_memorymode map
Any advice on the recommended way to increase Java heap memory specifically for MALT would be greatly appreciated. Thank you!
t
Hi Maru! How are you providing the additional memory to malt_run? looking at the implementation in eager 2, malt takes the option
-J-Xmx
to set the max java heap (instead of the usual
-Xmx
). For the dev version, that option should be provided to the
args
of the process in a
withName:
clause. Please let us know if that is unclear, or if that does/doesn’t work. I think the module might actually need updating to simplify this
m
Hi! Ahh that makes sense, thank you! I was adding the extra memory in my custom Nextflow config like this:
Copy code
withName: /.*MALT_RUN.*/ {
    cpus = 1
    memory = '700 GB'
    time = '120h'
    maxForks = 1
    errorStrategy = 'retry'
    maxRetries = 1

    beforeScript = '''
        export JAVA_TOOL_OPTIONS="-Xmx600G"
        export _JAVA_OPTIONS="-Xmx600G"
        export INSTALL4J_ADD_VM_PARAMS="-Xmx600G"
    '''
}
So I was increasing the Slurm/Nextflow memory and trying to set the Java heap through environment variables, but I hadn’t passed the MALT-specific
-J-Xmx
option directly to the process args. I’ll try changing it to something like this:
Copy code
withName: /.*MALT_RUN.*/ {
    cpus = 1
    memory = '700 GB'
    time = '120h'
    maxForks = 1
    errorStrategy = 'retry'
    maxRetries = 1

    args = '-J-Xmx600G'
}
Does this look like the right way to pass the Java heap option to
malt-run
in eager? Thanks again for the help!
t
yes, that looks more like the intended way to do it