Jakub Kropacek 9b1342122b new file: i/IOTK/IOTK-1.2.2-intel-2021a.eb
new file:   i/IRODS/IRODS-0.7.3.eb
	new file:   l/libxc/libxc-5.1.5-intel-2020a.eb
	new file:   n/NodeODM/NodeODM-2.2.0-GCCcore-11.3.0.eb
	new file:   o/ODM/ODM-2.8.7/.dockerignore
	new file:   o/ODM/ODM-2.8.7/.github/workflows/publish-docker-and-wsl.yaml
	new file:   o/ODM/ODM-2.8.7/.github/workflows/publish-docker-gpu.yaml
	new file:   o/ODM/ODM-2.8.7/.github/workflows/publish-snap.yml
	new file:   o/ODM/ODM-2.8.7/.github/workflows/publish-windows.yml
	new file:   o/ODM/ODM-2.8.7/.github/workflows/test-build-prs.yaml
	new file:   o/ODM/ODM-2.8.7/.gitignore
	new file:   o/ODM/ODM-2.8.7/.gitmodules
	new file:   o/ODM/ODM-2.8.7/CNAME
	new file:   o/ODM/ODM-2.8.7/CONTRIBUTING.md
	new file:   o/ODM/ODM-2.8.7/Dockerfile
	new file:   o/ODM/ODM-2.8.7/LICENSE
	new file:   o/ODM/ODM-2.8.7/README.md
	new file:   o/ODM/ODM-2.8.7/SuperBuild/CMakeLists.txt
	new file:   o/ODM/ODM-2.8.7/SuperBuild/cmake/External-Ceres.cmake
	new file:   o/ODM/ODM-2.8.7/SuperBuild/cmake/External-Entwine.cmake
	new file:   o/ODM/ODM-2.8.7/SuperBuild/cmake/External-FPCFilter.cmake
	new file:   o/ODM/ODM-2.8.7/SuperBuild/cmake/External-GFlags.cmake
	new file:   o/ODM/ODM-2.8.7/SuperBuild/cmake/External-Hexer.cmake
	new file:   o/ODM/ODM-2.8.7/SuperBuild/cmake/External-LASzip.cmake
	new file:   o/ODM/ODM-2.8.7/SuperBuild/cmake/External-MvsTexturing.cmake
	new file:   o/ODM/ODM-2.8.7/SuperBuild/cmake/External-Obj2Tiles.cmake
	new file:   o/ODM/ODM-2.8.7/SuperBuild/cmake/External-OpenCV.cmake
	new file:   o/ODM/ODM-2.8.7/SuperBuild/cmake/External-OpenMVS.cmake
	new file:   o/ODM/ODM-2.8.7/SuperBuild/cmake/External-OpenSfM.cmake
	new file:   o/ODM/ODM-2.8.7/SuperBuild/cmake/External-PCL.cmake
	new file:   o/ODM/ODM-2.8.7/SuperBuild/cmake/External-PDAL.cmake
	new file:   o/ODM/ODM-2.8.7/SuperBuild/cmake/External-PyPopsift.cmake
	new file:   o/ODM/ODM-2.8.7/SuperBuild/cmake/External-Untwine.cmake
	new file:   o/ODM/ODM-2.8.7/SuperBuild/cmake/ExternalProject-Setup.cmake
	new file:   o/ODM/ODM-2.8.7/VERSION
	new file:   o/ODM/ODM-2.8.7/code_of_conduct.md
	new file:   o/ODM/ODM-2.8.7/configure.py
	new file:   o/ODM/ODM-2.8.7/configure.sh
	new file:   o/ODM/ODM-2.8.7/console.bat
	new file:   o/ODM/ODM-2.8.7/contrib/blender/README.md
	new file:   o/ODM/ODM-2.8.7/contrib/blender/common.py
	new file:   o/ODM/ODM-2.8.7/contrib/blender/odm_photo.py
	new file:   o/ODM/ODM-2.8.7/contrib/blender/odm_video.py
	new file:   o/ODM/ODM-2.8.7/contrib/blender/photo_360.blend
	new file:   o/ODM/ODM-2.8.7/contrib/blender/photo_vr.blend
	new file:   o/ODM/ODM-2.8.7/contrib/grass/README.md
	new file:   o/ODM/ODM-2.8.7/contrib/grass/odm_grass.py
	new file:   o/ODM/ODM-2.8.7/contrib/mergepreview/README.md
	new file:   o/ODM/ODM-2.8.7/contrib/mergepreview/mergepreview.py
	new file:   o/ODM/ODM-2.8.7/contrib/ndvi/README.md
	new file:   o/ODM/ODM-2.8.7/contrib/ndvi/agricultural_indices.py
	new file:   o/ODM/ODM-2.8.7/contrib/ndvi/ndvi.py
	new file:   o/ODM/ODM-2.8.7/contrib/ndvi/rename_sentera_agx710_multispectral_tif.py
	new file:   o/ODM/ODM-2.8.7/contrib/orthorectify/README.md
	new file:   o/ODM/ODM-2.8.7/contrib/orthorectify/orthorectify.py
	new file:   o/ODM/ODM-2.8.7/contrib/orthorectify/run.sh
	new file:   o/ODM/ODM-2.8.7/contrib/pc2dem/README.md
	new file:   o/ODM/ODM-2.8.7/contrib/pc2dem/pc2dem.py
	new file:   o/ODM/ODM-2.8.7/contrib/resize/README.md
	new file:   o/ODM/ODM-2.8.7/contrib/resize/requirements.txt
	new file:   o/ODM/ODM-2.8.7/contrib/resize/resize.py
	new file:   o/ODM/ODM-2.8.7/contrib/shell/odm_exif2utm.sh
	new file:   o/ODM/ODM-2.8.7/contrib/visveg/readme.md
	new file:   o/ODM/ODM-2.8.7/contrib/visveg/vegind.py
	new file:   o/ODM/ODM-2.8.7/docker/README
	new file:   o/ODM/ODM-2.8.7/docker/g++
	new file:   o/ODM/ODM-2.8.7/docker/gcc
	new file:   o/ODM/ODM-2.8.7/docs/issue_template.md
	new file:   o/ODM/ODM-2.8.7/gpu.Dockerfile
	new file:   o/ODM/ODM-2.8.7/innosetup.iss
	new file:   o/ODM/ODM-2.8.7/licenses/libext_copyright.txt
	new file:   o/ODM/ODM-2.8.7/licenses/libx11_copyright.txt
	new file:   o/ODM/ODM-2.8.7/licenses/license.md
	new file:   o/ODM/ODM-2.8.7/odm_docker_readme.txt
	new file:   o/ODM/ODM-2.8.7/opendm/__init__.py
	new file:   o/ODM/ODM-2.8.7/opendm/boundary.py
	new file:   o/ODM/ODM-2.8.7/opendm/camera.py
	new file:   o/ODM/ODM-2.8.7/opendm/cogeo.py
	new file:   o/ODM/ODM-2.8.7/opendm/concurrency.py
	new file:   o/ODM/ODM-2.8.7/opendm/config.py
	new file:   o/ODM/ODM-2.8.7/opendm/context.py
	new file:   o/ODM/ODM-2.8.7/opendm/cropper.py
	new file:   o/ODM/ODM-2.8.7/opendm/cutline.py
	new file:   o/ODM/ODM-2.8.7/opendm/dem/__init__.py
	new file:   o/ODM/ODM-2.8.7/opendm/dem/commands.py
	new file:   o/ODM/ODM-2.8.7/opendm/dem/ground_rectification/__init__.py
	new file:   o/ODM/ODM-2.8.7/opendm/dem/ground_rectification/bounds/__init__.py
	new file:   o/ODM/ODM-2.8.7/opendm/dem/ground_rectification/bounds/types.py
	new file:   o/ODM/ODM-2.8.7/opendm/dem/ground_rectification/bounds/utils.py
	new file:   o/ODM/ODM-2.8.7/opendm/dem/ground_rectification/extra_dimensions/__init__.py
	new file:   o/ODM/ODM-2.8.7/opendm/dem/ground_rectification/extra_dimensions/dimension.py
	new file:   o/ODM/ODM-2.8.7/opendm/dem/ground_rectification/extra_dimensions/distance_dimension.py
	new file:   o/ODM/ODM-2.8.7/opendm/dem/ground_rectification/extra_dimensions/extended_dimension.py
	new file:   o/ODM/ODM-2.8.7/opendm/dem/ground_rectification/extra_dimensions/partition_dimension.py
	new file:   o/ODM/ODM-2.8.7/opendm/dem/ground_rectification/grid/__init__.py
	new file:   o/ODM/ODM-2.8.7/opendm/dem/ground_rectification/grid/builder.py
	new file:   o/ODM/ODM-2.8.7/opendm/dem/ground_rectification/io/__init__.py
	new file:   o/ODM/ODM-2.8.7/opendm/dem/ground_rectification/io/las_io.py
	new file:   o/ODM/ODM-2.8.7/opendm/dem/ground_rectification/partition/__init__.py
	new file:   o/ODM/ODM-2.8.7/opendm/dem/ground_rectification/partition/one_partition.py
	new file:   o/ODM/ODM-2.8.7/opendm/dem/ground_rectification/partition/partition_plan.py
	new file:   o/ODM/ODM-2.8.7/opendm/dem/ground_rectification/partition/quad_partitions.py
	new file:   o/ODM/ODM-2.8.7/opendm/dem/ground_rectification/partition/selector.py
	new file:   o/ODM/ODM-2.8.7/opendm/dem/ground_rectification/partition/surrounding_partitions.py
	new file:   o/ODM/ODM-2.8.7/opendm/dem/ground_rectification/point_cloud.py
	new file:   o/ODM/ODM-2.8.7/opendm/dem/ground_rectification/rectify.py
	new file:   o/ODM/ODM-2.8.7/opendm/dem/merge.py
	new file:   o/ODM/ODM-2.8.7/opendm/dem/pdal.py
	new file:   o/ODM/ODM-2.8.7/opendm/dem/utils.py
	new file:   o/ODM/ODM-2.8.7/opendm/dls.py
	new file:   o/ODM/ODM-2.8.7/opendm/entwine.py
	new file:   o/ODM/ODM-2.8.7/opendm/gcp.py
	new file:   o/ODM/ODM-2.8.7/opendm/geo.py
	new file:   o/ODM/ODM-2.8.7/opendm/get_image_size.py
	new file:   o/ODM/ODM-2.8.7/opendm/gpu.py
	new file:   o/ODM/ODM-2.8.7/opendm/gsd.py
	new file:   o/ODM/ODM-2.8.7/opendm/io.py
	new file:   o/ODM/ODM-2.8.7/opendm/location.py
	new file:   o/ODM/ODM-2.8.7/opendm/log.py
	new file:   o/ODM/ODM-2.8.7/opendm/loghelpers.py
	new file:   o/ODM/ODM-2.8.7/opendm/mesh.py
	new file:   o/ODM/ODM-2.8.7/opendm/multispectral.py
	new file:   o/ODM/ODM-2.8.7/opendm/nvm.py
	new file:   o/ODM/ODM-2.8.7/opendm/ogctiles.py
	new file:   o/ODM/ODM-2.8.7/opendm/orthophoto.py
	new file:   o/ODM/ODM-2.8.7/opendm/osfm.py
	new file:   o/ODM/ODM-2.8.7/opendm/photo.py
	new file:   o/ODM/ODM-2.8.7/opendm/point_cloud.py
	new file:   o/ODM/ODM-2.8.7/opendm/progress.py
	new file:   o/ODM/ODM-2.8.7/opendm/pseudogeo.py
	new file:   o/ODM/ODM-2.8.7/opendm/remote.py
	new file:   o/ODM/ODM-2.8.7/opendm/report/dsm_gradient.png
	new file:   o/ODM/ODM-2.8.7/opendm/report/overlap_color_map.txt
	new file:   o/ODM/ODM-2.8.7/opendm/report/overlap_diagram_legend.png
	new file:   o/ODM/ODM-2.8.7/opendm/rollingshutter.py
	new file:   o/ODM/ODM-2.8.7/opendm/shots.py
	new file:   o/ODM/ODM-2.8.7/opendm/system.py
	new file:   o/ODM/ODM-2.8.7/opendm/thermal.py
	new file:   o/ODM/ODM-2.8.7/opendm/thermal_tools/__init__.py
	new file:   o/ODM/ODM-2.8.7/opendm/thermal_tools/dji_unpack.py
	new file:   o/ODM/ODM-2.8.7/opendm/thermal_tools/flir_unpack.py
	new file:   o/ODM/ODM-2.8.7/opendm/thermal_tools/thermal_utils.py
	new file:   o/ODM/ODM-2.8.7/opendm/tiles/color_relief.txt
	new file:   o/ODM/ODM-2.8.7/opendm/tiles/gdal2tiles.py
	new file:   o/ODM/ODM-2.8.7/opendm/tiles/hsv_merge.py
	new file:   o/ODM/ODM-2.8.7/opendm/tiles/tiler.py
	new file:   o/ODM/ODM-2.8.7/opendm/types.py
	new file:   o/ODM/ODM-2.8.7/opendm/utils.py
	new file:   o/ODM/ODM-2.8.7/opendm/vendor/__init__.py
	new file:   o/ODM/ODM-2.8.7/opendm/vendor/gdal_fillnodata.py
	new file:   o/ODM/ODM-2.8.7/portable.Dockerfile
	new file:   o/ODM/ODM-2.8.7/requirements.txt
	new file:   o/ODM/ODM-2.8.7/run.bat
	new file:   o/ODM/ODM-2.8.7/run.py
	new file:   o/ODM/ODM-2.8.7/run.sh
	new file:   o/ODM/ODM-2.8.7/snap/snapcraft.yaml
	new file:   o/ODM/ODM-2.8.7/snap/snapcraft21.yaml
	new file:   o/ODM/ODM-2.8.7/stages/__init__.py
	new file:   o/ODM/ODM-2.8.7/stages/dataset.py
	new file:   o/ODM/ODM-2.8.7/stages/mvstex.py
	new file:   o/ODM/ODM-2.8.7/stages/odm_app.py
	new file:   o/ODM/ODM-2.8.7/stages/odm_dem.py
	new file:   o/ODM/ODM-2.8.7/stages/odm_filterpoints.py
	new file:   o/ODM/ODM-2.8.7/stages/odm_georeferencing.py
	new file:   o/ODM/ODM-2.8.7/stages/odm_meshing.py
	new file:   o/ODM/ODM-2.8.7/stages/odm_orthophoto.py
	new file:   o/ODM/ODM-2.8.7/stages/odm_postprocess.py
	new file:   o/ODM/ODM-2.8.7/stages/odm_report.py
	new file:   o/ODM/ODM-2.8.7/stages/openmvs.py
	new file:   o/ODM/ODM-2.8.7/stages/run_opensfm.py
	new file:   o/ODM/ODM-2.8.7/stages/splitmerge.py
	new file:   o/ODM/ODM-2.8.7/start-dev-env.sh
	new file:   o/ODM/ODM-2.8.7/test.sh
	new file:   o/ODM/ODM-2.8.7/tests/assets/.gitignore
	new file:   o/ODM/ODM-2.8.7/tests/assets/gcp_extras.txt
	new file:   o/ODM/ODM-2.8.7/tests/assets/gcp_latlon_south.txt
	new file:   o/ODM/ODM-2.8.7/tests/assets/gcp_latlon_valid.txt
	new file:   o/ODM/ODM-2.8.7/tests/assets/gcp_michigan_feet_valid.txt
	new file:   o/ODM/ODM-2.8.7/tests/assets/gcp_utm_north_valid.txt
	new file:   o/ODM/ODM-2.8.7/tests/assets/images/DJI_0002.JPG
	new file:   o/ODM/ODM-2.8.7/tests/assets/reconstruction.json
	new file:   o/ODM/ODM-2.8.7/tests/assets/sample.json
	new file:   o/ODM/ODM-2.8.7/tests/test_camera.py
	new file:   o/ODM/ODM-2.8.7/tests/test_gcp.py
	new file:   o/ODM/ODM-2.8.7/tests/test_osfm.py
	new file:   o/ODM/ODM-2.8.7/tests/test_remote.py
	new file:   o/ODM/ODM-2.8.7/tests/test_types.py
	new file:   o/ODM/ODM-2.8.7/vcpkg-requirements.txt
	new file:   o/ODM/ODM-2.8.7/win32env.bat
	new file:   o/ODM/ODM-2.8.7/winrun.bat
	new file:   o/ODM/v2.8.7.tar.gz
	new file:   y/Yambo/Yambo-5.1.0-intel-2020a.eb
	new file:   y/Yambo/Yambo-5.1.0-intel-2020a.eb.bak_20220715124556_61837
	new file:   y/Yambo/Yambo-5.1.0-intel-2021a.eb.old
	deleted:    y/Yambo/Yambo-5.1.0-intel-2021a.eb
2022-07-19 15:02:22 +02:00

100 lines
2.9 KiB
Python

from vmem import virtual_memory
import os
import sys
try:
import Queue as queue
except:
import queue
import threading
import time
from opendm import log
def get_max_memory(minimum = 5, use_at_most = 0.5):
"""
:param minimum minimum value to return (return value will never be lower than this)
:param use_at_most use at most this fraction of the available memory. 0.5 = use at most 50% of available memory
:return percentage value of memory to use (75 = 75%).
"""
return max(minimum, (100 - virtual_memory().percent) * use_at_most)
def get_max_memory_mb(minimum = 100, use_at_most = 0.5):
"""
:param minimum minimum value to return (return value will never be lower than this)
:param use_at_most use at most this fraction of the available memory. 0.5 = use at most 50% of available memory
:return value of memory to use in megabytes.
"""
return max(minimum, (virtual_memory().available / 1024 / 1024) * use_at_most)
def parallel_map(func, items, max_workers=1, single_thread_fallback=True):
"""
Our own implementation for parallel processing
which handles gracefully CTRL+C and reverts to
single thread processing in case of errors
:param items list of objects
:param func function to execute on each object
"""
global error
error = None
def process_one(q):
func(q)
def worker():
global error
while True:
(num, q) = pq.get()
if q is None or error is not None:
pq.task_done()
break
try:
process_one(q)
except Exception as e:
error = e
finally:
pq.task_done()
if max_workers > 1:
use_single_thread = False
pq = queue.PriorityQueue()
threads = []
for i in range(max_workers):
t = threading.Thread(target=worker)
t.start()
threads.append(t)
i = 1
for t in items:
pq.put((i, t.copy()))
i += 1
def stop_workers():
for i in range(len(threads)):
pq.put((-1, None))
for t in threads:
t.join()
# block until all tasks are done
try:
while pq.unfinished_tasks > 0:
time.sleep(0.5)
except KeyboardInterrupt:
print("CTRL+C terminating...")
stop_workers()
sys.exit(1)
stop_workers()
if error is not None and single_thread_fallback:
# Try to reprocess using a single thread
# in case this was a memory error
log.ODM_WARNING("Failed to run process in parallel, retrying with a single thread...")
use_single_thread = True
else:
use_single_thread = True
if use_single_thread:
# Boring, single thread processing
for q in items:
process_one(q)