marcovirgolin / GP-GOMEA

Genetic Programming version of GOMEA. Also includes standard tree-based GP, and Semantic Backpropagation-based GP
Apache License 2.0
49 stars 23 forks source link

Dockerize GP-GOMEA #6

Closed rdebokx closed 3 years ago

rdebokx commented 3 years ago

This PR implements support for running GP-GOMEA in a Dockerized setup. The contents of the Dockerfile are based on m_ubuntu, with some minor tweaks to avoid issues with linking Python and Numpy.

This enables users to run GP-GOMEA on any operating system that Docker can run on. For some operating systems this may have an (yet unspecified) performance impact.

Fixes #2

rdebokx commented 3 years ago

That's a good point. I had quite some issues with using Python 3.7 in combination with boost, as also documented in #2 and https://github.com/boostorg/boost/issues/462. The members of the boost mailing list advised me to use the Python version that was shipped with the Ubuntu version I was using. for Ubuntu 18.04 that was 3.6 and for Ubuntu 20.10 that's 3.8.

In make LIB_BOOST_PYTHON=-lpython3.6m LIB_BOOST_NUMPY=-lboost_numpy3 I indeed overwrite the variables as they are declared in Makefile-variables.mk. This way you don't need to manually change anything in Makefile-variables.mk in case you want to run GP-GOMEA using Docker.

Your request got me thinking though; with the understanding I gathered by now about boost and linking it to python and numpy, I was able to use Ubuntu 20.10 instead and use Python 3.8; this is indeed more future-proof. I still think it's good to declare these versions in the make command in the Dockerfile; this way a change in Makefile-variables.mk won't break the Docker building process.

Please let me know what you think!

marcovirgolin commented 3 years ago

@rdebokx perfect, it makes a lot of sense. Thanks for updating it to Ubuntu 20.04 with python3.8. I really appreciate this, thank you!