## E.2 Parallel computing

# Parallel computing in SINGULAR

The available ressources are given by the number of cpus (set by the command line parameter `--cpus=..`, or the environment variable `SINGULAR_CPUS`, defaults to the number of processors currently online) and the number of threads (set by the command line parameter `--threads=..`, defaults to 1). Threads are currently used with FLINT and NTL.
If SINGULAR is uses as a libary, the default are 1 in botrh cases.
Setting `--cpus` to 0 disables the creation of new processes and chooses a sequentiell algorithm if possible.
Setting `--cpus` to 1 chooses a sequentiell algorithm in many cases.
Using parallel algorithms can reduce the overall computing time, by can also increase the memory usage by a factor given by the number of used cpu cores.

Via modular methods, requires QQ as coefficient field:

- assPrimes: assPrimes
- chinrem: chinrem
- farey: farey
- locNormal: locNormal
- modNormal: modNormal
- modPrimdecGTZ: modPrimdecGTZ, see also: primdecGTZ
- modQuotient: modQuotient, see also: quotient
- modSat: modSat, see also: sat
- modStd: modStd, see also: std, groebner
- pdf: pfd
- syModStd: syModStd
- system("verifyGB",I): system
- zeroRadical: zeroRadical

Via modular methods, requires ZZ as coefficient domain:

- primdecZ: primdecZ

Via modular methods, requires a function field over QQ as coefficient field:

- ffmodStd: ffmodStd

Via modular methods, requires a algebraic field over QQ as coefficient field:

- nfmodStd: nfmodStd
- nfmodSyz: nfmodSyz

Via different algorithms:

- primdec: primdec
- minAss: minAss
- signatureNemethi: signatureNemethi

Frameworks for parallel algorithms:

- for modular methods: modular_lib
- for different algorithms at once: watchdog

User manual for Singular version 4.4.1, 2025, generated by texi2html.