reader.ept does not appear to be streaming
kjwaters opened this issue · comments
Describe the bug
Running a pipeline with EPT input has unexpectedly high memory usage.
pdal pipeline --stdin
With version 2.6.3, running pdal pipeline on the following pipeline uses 22 Gb of RAM, though both parts are streamable. It should be a low memory operation. The amount of memory used is in the ballpark of what would be needed to store the point cloud in memory, perhaps even more.
[
{
"type": "readers.ept",
"filename": "https://s3-us-west-2.amazonaws.com/usgs-lidar-public/SC_SavannahPeeDee_7_2019/ept.json",
"tag": "input_SC_SavannahPeeDee_7_2019",
"bounds": "([2300253.0, 2316273.0], [366099.0, 382119.0])/EPSG:2273"
},
{
"filename": "point_peedee7.las",
"type": "writers.las",
"forward": "all",
"minor_version":4
}
]
Expected behavior
I expect this operation to use very little memory, essentially writing each point out as it is received. I do not expect it to scale with the size of the input.
System/installation information:
Please provide information on your PDAL version (pdal --version
) and system (e.g., uname -a
or ver
).
$ uname -a
Linux ocm-s-fafnir 3.10.0-1160.108.1.el7.x86_64 #1 SMP Thu Jan 4 14:55:32 EST 2024 x86_64 x86_64 x86_64 GNU/Linux
pdal 2.6.3 (git-version: d12128)
If installed via Conda, you may be asked to paste the output of conda list
and conda info
as well.
$ conda list
_libgcc_mutex 0.1 conda_forge conda-forge
_openmp_mutex 4.5 2_gnu conda-forge
annotated-types 0.6.0 pyhd8ed1ab_0 conda-forge
aws-c-auth 0.7.16 h79b3bcb_6 conda-forge
aws-c-cal 0.6.10 hb29e0c7_1 conda-forge
aws-c-common 0.9.13 hd590300_0 conda-forge
aws-c-compression 0.2.18 hecc5fa9_1 conda-forge
aws-c-event-stream 0.4.2 hf9b2f7b_4 conda-forge
aws-c-http 0.8.1 h5d7533a_5 conda-forge
aws-c-io 0.14.5 h50678d4_1 conda-forge
aws-c-mqtt 0.10.2 hf479d2b_4 conda-forge
aws-c-s3 0.5.2 h4ad9680_0 conda-forge
aws-c-sdkutils 0.1.15 hecc5fa9_1 conda-forge
aws-checksums 0.1.18 hecc5fa9_1 conda-forge
aws-crt-cpp 0.26.2 h19f5d62_7 conda-forge
aws-sdk-cpp 1.11.267 h5606698_1 conda-forge
azure-core-cpp 1.10.3 h91d86a7_1 conda-forge
azure-storage-blobs-cpp 12.10.0 h00ab1b0_0 conda-forge
azure-storage-common-cpp 12.5.0 hb858b4b_2 conda-forge
blosc 1.21.5 h0f2a231_0 conda-forge
boto3 1.34.59 pyhd8ed1ab_0 conda-forge
botocore 1.34.59 pyge38_1234567_1 conda-forge
brotli-python 1.1.0 py39h3d6467e_1 conda-forge
bzip2 1.0.8 hd590300_5 conda-forge
c-ares 1.23.0 hd590300_0 conda-forge
ca-certificates 2024.2.2 hbcca054_0 conda-forge
cached-property 1.5.2 hd8ed1ab_1 conda-forge
cached_property 1.5.2 pyha770c72_1 conda-forge
cairo 1.18.0 h3faef2a_0 conda-forge
ceres-solver 2.2.0 h2ea6fbf_1 conda-forge
certifi 2024.2.2 pyhd8ed1ab_0 conda-forge
cfitsio 4.3.1 hbdc6101_0 conda-forge
cftime 1.6.3 py39h44dd56e_0 conda-forge
charset-normalizer 3.3.2 pyhd8ed1ab_0 conda-forge
click 8.1.7 unix_pyh707e725_0 conda-forge
curl 8.5.0 hca28451_0 conda-forge
draco 1.5.6 hf52228f_0 conda-forge
eigen 3.4.0 h00ab1b0_0 conda-forge
expat 2.6.1 h59595ed_0 conda-forge
font-ttf-dejavu-sans-mono 2.37 hab24e00_0 conda-forge
font-ttf-inconsolata 3.000 h77eed37_0 conda-forge
font-ttf-source-code-pro 2.038 h77eed37_0 conda-forge
font-ttf-ubuntu 0.83 h77eed37_1 conda-forge
fontconfig 2.14.2 h14ed4e7_0 conda-forge
fonts-conda-ecosystem 1 0 conda-forge
fonts-conda-forge 1 0 conda-forge
freetds 1.4.10 h0535610_0 conda-forge
freetype 2.12.1 h267a509_2 conda-forge
freexl 2.0.0 h743c826_0 conda-forge
fsspec 2024.2.0 pyhca7485f_0 conda-forge
gdal 3.8.4 py39he9866c7_1 conda-forge
geos 3.12.1 h59595ed_0 conda-forge
geotiff 1.7.1 h6b2125f_15 conda-forge
gettext 0.21.1 h27087fc_0 conda-forge
gflags 2.2.2 he1b5a44_1004 conda-forge
giflib 5.2.1 h0b41bf4_3 conda-forge
glog 0.6.0 h6f12383_0 conda-forge
gmp 6.3.0 h59595ed_0 conda-forge
h5py 3.10.0 nompi_py39h2c511df_101 conda-forge
hdf4 4.2.15 h2a13503_7 conda-forge
hdf5 1.14.3 nompi_h4f84152_100 conda-forge
icu 73.2 h59595ed_0 conda-forge
idna 3.6 pyhd8ed1ab_0 conda-forge
importlib-metadata 7.0.0 pyha770c72_0 conda-forge
importlib_metadata 7.0.0 hd8ed1ab_0 conda-forge
jmespath 1.0.1 pyhd8ed1ab_0 conda-forge
jq 1.6 h27cfd23_1000
json-c 0.17 h7ab15ed_0 conda-forge
kealib 1.5.3 h2f55d51_0 conda-forge
keyutils 1.6.1 h166bdaf_0 conda-forge
krb5 1.21.2 h659d440_0 conda-forge
lcms2 2.16 hb7c19ff_0 conda-forge
ld_impl_linux-64 2.40 h41732ed_0 conda-forge
lerc 4.0.0 h27087fc_0 conda-forge
libabseil 20230802.1 cxx17_h59595ed_0 conda-forge
libaec 1.1.2 h59595ed_1 conda-forge
libarchive 3.7.2 h2aa1ff5_1 conda-forge
libblas 3.9.0 20_linux64_openblas conda-forge
libboost-headers 1.83.0 ha770c72_0 conda-forge
libcblas 3.9.0 20_linux64_openblas conda-forge
libcrc32c 1.1.2 h9c3ff4c_0 conda-forge
libcurl 8.5.0 hca28451_0 conda-forge
libdeflate 1.19 hd590300_0 conda-forge
libedit 3.1.20191231 he28a2e2_2 conda-forge
libev 4.33 h516909a_1 conda-forge
libexpat 2.6.1 h59595ed_0 conda-forge
libffi 3.4.2 h7f98852_5 conda-forge
libgcc-ng 13.2.0 h807b86a_3 conda-forge
libgdal 3.8.4 h13e47b0_1 conda-forge
libgfortran-ng 13.2.0 h69a702a_3 conda-forge
libgfortran5 13.2.0 ha4646dd_3 conda-forge
libglib 2.78.4 hf2295e7_4 conda-forge
libgomp 13.2.0 h807b86a_3 conda-forge
libgoogle-cloud 2.17.0 h884d01b_1 conda-forge
libgoogle-cloud-storage 2.17.0 hc7a4891_1 conda-forge
libgrpc 1.59.3 hd6c4280_0 conda-forge
libhwloc 2.9.2 default_h554bfaf_1009 conda-forge
libiconv 1.17 h166bdaf_0 conda-forge
libjpeg-turbo 3.0.0 hd590300_1 conda-forge
libkml 1.3.0 h01aab08_1018 conda-forge
liblapack 3.9.0 20_linux64_openblas conda-forge
libnetcdf 4.9.2 nompi_h9612171_113 conda-forge
libnghttp2 1.58.0 h47da74e_0 conda-forge
libnsl 2.0.1 hd590300_0 conda-forge
libopenblas 0.3.25 pthreads_h413a1c8_0 conda-forge
libpng 1.6.43 h2797004_0 conda-forge
libpq 16.2 h33b98f1_0 conda-forge
libprotobuf 4.24.4 hf27288f_0 conda-forge
libre2-11 2023.09.01 h7a70373_1 conda-forge
librttopo 1.1.0 h8917695_15 conda-forge
libspatialite 5.1.0 h7bd4643_4 conda-forge
libsqlite 3.45.1 h2797004_0 conda-forge
libssh2 1.11.0 h0841786_0 conda-forge
libstdcxx-ng 13.2.0 h7e041cc_3 conda-forge
libtiff 4.6.0 ha9c0a0a_2 conda-forge
libuuid 2.38.1 h0b41bf4_0 conda-forge
libwebp-base 1.3.2 hd590300_0 conda-forge
libxcb 1.15 h0b41bf4_0 conda-forge
libxcrypt 4.4.36 hd590300_1 conda-forge
libxml2 2.12.5 h232c23b_0 conda-forge
libzip 1.10.1 h2629f0a_3 conda-forge
libzlib 1.2.13 hd590300_5 conda-forge
lz4-c 1.9.4 hcb278e6_0 conda-forge
lzo 2.10 h516909a_1000 conda-forge
markdown-it-py 3.0.0 pyhd8ed1ab_0 conda-forge
mdurl 0.1.0 pyhd8ed1ab_0 conda-forge
meshio 5.3.4 pyhd8ed1ab_0 conda-forge
metis 5.1.0 h59595ed_1007 conda-forge
minizip 4.0.3 h0ab5242_0 conda-forge
mpfr 4.2.1 h9458935_0 conda-forge
ncurses 6.4 h59595ed_2 conda-forge
netcdf4 1.6.4 nompi_py39h4282601_103 conda-forge
nitro 2.7.dev8 h59595ed_0 conda-forge
nspr 4.35 h27087fc_0 conda-forge
nss 3.98 h1d7d5a4_0 conda-forge
numpy 1.26.2 py39h474f0d3_0 conda-forge
oniguruma 6.9.9 hd590300_0 conda-forge
openjpeg 2.5.2 h488ebb8_0 conda-forge
openssl 3.2.1 hd590300_0 conda-forge
packaging 24.0 pyhd8ed1ab_0 conda-forge
pathlib 1.0.1 py39hf3d152e_7 conda-forge
pcre2 10.43 hcad00b1_0 conda-forge
pdal 2.6.3 h312035a_2 conda-forge
pdal-plugins 1.3.0 pypi_0 pypi
pip 24.0 pyhd8ed1ab_0 conda-forge
pixman 0.42.2 h59595ed_0 conda-forge
planetary-computer 1.0.0 pyhd8ed1ab_0 conda-forge
poppler 24.02.0 h590f24d_0 conda-forge
poppler-data 0.4.12 hd8ed1ab_0 conda-forge
postgresql 16.2 h7387d8b_0 conda-forge
proj 9.3.1 h1d62c97_0 conda-forge
proj-data 1.17 hd8ed1ab_0 conda-forge
pthread-stubs 0.4 h36c2ea0_1001 conda-forge
pydantic 2.6.3 pyhd8ed1ab_0 conda-forge
pydantic-core 2.16.3 py39h9fdd4d6_0 conda-forge
pygments 2.17.2 pyhd8ed1ab_0 conda-forge
pymssql 2.2.8 py39h3d6467e_0 conda-forge
pyproj 3.6.1 py39h15b0fa6_5 conda-forge
pysocks 1.7.1 pyha2e5f31_6 conda-forge
pystac 1.9.0 pyhd8ed1ab_0 conda-forge
pystac-client 0.7.6 pyhd8ed1ab_0 conda-forge
python 3.9.18 h0755675_1_cpython conda-forge
python-dateutil 2.9.0 pyhd8ed1ab_0 conda-forge
python-dotenv 1.0.1 pyhd8ed1ab_0 conda-forge
python-pdal 3.3.0 py39hed70b7f_4 conda-forge
python_abi 3.9 4_cp39 conda-forge
pytz 2024.1 pyhd8ed1ab_0 conda-forge
re2 2023.09.01 h7f4b329_1 conda-forge
readline 8.2 h8228510_1 conda-forge
requests 2.31.0 pyhd8ed1ab_0 conda-forge
rich 13.7.0 pyhd8ed1ab_0 conda-forge
s2n 1.4.5 h06160fa_0 conda-forge
s3fs 0.4.2 py_0 conda-forge
s3transfer 0.10.0 pyhd8ed1ab_0 conda-forge
setuptools 68.2.2 pyhd8ed1ab_0 conda-forge
shapely 2.0.3 py39h6404dd3_0 conda-forge
six 1.16.0 pyh6c4a22f_0 conda-forge
snappy 1.1.10 h9fff704_0 conda-forge
sqlite 3.45.1 h2c6b66d_0 conda-forge
suitesparse 5.10.1 h9e50725_1 conda-forge
tbb 2021.10.0 h00ab1b0_0 conda-forge
tiledb 2.20.1 hd75ad12_1 conda-forge
tk 8.6.13 noxft_h4845f30_101 conda-forge
typing-extensions 4.8.0 hd8ed1ab_0 conda-forge
typing_extensions 4.8.0 pyha770c72_0 conda-forge
tzcode 2023c h0b41bf4_0 conda-forge
tzdata 2023c h71feb2d_0 conda-forge
unixodbc 2.3.12 h661eb56_0 conda-forge
uriparser 0.9.7 hcb278e6_1 conda-forge
urllib3 1.26.18 pyhd8ed1ab_0 conda-forge
wheel 0.42.0 pyhd8ed1ab_0 conda-forge
xerces-c 3.2.5 hac6953d_0 conda-forge
xorg-kbproto 1.0.7 h7f98852_1002 conda-forge
xorg-libice 1.1.1 hd590300_0 conda-forge
xorg-libsm 1.2.4 h7391055_0 conda-forge
xorg-libx11 1.8.7 h8ee46fc_0 conda-forge
xorg-libxau 1.0.11 hd590300_0 conda-forge
xorg-libxdmcp 1.1.3 h7f98852_0 conda-forge
xorg-libxext 1.3.4 h0b41bf4_2 conda-forge
xorg-libxrender 0.9.11 hd590300_0 conda-forge
xorg-renderproto 0.11.1 h7f98852_1002 conda-forge
xorg-xextproto 7.3.0 h0b41bf4_1003 conda-forge
xorg-xproto 7.0.31 h7f98852_1007 conda-forge
xz 5.2.6 h166bdaf_0 conda-forge
zipp 3.17.0 pyhd8ed1ab_0 conda-forge
zlib 1.2.13 hd590300_5 conda-forge
zstd 1.5.5 hfc55251_0 conda-forge
$ conda info
active environment : pdal_latest
active env location : /san1/tcm-i/miniconda3/envs/pdal_latest
shell level : 2
user config file : /csc/nac1/crs/kwaters/.condarc
populated config files : /csc/nac1/crs/kwaters/.condarc
conda version : 23.11.0
conda-build version : not installed
python version : 3.9.18.final.0
solver : libmamba (default)
virtual packages : __archspec=1=nehalem
__conda=23.11.0=0
__glibc=2.17=0
__linux=3.10.0=0
__unix=0=0
base environment : /san1/tcm-i/miniconda3 (writable)
conda av data dir : /san1/tcm-i/miniconda3/etc/conda
conda av metadata url : None
channel URLs : https://conda.anaconda.org/conda-forge/linux-64
https://conda.anaconda.org/conda-forge/noarch
https://repo.anaconda.com/pkgs/main/linux-64
https://repo.anaconda.com/pkgs/main/noarch
https://repo.anaconda.com/pkgs/r/linux-64
https://repo.anaconda.com/pkgs/r/noarch
package cache : /san1/tcm-i/miniconda3/pkgs
/csc/nac1/crs/kwaters/.conda/pkgs
envs directories : /san1/tcm-i/miniconda3/envs
/csc/nac1/crs/kwaters/.conda/envs
platform : linux-64
user-agent : conda/23.11.0 requests/2.31.0 CPython/3.9.18 Linux/3.10.0-1160.108.1.el7.x86_64 rhel/7.9 glibc/2.17 solver/libmamba conda-libmamba-solver/23.12.0 libmambapy/1.5.6
UID:GID : 1147:1001
netrc file : None
offline mode : False
Reproduced.