I am using GRASS GIS 7.6 on a CentOS server with 157 GB of RAM. The vector categories of the network layer that I need to run the Steiner tree algorithm on are as follows:
Layer/table: 1/network
type count min max
point 0 0 0
line 364591 1 364591
boundary 0 0 0
centroid 0 0 0
area 0 0 0
face 0 0 0
kernel 0 0 0
all 364591 1 364591
Layer: 2
type count min max
point 2174 1 2176
line 0 0 0
boundary 0 0 0
centroid 0 0 0
area 0 0 0
face 0 0 0
kernel 0 0 0
all 2174 1 2176
However even the 157 GB of RAM isn't sufficient and the process gets killed as follows:
GRASS 7.6.0 (srilanka):/home/asel/tmp/rds > v.net.steiner network arc_layer=1 node_layer=2 terminal_cats=0-2176 out=mysteinerSL
Number of terminals: 2172
Number of Steiner points set to 2170
Killed
I understand that this is due to the fact that the Steiner tree algorithm, at least at present, isn't very memory efficient. So I was wondering if I were to divide my network into segments and run v.net.steiner on each of them individually if I'd still get the desired output.