diff --git a/AUTHORS b/AUTHORS new file mode 100644 index 0000000000000000000000000000000000000000..844dfaa9cbaa97678e40b96b90b3f9727aef061d --- /dev/null +++ b/AUTHORS @@ -0,0 +1,15 @@ +####################################################################################### +# # +* Mark A. Abramson (Mark.A.Abramson@boeing.com), The Boeing Company. + +* Charles Audet (www.gerad.ca/Charles.Audet), GERAD and Departement de +mathematiques et de genie industriel, ecole Polytechnique de Montreal. + +* J.E. Dennis Jr. (www.caam.rice.edu/~dennis), Computational and Applied +Mathematics Department, Rice University. + +* Sebastien Le Digabel (www.gerad.ca/Sebastien.Le.Digabel), GERAD and Departement +de mathematiques et de genie industriel, ecole Polytechnique de Montreal. + +* Christophe Tribes, GERAD, Departement +de mathematiques et de genie industriel, Department of mechanical engineering, ecole Polytechnique de Montreal. diff --git a/COPYING b/COPYING new file mode 100644 index 0000000000000000000000000000000000000000..72547d4f2a0f545200ccab6a32259fce7d035b06 --- /dev/null +++ b/COPYING @@ -0,0 +1,38 @@ +####################################################################################### +# # +# NOMAD - Nonsmooth Optimization by Mesh Adaptive Direct search # +# V 3.6.1 # +# 2013/05 # +# # +# Copyright (C) 2001-2013 # +# # +# Mark Abramson - the Boeing Company, Seattle # +# Charles Audet - Ecole Polytechnique, Montreal # +# Gilles Couture - Ecole Polytechnique, Montreal # +# John Dennis - Rice University, Houston # +# Sebastien Le Digabel - Ecole Polytechnique, Montreal # +# Christophe Tribes - Ecole Polytechnique, Montreal # +# # +#-------------------------------------------------------------------------------------# +# # +# Contact information: # +# Ecole Polytechnique de Montreal - GERAD # +# C.P. 6079, Succ. Centre-ville, Montreal (Quebec) H3C 3A7 Canada # +# e-mail: nomad@gerad.ca # +# phone : 1-514-340-6053 #6928 # +# fax : 1-514-340-5665 # +# # +# This program is free software: you can redistribute it and/or modify it under the # +# terms of the GNU Lesser General Public License as published by the Free Software # +# Foundation, either version 3 of the License, or (at your option) any later # +# version. # +# # +# This program is distributed in the hope that it will be useful, but WITHOUT ANY # +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A # +# PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. # +# # +# You should have received a copy of the GNU Lesser General Public License along # +# with this program. If not, see <http://www.gnu.org/licenses/>. # +# # +# You can find information on the NOMAD software at www.gerad.ca/nomad # +####################################################################################### diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 0000000000000000000000000000000000000000..6af6b2645499284e06c57227c21d5632d52d5738 --- /dev/null +++ b/ChangeLog @@ -0,0 +1,14 @@ +2013-03: NOMAD 3.6 + -ortho n+1 +2011-01: NOMAD 3.5 + -Quadratic Models +2010-05: NOMAD 3.4 + -Parallelism +2009-11: NOMAD 3.3 + -Categorical variables +2009-07: NOMAD 3.2 + -VNS; Installers; Help features +2009-02: NOMAD 3.1 + -Bi-objective; types of variables +2008-11: NOMAD 3.0 + -New architecture diff --git a/INSTALL b/INSTALL new file mode 100644 index 0000000000000000000000000000000000000000..007e9396d0a2492cd2d6e17d42f359655dfe0b5e --- /dev/null +++ b/INSTALL @@ -0,0 +1,370 @@ +Installation Instructions +************************* + +Copyright (C) 1994-1996, 1999-2002, 2004-2013 Free Software Foundation, +Inc. + + Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. This file is offered as-is, +without warranty of any kind. + +Basic Installation +================== + + Briefly, the shell commands `./configure; make; make install' should +configure, build, and install this package. The following +more-detailed instructions are generic; see the `README' file for +instructions specific to this package. Some packages provide this +`INSTALL' file but do not implement all of the features documented +below. The lack of an optional feature in a given package is not +necessarily a bug. More recommendations for GNU packages can be found +in *note Makefile Conventions: (standards)Makefile Conventions. + + The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions. Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, and a +file `config.log' containing compiler output (useful mainly for +debugging `configure'). + + It can also use an optional file (typically called `config.cache' +and enabled with `--cache-file=config.cache' or simply `-C') that saves +the results of its tests to speed up reconfiguring. Caching is +disabled by default to prevent problems with accidental use of stale +cache files. + + If you need to do unusual things to compile the package, please try +to figure out how `configure' could check whether to do them, and mail +diffs or instructions to the address given in the `README' so they can +be considered for the next release. If you are using the cache, and at +some point `config.cache' contains results you don't want to keep, you +may remove or edit it. + + The file `configure.ac' (or `configure.in') is used to create +`configure' by a program called `autoconf'. You need `configure.ac' if +you want to change it or regenerate `configure' using a newer version +of `autoconf'. + + The simplest way to compile this package is: + + 1. `cd' to the directory containing the package's source code and type + `./configure' to configure the package for your system. + + Running `configure' might take a while. While running, it prints + some messages telling which features it is checking for. + + 2. Type `make' to compile the package. + + 3. Optionally, type `make check' to run any self-tests that come with + the package, generally using the just-built uninstalled binaries. + + 4. Type `make install' to install the programs and any data files and + documentation. When installing into a prefix owned by root, it is + recommended that the package be configured and built as a regular + user, and only the `make install' phase executed with root + privileges. + + 5. Optionally, type `make installcheck' to repeat any self-tests, but + this time using the binaries in their final installed location. + This target does not install anything. Running this target as a + regular user, particularly if the prior `make install' required + root privileges, verifies that the installation completed + correctly. + + 6. You can remove the program binaries and object files from the + source code directory by typing `make clean'. To also remove the + files that `configure' created (so you can compile the package for + a different kind of computer), type `make distclean'. There is + also a `make maintainer-clean' target, but that is intended mainly + for the package's developers. If you use it, you may have to get + all sorts of other programs in order to regenerate files that came + with the distribution. + + 7. Often, you can also type `make uninstall' to remove the installed + files again. In practice, not all packages have tested that + uninstallation works correctly, even though it is required by the + GNU Coding Standards. + + 8. Some packages, particularly those that use Automake, provide `make + distcheck', which can by used by developers to test that all other + targets like `make install' and `make uninstall' work correctly. + This target is generally not run by end users. + +Compilers and Options +===================== + + Some systems require unusual options for compilation or linking that +the `configure' script does not know about. Run `./configure --help' +for details on some of the pertinent environment variables. + + You can give `configure' initial values for configuration parameters +by setting variables in the command line or in the environment. Here +is an example: + + ./configure CC=c99 CFLAGS=-g LIBS=-lposix + + *Note Defining Variables::, for more details. + +Compiling For Multiple Architectures +==================================== + + You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you can use GNU `make'. `cd' to the +directory where you want the object files and executables to go and run +the `configure' script. `configure' automatically checks for the +source code in the directory that `configure' is in and in `..'. This +is known as a "VPATH" build. + + With a non-GNU `make', it is safer to compile the package for one +architecture at a time in the source code directory. After you have +installed the package for one architecture, use `make distclean' before +reconfiguring for another architecture. + + On MacOS X 10.5 and later systems, you can create libraries and +executables that work on multiple system types--known as "fat" or +"universal" binaries--by specifying multiple `-arch' options to the +compiler but only a single `-arch' option to the preprocessor. Like +this: + + ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ + CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ + CPP="gcc -E" CXXCPP="g++ -E" + + This is not guaranteed to produce working output in all cases, you +may have to build one architecture at a time and combine the results +using the `lipo' tool if you have problems. + +Installation Names +================== + + By default, `make install' installs the package's commands under +`/usr/local/bin', include files under `/usr/local/include', etc. You +can specify an installation prefix other than `/usr/local' by giving +`configure' the option `--prefix=PREFIX', where PREFIX must be an +absolute file name. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +pass the option `--exec-prefix=PREFIX' to `configure', the package uses +PREFIX as the prefix for installing programs and libraries. +Documentation and other data files still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like `--bindir=DIR' to specify different values for particular +kinds of files. Run `configure --help' for a list of the directories +you can set and what kinds of files go in them. In general, the +default for these options is expressed in terms of `${prefix}', so that +specifying just `--prefix' will affect all of the other directory +specifications that were not explicitly provided. + + The most portable way to affect installation locations is to pass the +correct locations to `configure'; however, many packages provide one or +both of the following shortcuts of passing variable assignments to the +`make install' command line to change installation locations without +having to reconfigure or recompile. + + The first method involves providing an override variable for each +affected directory. For example, `make install +prefix=/alternate/directory' will choose an alternate location for all +directory configuration variables that were expressed in terms of +`${prefix}'. Any directories that were specified during `configure', +but not in terms of `${prefix}', must each be overridden at install +time for the entire installation to be relocated. The approach of +makefile variable overrides for each directory variable is required by +the GNU Coding Standards, and ideally causes no recompilation. +However, some platforms have known limitations with the semantics of +shared libraries that end up requiring recompilation when using this +method, particularly noticeable in packages that use GNU Libtool. + + The second method involves providing the `DESTDIR' variable. For +example, `make install DESTDIR=/alternate/directory' will prepend +`/alternate/directory' before all installation names. The approach of +`DESTDIR' overrides is not required by the GNU Coding Standards, and +does not work on platforms that have drive letters. On the other hand, +it does better at avoiding recompilation issues, and works well even +when some directory options were not specified in terms of `${prefix}' +at `configure' time. + +Optional Features +================= + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + + Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System). The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + + For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + + Some packages offer the ability to configure how verbose the +execution of `make' will be. For these packages, running `./configure +--enable-silent-rules' sets the default to minimal output, which can be +overridden with `make V=1'; while running `./configure +--disable-silent-rules' sets the default to verbose, which can be +overridden with `make V=0'. + +Particular systems +================== + + On HP-UX, the default C compiler is not ANSI C compatible. If GNU +CC is not installed, it is recommended to use the following options in +order to use an ANSI C compiler: + + ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" + +and if that doesn't work, install pre-built binaries of GCC for HP-UX. + + HP-UX `make' updates targets which have the same time stamps as +their prerequisites, which makes it generally unusable when shipped +generated files such as `configure' are involved. Use GNU `make' +instead. + + On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot +parse its `<wchar.h>' header file. The option `-nodtk' can be used as +a workaround. If GNU CC is not installed, it is therefore recommended +to try + + ./configure CC="cc" + +and if that doesn't work, try + + ./configure CC="cc -nodtk" + + On Solaris, don't put `/usr/ucb' early in your `PATH'. This +directory contains several dysfunctional programs; working variants of +these programs are available in `/usr/bin'. So, if you need `/usr/ucb' +in your `PATH', put it _after_ `/usr/bin'. + + On Haiku, software installed for all users goes in `/boot/common', +not `/usr/local'. It is recommended to use the following options: + + ./configure --prefix=/boot/common + +Specifying the System Type +========================== + + There may be some features `configure' cannot figure out +automatically, but needs to determine by the type of machine the package +will run on. Usually, assuming the package is built to be run on the +_same_ architectures, `configure' can figure that out, but if it prints +a message saying it cannot guess the machine type, give it the +`--build=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name which has the form: + + CPU-COMPANY-SYSTEM + +where SYSTEM can have one of these forms: + + OS + KERNEL-OS + + See the file `config.sub' for the possible values of each field. If +`config.sub' isn't included in this package, then this package doesn't +need to know the machine type. + + If you are _building_ compiler tools for cross-compiling, you should +use the option `--target=TYPE' to select the type of system they will +produce code for. + + If you want to _use_ a cross compiler, that generates code for a +platform different from the build platform, you should specify the +"host" platform (i.e., that on which the generated programs will +eventually be run) with `--host=TYPE'. + +Sharing Defaults +================ + + If you want to set default values for `configure' scripts to share, +you can create a site shell script called `config.site' that gives +default values for variables like `CC', `cache_file', and `prefix'. +`configure' looks for `PREFIX/share/config.site' if it exists, then +`PREFIX/etc/config.site' if it exists. Or, you can set the +`CONFIG_SITE' environment variable to the location of the site script. +A warning: not all `configure' scripts look for a site script. + +Defining Variables +================== + + Variables not defined in a site shell script can be set in the +environment passed to `configure'. However, some packages may run +configure again during the build, and the customized values of these +variables may be lost. In order to avoid this problem, you should set +them in the `configure' command line, using `VAR=value'. For example: + + ./configure CC=/usr/local2/bin/gcc + +causes the specified `gcc' to be used as the C compiler (unless it is +overridden in the site shell script). + +Unfortunately, this technique does not work for `CONFIG_SHELL' due to +an Autoconf limitation. Until the limitation is lifted, you can use +this workaround: + + CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash + +`configure' Invocation +====================== + + `configure' recognizes the following options to control how it +operates. + +`--help' +`-h' + Print a summary of all of the options to `configure', and exit. + +`--help=short' +`--help=recursive' + Print a summary of the options unique to this package's + `configure', and exit. The `short' variant lists options used + only in the top level, while the `recursive' variant lists options + also present in any nested packages. + +`--version' +`-V' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`--cache-file=FILE' + Enable the cache: use and save the results of the tests in FILE, + traditionally `config.cache'. FILE defaults to `/dev/null' to + disable caching. + +`--config-cache' +`-C' + Alias for `--cache-file=config.cache'. + +`--quiet' +`--silent' +`-q' + Do not print messages saying which checks are being made. To + suppress all normal output, redirect it to `/dev/null' (any error + messages will still be shown). + +`--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + `configure' can determine that directory automatically. + +`--prefix=DIR' + Use DIR as the installation prefix. *note Installation Names:: + for more details, including other options available for fine-tuning + the installation locations. + +`--no-create' +`-n' + Run the configure checks, but stop before creating any output + files. + +`configure' also accepts some other, not widely useful, options. Run +`configure --help' for more details. diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 0000000000000000000000000000000000000000..d5286b3ae8ca6319d44abd2b1b97922304f6701a --- /dev/null +++ b/Makefile.am @@ -0,0 +1,3 @@ +ACLOCAL_AMFLAGS = -I m4 +SUBDIRS = src +EXTRA_DIST = autogen.sh \ No newline at end of file diff --git a/NEWS b/NEWS new file mode 100644 index 0000000000000000000000000000000000000000..6ea9a078b622b42d4c94b748d0d8c8b738b3fe12 --- /dev/null +++ b/NEWS @@ -0,0 +1 @@ +2014: Use GNU autotools to build NOMAD. diff --git a/README b/README new file mode 100644 index 0000000000000000000000000000000000000000..96df2cf5b1780d15a5667ef47fc3758e112241ca --- /dev/null +++ b/README @@ -0,0 +1,115 @@ +####################################################################################### +# # +# README # +# # +####################################################################################### +# # +# NOMAD - Nonsmooth Optimization by Mesh Adaptive Direct search # +# V 3.6.1 # +# 2013/05 # +# # +# Copyright (C) 2001-2013 # +# # +# Mark Abramson - the Boeing Company, Seattle # +# Charles Audet - Ecole Polytechnique, Montreal # +# Gilles Couture - Ecole Polytechnique, Montreal # +# John Dennis - Rice University, Houston # +# Sebastien Le Digabel - Ecole Polytechnique, Montreal # +# Christophe Tribes - Ecole Polytechnique, Montreal # +# # +#-------------------------------------------------------------------------------------# +# # +# Contact information: # +# Ecole Polytechnique de Montreal - GERAD # +# C.P. 6079, Succ. Centre-ville, Montreal (Quebec) H3C 3A7 Canada # +# e-mail: nomad@gerad.ca # +# phone : 1-514-340-6053 #6928 # +# fax : 1-514-340-5665 # +# # +# This program is free software: you can redistribute it and/or modify it under the # +# terms of the GNU Lesser General Public License as published by the Free Software # +# Foundation, either version 3 of the License, or (at your option) any later # +# version. # +# # +# This program is distributed in the hope that it will be useful, but WITHOUT ANY # +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A # +# PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. # +# # +# +# You should have received a copy of the GNU Lesser General Public License along # +# with this program. If not, see <http://www.gnu.org/licenses/>. # +# # +# You can find information on the NOMAD software at www.gerad.ca/nomad # +####################################################################################### + + + AUTHORS : + +* Mark A. Abramson (Mark.A.Abramson@boeing.com), The Boeing Company. + +* Charles Audet (www.gerad.ca/Charles.Audet), GERAD and Departement de +mathematiques et de genie industriel, ecole Polytechnique de Montreal. + +* J.E. Dennis Jr. (www.caam.rice.edu/~dennis), Computational and Applied +Mathematics Department, Rice University. + +* Sebastien Le Digabel (www.gerad.ca/Sebastien.Le.Digabel), GERAD and Departement +de mathematiques et de genie industriel, ecole Polytechnique de Montreal. + +* Christophe Tribes, GERAD, Departement +de mathematiques et de genie industriel, Department of mechanical engineering, ecole Polytechnique de Montreal. + + DESCRIPTION : + +NOMAD is a C++ implementation of the Mesh Adaptive Direct Search (MADS) algorithm, +designed for constrained optimization of black-box functions. + +The project started in 2001, and was funded in part by AFOSR, CRIAQ, FQRNT, LANL, +NSERC, the Boeing Company, and ExxonMobil Upstream Research Company. + + + WEB PAGE : + +http://www.gerad.ca/nomad/ + + + FURTHER INSTRUCTIONS : + +Please visit the web page for futher instruction on the following: + + * Downloading, configuring, compiling, and installing NOMAD + * Using NOMAD and setting the parameters + * Reports on NOMAD + * How to report bugs and make enhancement requests + * And more... + + + BATCH OR LIBRARY MODE : + +NOMAD is designed to be used in two different modes : batch and library. +The batch mode is intended for a basic ans simple usage of the MADS method, +while the library mode allows more flexibility. +For example, in batch mode, users must define their separate black-box program, +that will be called with system calls by NOMAD. +In library mode, users can define their black-box function as C++ code +that will be directly called by NOMAD, without system calls and temporary files. + + + TYPES OF USE : + +There are two ways of using NOMAD, one can directly use an executable or compile +the source code. + +NOMAD batch mode executable is located in directory $NOMAD_HOME/bin or %NOMAD_HOME%\bin. +In order to avoid compiling the code, you can simply use this executable. + + + HOW TO EXECUTE NOMAD : + +For informations about the execution of NOMAD, please read the user guide : + + $NOMAD_HOME/doc/user_guide.pdf or %NOMAD_HOME%\doc\user_guide.pdf + +or + + http://www.gerad.ca/NOMAD/Downloads/user_guide.pdf diff --git a/autogen.sh b/autogen.sh new file mode 100755 index 0000000000000000000000000000000000000000..fd0be89cef47d1048a71342401986e5cb4fd2190 --- /dev/null +++ b/autogen.sh @@ -0,0 +1,2 @@ +#!/bin/sh +autoreconf --force --install -I config -I m4 diff --git a/m4/lx_find_mpi.m4 b/m4/lx_find_mpi.m4 new file mode 100644 index 0000000000000000000000000000000000000000..fbca314b4e9b2a775db99a4de08829fee32476a9 --- /dev/null +++ b/m4/lx_find_mpi.m4 @@ -0,0 +1,203 @@ +################################################################################################# +# Copyright (c) 2010, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory +# Written by Todd Gamblin, tgamblin@llnl.gov. +# LLNL-CODE-417602 +# All rights reserved. +# +# This file is part of Libra. For details, see http://github.com/tgamblin/libra. +# Please also read the LICENSE file for further information. +# +# Redistribution and use in source and binary forms, with or without modification, are +# permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of +# conditions and the disclaimer below. +# * Redistributions in binary form must reproduce the above copyright notice, this list of +# conditions and the disclaimer (as noted below) in the documentation and/or other materials +# provided with the distribution. +# * Neither the name of the LLNS/LLNL nor the names of its contributors may be used to endorse +# or promote products derived from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS +# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL +# LAWRENCE LIVERMORE NATIONAL SECURITY, LLC, THE U.S. DEPARTMENT OF ENERGY OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +################################################################################################# + +# +# LX_FIND_MPI() +# ------------------------------------------------------------------------ +# This macro finds an MPI compiler and extracts includes and libraries from +# it for use in automake projects. The script exports the following variables: +# +# AC_DEFINE variables: +# HAVE_MPI AC_DEFINE'd to 1 if we found MPI +# +# AC_SUBST variables: +# MPICC Name of MPI compiler +# MPI_CFLAGS Includes and defines for MPI C compilation +# MPI_CLDFLAGS Libraries and library paths for linking MPI C programs +# +# MPICXX Name of MPI C++ compiler +# MPI_CXXFLAGS Includes and defines for MPI C++ compilation +# MPI_CXXLDFLAGS Libraries and library paths for linking MPI C++ programs +# +# MPIF77 Name of MPI Fortran 77 compiler +# MPI_F77FLAGS Includes and defines for MPI Fortran 77 compilation +# MPI_F77LDFLAGS Libraries and library paths for linking MPI Fortran 77 programs +# +# MPIFC Name of MPI Fortran compiler +# MPI_FFLAGS Includes and defines for MPI Fortran compilation +# MPI_FLDFLAGS Libraries and library paths for linking MPI Fortran programs +# +# Shell variables output by this macro: +# have_C_mpi 'yes' if we found MPI for C, 'no' otherwise +# have_CXX_mpi 'yes' if we found MPI for C++, 'no' otherwise +# have_F77_mpi 'yes' if we found MPI for F77, 'no' otherwise +# have_F_mpi 'yes' if we found MPI for Fortran, 'no' otherwise +# +AC_DEFUN([LX_FIND_MPI], +[ + AC_LANG_CASE( + [C], [ + AC_REQUIRE([AC_PROG_CC]) + if [[ ! -z "$MPICC" ]]; then + LX_QUERY_MPI_COMPILER(MPICC, [$MPICC], C) + else + LX_QUERY_MPI_COMPILER(MPICC, [mpicc mpiicc mpixlc mpipgcc], C) + fi + ], + [C++], [ + AC_REQUIRE([AC_PROG_CXX]) + if [[ ! -z "$MPICXX" ]]; then + LX_QUERY_MPI_COMPILER(MPICXX, [$MPICXX], CXX) + else + LX_QUERY_MPI_COMPILER(MPICXX, [mpicxx mpiCC mpic++ mpig++ mpiicpc mpipgCC mpixlC], CXX) + fi + ], + [F77], [ + AC_REQUIRE([AC_PROG_F77]) + if [[ ! -z "$MPIF77" ]]; then + LX_QUERY_MPI_COMPILER(MPIF77, [$MPIF77], F77) + else + LX_QUERY_MPI_COMPILER(MPIF77, [mpif77 mpiifort mpixlf77 mpixlf77_r], F77) + fi + ], + [Fortran], [ + AC_REQUIRE([AC_PROG_FC]) + if [[ ! -z "$MPIFC" ]]; then + LX_QUERY_MPI_COMPILER(MPIFC, [$MPIFC], F) + else + mpi_default_fc="mpif95 mpif90 mpigfortran mpif2003" + mpi_intel_fc="mpiifort" + mpi_xl_fc="mpixlf95 mpixlf95_r mpixlf90 mpixlf90_r mpixlf2003 mpixlf2003_r" + mpi_pg_fc="mpipgf95 mpipgf90" + LX_QUERY_MPI_COMPILER(MPIFC, [$mpi_default_fc $mpi_intel_fc $mpi_xl_fc $mpi_pg_fc], F) + fi + ]) +]) + + +# +# LX_QUERY_MPI_COMPILER([compiler-var-name], [compiler-names], [output-var-prefix]) +# ------------------------------------------------------------------------ +# AC_SUBST variables: +# MPI_<prefix>FLAGS Includes and defines for MPI compilation +# MPI_<prefix>LDFLAGS Libraries and library paths for linking MPI C programs +# +# Shell variables output by this macro: +# found_mpi_flags 'yes' if we were able to get flags, 'no' otherwise +# +AC_DEFUN([LX_QUERY_MPI_COMPILER], +[ + # Try to find a working MPI compiler from the supplied names + AC_PATH_PROGS($1, [$2], [not-found]) + + # Figure out what the compiler responds to to get it to show us the compile + # and link lines. After this part of the macro, we'll have a valid + # lx_mpi_command_line + echo -n "Checking whether $$1 responds to '-showme:compile'... " + lx_mpi_compile_line=`$$1 -showme:compile 2>/dev/null` + if [[ "$?" -eq 0 ]]; then + echo yes + lx_mpi_link_line=`$$1 -showme:link 2>/dev/null` + else + echo no + echo -n "Checking whether $$1 responds to '-showme'... " + lx_mpi_command_line=`$$1 -showme 2>/dev/null` + if [[ "$?" -ne 0 ]]; then + echo no + echo -n "Checking whether $$1 responds to '-compile-info'... " + lx_mpi_compile_line=`$$1 -compile-info 2>/dev/null` + if [[ "$?" -eq 0 ]]; then + echo yes + lx_mpi_link_line=`$$1 -link-info 2>/dev/null` + else + echo no + echo -n "Checking whether $$1 responds to '-show'... " + lx_mpi_command_line=`$$1 -show 2>/dev/null` + if [[ "$?" -eq 0 ]]; then + echo yes + else + echo no + fi + fi + else + echo yes + fi + fi + + if [[ ! -z "$lx_mpi_compile_line" -a ! -z "$lx_mpi_link_line" ]]; then + lx_mpi_command_line="$lx_mpi_compile_line $lx_mpi_link_line" + fi + + if [[ ! -z "$lx_mpi_command_line" ]]; then + # Now extract the different parts of the MPI command line. Do these separately in case we need to + # parse them all out in future versions of this macro. + lx_mpi_defines=` echo "$lx_mpi_command_line" | grep -o -- '\(^\| \)-D\([[^\"[:space:]]]\+\|\"[[^\"[:space:]]]\+\"\)'` + lx_mpi_includes=` echo "$lx_mpi_command_line" | grep -o -- '\(^\| \)-I\([[^\"[:space:]]]\+\|\"[[^\"[:space:]]]\+\"\)'` + lx_mpi_link_paths=` echo "$lx_mpi_command_line" | grep -o -- '\(^\| \)-L\([[^\"[:space:]]]\+\|\"[[^\"[:space:]]]\+\"\)'` + lx_mpi_libs=` echo "$lx_mpi_command_line" | grep -o -- '\(^\| \)-l\([[^\"[:space:]]]\+\|\"[[^\"[:space:]]]\+\"\)'` + lx_mpi_link_args=` echo "$lx_mpi_command_line" | grep -o -- '\(^\| \)-Wl,\([[^\"[:space:]]]\+\|\"[[^\"[:space:]]]\+\"\)'` + + # Create variables and clean up newlines and multiple spaces + MPI_$3FLAGS="$lx_mpi_defines $lx_mpi_includes" + MPI_$3LDFLAGS="$lx_mpi_link_paths $lx_mpi_libs $lx_mpi_link_args" + MPI_$3FLAGS=` echo "$MPI_$3FLAGS" | tr '\n' ' ' | sed 's/^[[ \t]]*//;s/[[ \t]]*$//' | sed 's/ +/ /g'` + MPI_$3LDFLAGS=`echo "$MPI_$3LDFLAGS" | tr '\n' ' ' | sed 's/^[[ \t]]*//;s/[[ \t]]*$//' | sed 's/ +/ /g'` + + OLD_CPPFLAGS=$CPPFLAGS + OLD_LIBS=$LIBS + CPPFLAGS=$MPI_$3FLAGS + LIBS=$MPI_$3LDFLAGS + + AC_TRY_LINK([#include <mpi.h>], + [int rank, size; + MPI_Comm_rank(MPI_COMM_WORLD, &rank); + MPI_Comm_size(MPI_COMM_WORLD, &size);], + [# Add a define for testing at compile time. + AC_DEFINE([HAVE_MPI], [1], [Define to 1 if you have MPI libs and headers.]) + have_$3_mpi='yes'], + [# zero out mpi flags so we don't link against the faulty library. + MPI_$3FLAGS="" + MPI_$3LDFLAGS="" + have_$3_mpi='no']) + + # AC_SUBST everything. + AC_SUBST($1) + AC_SUBST(MPI_$3FLAGS) + AC_SUBST(MPI_$3LDFLAGS) + + LIBS=$OLD_LIBS + CPPFLAGS=$OLD_CPPFLAGS + else + echo Unable to find suitable MPI Compiler. Try setting $1. + have_$3_mpi='no' + fi +]) diff --git a/m4/nomad.m4 b/m4/nomad.m4 new file mode 100644 index 0000000000000000000000000000000000000000..bd26c9efaa0f546797065e4217c5cfea25dc67f2 --- /dev/null +++ b/m4/nomad.m4 @@ -0,0 +1,18 @@ +# nomad.m4 - nomad specific autoconf macros + +AC_DEFUN([NOMAD_ENABLE_MODULE],[ +AM_CONDITIONAL([$1],[test x$$2 = xtrue]) +eval $1_ENABLE_VAL="`eval test "$$2" = "true" && echo "ENABLED" || echo "DISABLED"`" +]) + +AC_DEFUN([NOMAD_ENABLE_MPI], +[AC_ARG_ENABLE( + [mpi], + AC_HELP_STRING([--enable-mpi],[compile using MPI for supported codes [default=no]]), + [ case "${enableval}" in + yes) mpi=true;; + no) mpi=false;; + *) AC_MSG_ERROR(bad value ${enableval} for --enable-mpi) ;; + esac + ], [ mpi=false ] ) +]) diff --git a/nomad.pc.in b/nomad.pc.in new file mode 100644 index 0000000000000000000000000000000000000000..1a93446ef429093766500e6521951bb09202e3e5 --- /dev/null +++ b/nomad.pc.in @@ -0,0 +1,10 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: nomad +Version: @VERSION@ +Description: NOMAD +Libs: ${libdir}/libnomad.a -lc -lm +Cflags: -I${includedir} diff --git a/nomadmpi.pc.in b/nomadmpi.pc.in new file mode 100644 index 0000000000000000000000000000000000000000..d813e8ffeabadb6981dae1a550b9cfb0d6d5fd95 --- /dev/null +++ b/nomadmpi.pc.in @@ -0,0 +1,10 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: nomad.mpi +Version: @VERSION@ +Description: NOMAD +Libs: ${libdir}/libnomadmpi.a -lc -lm +Cflags: -I${includedir} diff --git a/src/Makefile.am b/src/Makefile.am new file mode 100644 index 0000000000000000000000000000000000000000..10468220d3699b4f1ac66e189675fb57a334f3da --- /dev/null +++ b/src/Makefile.am @@ -0,0 +1,63 @@ +lib_LIBRARIES = libnomad.a +libnomad_a_SOURCES = Barrier.cpp Cache.cpp Cache_File_Point.cpp Cache_Point.cpp\ + Cache_Search.cpp Clock.cpp Direction.cpp Directions.cpp Display.cpp\ + Double.cpp Eval_Point.cpp Evaluator_Control.cpp Evaluator.cpp\ + Exception.cpp Extended_Poll.cpp L_Curve.cpp LH_Search.cpp Mads.cpp\ + Mesh.cpp Model_Sorted_Point.cpp Model_Stats.cpp Multi_Obj_Evaluator.cpp\ + Parameter_Entries.cpp Parameter_Entry.cpp Parameters.cpp\ + Pareto_Front.cpp Pareto_Point.cpp Phase_One_Evaluator.cpp\ + Phase_One_Search.cpp Point.cpp Priority_Eval_Point.cpp Quad_Model.cpp\ + Quad_Model_Evaluator.cpp Quad_Model_Search.cpp Random_Pickup.cpp\ + RNG.cpp Signature.cpp Slave.cpp Speculative_Search.cpp Stats.cpp\ + TGP_Model.cpp TGP_Model_Evaluator.cpp TGP_Model_Search.cpp\ + TGP_Output_Model.cpp utils.cpp Variable_Group.cpp VNS_Search.cpp + +libnomadmpi_a_SOURCES = Barrier.cpp Cache.cpp Cache_File_Point.cpp Cache_Point.cpp\ + Cache_Search.cpp Clock.cpp Direction.cpp Directions.cpp Display.cpp\ + Double.cpp Eval_Point.cpp Evaluator_Control.cpp Evaluator.cpp\ + Exception.cpp Extended_Poll.cpp L_Curve.cpp LH_Search.cpp Mads.cpp\ + Mesh.cpp Model_Sorted_Point.cpp Model_Stats.cpp Multi_Obj_Evaluator.cpp\ + Parameter_Entries.cpp Parameter_Entry.cpp Parameters.cpp\ + Pareto_Front.cpp Pareto_Point.cpp Phase_One_Evaluator.cpp\ + Phase_One_Search.cpp Point.cpp Priority_Eval_Point.cpp Quad_Model.cpp\ + Quad_Model_Evaluator.cpp Quad_Model_Search.cpp Random_Pickup.cpp\ + RNG.cpp Signature.cpp Slave.cpp Speculative_Search.cpp Stats.cpp\ + TGP_Model.cpp TGP_Model_Evaluator.cpp TGP_Model_Search.cpp\ + TGP_Output_Model.cpp utils.cpp Variable_Group.cpp VNS_Search.cpp + +pkginclude_HEADERS = Cache_File_Point.hpp Cache.hpp Cache_Point.hpp\ + Cache_Search.hpp Clock.hpp defines.hpp Direction.hpp Directions.hpp\ + Display.hpp Double.hpp Eval_Point.hpp Evaluator_Control.hpp\ + Evaluator.hpp Exception.hpp Extended_Poll.hpp Filter_Point.hpp\ + L_Curve.hpp LH_Search.hpp Mads.hpp Mesh.hpp Model_Sorted_Point.hpp\ + Model_Stats.hpp Multi_Obj_Evaluator.hpp\ + Multi_Obj_Quad_Model_Evaluator.hpp nomad.hpp Parameter_Entries.hpp\ + Parameter_Entry.hpp Parameters.hpp Pareto_Front.hpp Pareto_Point.hpp\ + Phase_One_Evaluator.hpp Phase_One_Search.hpp Point.hpp\ + Priority_Eval_Point.hpp Quad_Model_Evaluator.hpp Quad_Model.hpp\ + Quad_Model_Search.hpp Random_Pickup.hpp RNG.hpp Search.hpp\ + Set_Element.hpp Signature_Element.hpp Signature.hpp\ + Single_Obj_Quad_Model_Evaluator.hpp Slave.hpp Speculative_Search.hpp\ + Stats.hpp TGP_Model_Evaluator.hpp TGP_Model.hpp TGP_Model_Search.hpp\ + TGP_Output_Model.hpp Uncopyable.hpp utils.hpp Variable_Group.hpp\ + VNS_Search.hpp Barrier.hpp + +bin_PROGRAMS = nomad +nomad_SOURCES = nomad.cpp +nomad_LDADD = libnomad.a + +pkgconfigdir = $(libdir)/pkgconfig +nodist_pkgconfig_DATA = ../nomad.pc +nomad.pc: ../nomad.pc.in + +if MPI_ENABLED +lib_LIBRARIES += libnomadmpi.a +libnomadmpi_a_CXXFLAGS = -DUSE_MPI $(MPI_LDFLAGS) $(MPI_CXXFLAGS) $(AM_CXXFLAGS) +nodist_pkgconfig_DATA += ../nomadmpi.pc +nomadmpi.pc: ../nomadmpi.pc.in +bin_PROGRAMS += nomad.mpi +nomad_mpi_SOURCES = nomad.cpp +nomad_mpi_LDADD = libnomadmpi.a +nomad_mpi_CXXFLAGS = -DUSE_MPI $(MPI_CXXFLAGS) $(AM_CXXFLAGS) +nomad_mpi_LDFLAGS = $(MPI_CXXLDFLAGS) $(AM_CXXLDFLAGS) +endif diff --git a/src/makefile b/src/makefile deleted file mode 100644 index 9758c1d652abdf159ceca8a183204ac58d41c3c5..0000000000000000000000000000000000000000 --- a/src/makefile +++ /dev/null @@ -1,258 +0,0 @@ -EXE = ../bin/nomad -EXE_MPI = ../bin/nomad.MPI -LIB = ../lib/nomad.a -LIB_MPI = ../lib/nomad.MPI.a -COMPILATOR = g++ -COMPILATOR_MPI = mpic++ -SUNAME = $(shell uname) -OSS=$(findstring MINGW32,$(SUNAME)) -ifneq "$(strip $(OSS))" "" -COMPILATOR_MPI = g++ -EXE = ../bin/nomad.exe -EXE_MPI = ../bin/nomad.MPI.exe -endif - -BUILD_DIR_NO_MPI = ../builds/ObjsNoMPI -BUILD_DIR_MPI = ../builds/ObjsMPI -BUILD_DIR = -# COMPILATOR_OPTIONS = -O2 -ansi -Wall -COMPILATOR_OPTIONS = -g -ansi -Wall -# COMPILATOR_OPTIONS_MPI = $(COMPILATOR_OPTIONS) -DUSE_MPI -COMPILATOR_OPTIONS_MPI = $(COMPILATOR_OPTIONS) -DUSE_MPI # -DMPICH_IGNORE_CXX_SEEK -DMPICH_SKIP_MPICXX -LIBS = -lm -LIBS_MPI = $(LIBS) -lmpi -INCLUDE = -I. -COMPILE = -COMPILE_NO_MPI = $(COMPILATOR) $(COMPILATOR_OPTIONS) $(INCLUDE) -c -COMPILE_MPI = $(COMPILATOR_MPI) $(COMPILATOR_OPTIONS_MPI) $(INCLUDE) -c -OBJS_LIB = $(BUILD_DIR)/Barrier.o $(BUILD_DIR)/Cache.o $(BUILD_DIR)/Cache_File_Point.o $(BUILD_DIR)/Cache_Point.o \ - $(BUILD_DIR)/Cache_Search.o $(BUILD_DIR)/Clock.o $(BUILD_DIR)/Direction.o $(BUILD_DIR)/Directions.o $(BUILD_DIR)/Display.o \ - $(BUILD_DIR)/Double.o $(BUILD_DIR)/Eval_Point.o $(BUILD_DIR)/Evaluator.o $(BUILD_DIR)/Evaluator_Control.o \ - $(BUILD_DIR)/Exception.o $(BUILD_DIR)/Extended_Poll.o $(BUILD_DIR)/L_Curve.o $(BUILD_DIR)/LH_Search.o $(BUILD_DIR)/Mads.o \ - $(BUILD_DIR)/Mesh.o $(BUILD_DIR)/Model_Sorted_Point.o $(BUILD_DIR)/Model_Stats.o $(BUILD_DIR)/Multi_Obj_Evaluator.o \ - $(BUILD_DIR)/Parameters.o $(BUILD_DIR)/Parameter_Entries.o $(BUILD_DIR)/Parameter_Entry.o \ - $(BUILD_DIR)/Pareto_Front.o $(BUILD_DIR)/Pareto_Point.o $(BUILD_DIR)/Phase_One_Evaluator.o \ - $(BUILD_DIR)/Phase_One_Search.o $(BUILD_DIR)/Point.o $(BUILD_DIR)/Priority_Eval_Point.o $(BUILD_DIR)/Quad_Model.o \ - $(BUILD_DIR)/Quad_Model_Evaluator.o $(BUILD_DIR)/Quad_Model_Search.o $(BUILD_DIR)/Random_Pickup.o \ - $(BUILD_DIR)/RNG.o $(BUILD_DIR)/Signature.o $(BUILD_DIR)/Slave.o $(BUILD_DIR)/Speculative_Search.o $(BUILD_DIR)/Stats.o \ - $(BUILD_DIR)/utils.o $(BUILD_DIR)/Variable_Group.o $(BUILD_DIR)/VNS_Search.o - -OBJS = $(BUILD_DIR)/nomad.o $(OBJS_LIB) - - -all: - @mkdir -p $(BUILD_DIR_NO_MPI) - $(MAKE) BUILD_DIR=$(BUILD_DIR_NO_MPI) COMPILE='$(COMPILE_NO_MPI)' $(EXE) $(LIB) - -mpi: - @mkdir -p $(BUILD_DIR_MPI) - $(MAKE) BUILD_DIR=$(BUILD_DIR_MPI) COMPILE='$(COMPILE_MPI)' $(EXE_MPI) $(LIB_MPI) - -installAllNomad: all mpi - @echo "cleaning obj files and build directories" - @rm -rf $(BUILD_DIR_NO_MPI) $(BUILD_DIR_MPI) - -clean: - @echo "cleaning obj files and build directories" - @rm -rf $(BUILD_DIR_NO_MPI) $(BUILD_DIR_MPI) - -del: clean - @echo "cleaning trash files" - @rm -f core *~ - @echo "cleaning exe file" - @rm -f $(EXE) $(EXE_MPI) - @echo "cleaning lib files" - @rm -f $(LIB) $(LIB_MPI) - -$(EXE): $(OBJS) - @echo "building the release version (no MPI)" - @echo "exe file: "$(EXE) - @$(COMPILATOR) -o $(EXE) $(OBJS) $(LIBS) $(COMPILATOR_OPTIONS) - @strip $(EXE) - -$(LIB): $(OBJS_LIB) - @echo "building the library (no MPI)" - @echo "lib file: "$(LIB) - @rm -f $(LIB) - @ar -r $(LIB) $(OBJS_LIB) - @ranlib $(LIB) - -$(EXE_MPI): $(OBJS) - @echo "building the release version (MPI)" - @echo "exe file: "$(EXE_MPI) - @$(COMPILATOR_MPI) -o $(EXE_MPI) $(OBJS) $(LIBS_MPI) $(COMPILATOR_OPTIONS_MPI) - @strip $(EXE_MPI) - -$(LIB_MPI): $(OBJS_LIB) - @echo "building the MPI library" - @echo "lib file: "$(LIB_MPI) - @rm -f $(LIB_MPI) - @ar -r $(LIB_MPI) $(OBJS_LIB) - @ranlib $(LIB_MPI) - -#$(BUILD_DIR)/%.o: %.cpp %.hpp -# $(COMPILE) $< -o $@ - -$(BUILD_DIR)/Barrier.o: Barrier.cpp Barrier.hpp Filter_Point.hpp Set_Element.hpp - $(COMPILE) Barrier.cpp -o $@ - -$(BUILD_DIR)/Cache.o: Cache.cpp Cache.hpp - $(COMPILE) Cache.cpp -o $@ - -$(BUILD_DIR)/Cache_File_Point.o: Cache_File_Point.cpp Cache_File_Point.hpp \ - Eval_Point.cpp Eval_Point.hpp Uncopyable.hpp - $(COMPILE) Cache_File_Point.cpp -o $@ - -$(BUILD_DIR)/Cache_Point.o: Cache_Point.cpp Cache_Point.hpp - $(COMPILE) Cache_Point.cpp -o $@ - -$(BUILD_DIR)/Cache_Search.o: Cache_Search.cpp Cache_Search.hpp Search.hpp - $(COMPILE) Cache_Search.cpp -o $@ - -$(BUILD_DIR)/Clock.o: Clock.cpp Clock.hpp - $(COMPILE) Clock.cpp -o $@ - -$(BUILD_DIR)/Direction.o: Direction.cpp Direction.hpp Point.hpp - $(COMPILE) Direction.cpp -o $@ - -$(BUILD_DIR)/Directions.o: Directions.cpp Directions.hpp Mesh.hpp Random_Pickup.hpp RNG.hpp - $(COMPILE) Directions.cpp -o $@ - -$(BUILD_DIR)/Display.o: Display.cpp Display.hpp utils.hpp - $(COMPILE) Display.cpp -o $@ - -$(BUILD_DIR)/Double.o: Double.cpp Double.hpp Exception.hpp Display.hpp - $(COMPILE) Double.cpp -o $@ - -$(BUILD_DIR)/Eval_Point.o: Eval_Point.cpp Eval_Point.hpp Parameters.hpp Cache_File_Point.hpp \ - Set_Element.hpp - $(COMPILE) Eval_Point.cpp -o $@ - -$(BUILD_DIR)/Evaluator.o: Evaluator.cpp Evaluator.hpp Priority_Eval_Point.hpp Stats.hpp - $(COMPILE) Evaluator.cpp -o $@ - -$(BUILD_DIR)/Evaluator_Control.o: Evaluator_Control.cpp Evaluator_Control.hpp \ - Barrier.hpp Pareto_Front.hpp Slave.hpp Quad_Model.hpp TGP_Model.hpp - $(COMPILE) Evaluator_Control.cpp -o $@ - -$(BUILD_DIR)/Exception.o: Exception.cpp Exception.hpp - $(COMPILE) Exception.cpp -o $@ - -$(BUILD_DIR)/Extended_Poll.o: Extended_Poll.cpp Extended_Poll.hpp Signature_Element.hpp \ - Set_Element.hpp Mads.hpp - $(COMPILE) Extended_Poll.cpp -o $@ - -$(BUILD_DIR)/L_Curve.o: L_Curve.cpp L_Curve.hpp Double.hpp Uncopyable.hpp - $(COMPILE) L_Curve.cpp -o $@ - -$(BUILD_DIR)/LH_Search.o: LH_Search.cpp LH_Search.hpp Search.hpp Mads.hpp RNG.hpp Evaluator_Control.hpp - $(COMPILE) LH_Search.cpp -o $@ - -$(BUILD_DIR)/Mads.o: Mads.cpp Mads.hpp Evaluator_Control.hpp L_Curve.hpp \ - LH_Search.hpp LH_Search.cpp \ - Speculative_Search.cpp Speculative_Search.hpp \ - Extended_Poll.cpp Extended_Poll.hpp \ - VNS_Search.hpp VNS_Search.cpp \ - Quad_Model_Search.hpp Quad_Model_Search.cpp \ - Cache_Search.hpp Cache_Search.cpp \ - Phase_One_Search.cpp Phase_One_Search.hpp - $(COMPILE) Mads.cpp -o $@ - -$(BUILD_DIR)/Mesh.o: Mesh.cpp Mesh.hpp Point.hpp - $(COMPILE) Mesh.cpp -o $@ - -$(BUILD_DIR)/Multi_Obj_Evaluator.o: Multi_Obj_Evaluator.cpp Multi_Obj_Evaluator.hpp Phase_One_Evaluator.hpp - $(COMPILE) Multi_Obj_Evaluator.cpp -o $@ - -$(BUILD_DIR)/Model_Sorted_Point.o: Model_Sorted_Point.cpp Model_Sorted_Point.hpp Point.hpp - $(COMPILE) Model_Sorted_Point.cpp -o $@ - -$(BUILD_DIR)/Model_Stats.o: Model_Stats.cpp Model_Stats.hpp Double.hpp - $(COMPILE) Model_Stats.cpp -o $@ - -$(BUILD_DIR)/nomad.o: nomad.cpp nomad.hpp Mads.hpp - $(COMPILE) nomad.cpp -o $@ - -$(BUILD_DIR)/Parameters.o: Parameters.cpp Parameters.hpp Parameter_Entries.hpp Signature.hpp - $(COMPILE) Parameters.cpp -o $@ - -$(BUILD_DIR)/Parameter_Entries.o: Parameter_Entries.cpp Parameter_Entries.hpp Parameter_Entry.hpp - $(COMPILE) Parameter_Entries.cpp -o $@ - -$(BUILD_DIR)/Parameter_Entry.o: Parameter_Entry.hpp Parameter_Entry.cpp Display.hpp Uncopyable.hpp - $(COMPILE) Parameter_Entry.cpp -o $@ - -$(BUILD_DIR)/Pareto_Front.o: Pareto_Front.cpp Pareto_Front.hpp Pareto_Point.hpp - $(COMPILE) Pareto_Front.cpp -o $@ - -$(BUILD_DIR)/Pareto_Point.o: Pareto_Point.cpp Pareto_Point.hpp Multi_Obj_Evaluator.hpp - $(COMPILE) Pareto_Point.cpp -o $@ - -$(BUILD_DIR)/Phase_One_Evaluator.o: Phase_One_Evaluator.cpp Phase_One_Evaluator.hpp Evaluator.hpp - $(COMPILE) Phase_One_Evaluator.cpp -o $@ - -$(BUILD_DIR)/Phase_One_Search.o: Phase_One_Search.cpp Phase_One_Search.hpp Mads.hpp \ - Search.hpp Evaluator_Control.hpp - $(COMPILE) Phase_One_Search.cpp -o $@ - -$(BUILD_DIR)/Point.o: Point.cpp Point.hpp Double.hpp - $(COMPILE) Point.cpp -o $@ - -$(BUILD_DIR)/Priority_Eval_Point.o: Priority_Eval_Point.cpp Priority_Eval_Point.hpp Eval_Point.hpp \ - Set_Element.hpp - $(COMPILE) Priority_Eval_Point.cpp -o $@ - -$(BUILD_DIR)/Quad_Model.o: Quad_Model.cpp Quad_Model.hpp Cache.hpp Model_Sorted_Point.hpp - $(COMPILE) Quad_Model.cpp -o $@ - -$(BUILD_DIR)/Quad_Model_Evaluator.o: Quad_Model_Evaluator.cpp Quad_Model_Evaluator.hpp \ - Evaluator.hpp Search.hpp - $(COMPILE) Quad_Model_Evaluator.cpp -o $@ - -$(BUILD_DIR)/Quad_Model_Search.o: Quad_Model_Search.cpp Quad_Model_Search.hpp Mads.hpp \ - Quad_Model_Evaluator.hpp - $(COMPILE) Quad_Model_Search.cpp -o $@ - -$(BUILD_DIR)/Random_Pickup.o: Random_Pickup.cpp Random_Pickup.hpp RNG.cpp RNG.hpp Uncopyable.hpp - $(COMPILE) Random_Pickup.cpp -o $@ - -$(BUILD_DIR)/RNG.o: RNG.cpp RNG.hpp defines.hpp - $(COMPILE) RNG.cpp -o $@ - -$(BUILD_DIR)/Signature.o: Signature.cpp Signature.hpp Variable_Group.hpp - $(COMPILE) Signature.cpp -o $@ - -$(BUILD_DIR)/Slave.o: Slave.cpp Slave.hpp Evaluator.hpp - $(COMPILE) Slave.cpp -o $@ - -$(BUILD_DIR)/Speculative_Search.o: Speculative_Search.cpp Speculative_Search.hpp Mads.hpp Search.hpp \ - Evaluator_Control.hpp - $(COMPILE) Speculative_Search.cpp -o $@ - -$(BUILD_DIR)/Stats.o: Stats.cpp Stats.hpp Clock.hpp Double.hpp Model_Stats.hpp - $(COMPILE) Stats.cpp -o $@ - -TGP_Model.o: TGP_Model.cpp TGP_Model.hpp TGP_Output_Model.hpp Cache.hpp Model_Sorted_Point.hpp - $(COMPILE) TGP_Model.cpp - -TGP_Model_Evaluator.o: TGP_Model_Evaluator.cpp TGP_Model_Evaluator.hpp \ - Evaluator.hpp Search.hpp - $(COMPILE) TGP_Model_Evaluator.cpp - -TGP_Model_Search.o: TGP_Model_Search.cpp TGP_Model_Search.hpp \ - LH_Search.hpp TGP_Model_Evaluator.hpp - $(COMPILE) TGP_Model_Search.cpp - -TGP_Output_Model.o: TGP_Output_Model.cpp TGP_Output_Model.hpp Eval_Point.o $(LIB_TGP) - $(COMPILE) TGP_Output_Model.cpp - -$(BUILD_DIR)/utils.o: utils.cpp utils.hpp defines.hpp - $(COMPILE) utils.cpp -o $@ - -$(BUILD_DIR)/Variable_Group.o: Variable_Group.cpp Variable_Group.hpp Directions.hpp - $(COMPILE) Variable_Group.cpp -o $@ - -$(BUILD_DIR)/VNS_Search.o: VNS_Search.cpp VNS_Search.hpp Search.hpp Evaluator_Control.hpp - $(COMPILE) VNS_Search.cpp -o $@ - - diff --git a/src/makefile.TGP b/src/makefile.TGP deleted file mode 100644 index 490218ea18a71f7345c7b094bd68c3083f325de9..0000000000000000000000000000000000000000 --- a/src/makefile.TGP +++ /dev/null @@ -1,218 +0,0 @@ -EXE = ../bin/nomad -LIB = ../lib/nomad.a -COMPILATOR = g++ -COMPILATOR_OPTIONS = -O2 -ansi -pedantic -Wall -DUSE_TGP -LIB_TGP = $(TGP_HOME)/src-x86_64/tgp.so -LIBS = $(LIB_TGP) -lm -INCLUDE = -I$(TGP_HOME)/src-x86_64/ -I. -COMPILE = $(COMPILATOR) $(COMPILATOR_OPTIONS) $(INCLUDE) -c -OBJS_LIB = Barrier.o Cache.o Cache_File_Point.o Cache_Point.o \ - Cache_Search.o Clock.o Direction.o Directions.o Display.o \ - Double.o Eval_Point.o Evaluator.o Evaluator_Control.o \ - Exception.o Extended_Poll.o L_Curve.o LH_Search.o Mads.o \ - Mesh.o Model_Sorted_Point.o Model_Stats.o Multi_Obj_Evaluator.o \ - Parameters.o Parameter_Entries.o Parameter_Entry.o \ - Pareto_Front.o Pareto_Point.o Phase_One_Evaluator.o \ - Phase_One_Search.o Point.o Priority_Eval_Point.o Quad_Model.o \ - Quad_Model_Evaluator.o Quad_Model_Search.o Random_Pickup.o RNG.o \ - Signature.o Slave.o Speculative_Search.o Stats.o TGP_Model.o \ - TGP_Model_Evaluator.o TGP_Model_Search.o TGP_Output_Model.o \ - utils.o Variable_Group.o VNS_Search.o -OBJS = nomad.o $(OBJS_LIB) - -$(EXE): $(OBJS) - $(COMPILATOR) -o $(EXE) $(OBJS) $(LIBS) $(COMPILATOR_OPTIONS) - -all: clean $(OBJS) - @echo "building the release version (no MPI)" - @echo "exe file: "$(EXE) - @$(COMPILATOR) -o $(EXE) $(OBJS) $(LIBS) $(COMPILATOR_OPTIONS) - @strip $(EXE) - @echo "building the library (no MPI)" - @echo "lib file: "$(LIB) - @ar -r $(LIB) $(OBJS_LIB) - @ranlib $(LIB) - -lib: clean $(OBJS) - @echo "building the library (no MPI)" - @echo "lib file: "$(LIB) - @ar -r $(LIB) $(OBJS_LIB) - @ranlib $(LIB) - -Barrier.o: Barrier.cpp Barrier.hpp Filter_Point.hpp Set_Element.hpp Eval_Point.o Cache.o - $(COMPILE) Barrier.cpp - -Cache.o: Cache.cpp Cache.hpp Cache_Point.o Clock.o - $(COMPILE) Cache.cpp - -Cache_File_Point.o: Cache_File_Point.cpp Cache_File_Point.hpp Display.o \ - Eval_Point.cpp Eval_Point.hpp Uncopyable.hpp - $(COMPILE) Cache_File_Point.cpp - -Cache_Point.o: Cache_Point.cpp Cache_Point.hpp Eval_Point.o - $(COMPILE) Cache_Point.cpp - -Cache_Search.o: Cache_Search.cpp Cache_Search.hpp Mads.o Search.hpp Evaluator_Control.o - $(COMPILE) Cache_Search.cpp - -Clock.o: Clock.cpp Clock.hpp - $(COMPILE) Clock.cpp - -Direction.o: Direction.cpp Direction.hpp Point.o - $(COMPILE) Direction.cpp - -Directions.o: Directions.cpp Directions.hpp Direction.o Mesh.o Random_Pickup.o RNG.o - $(COMPILE) Directions.cpp - -Display.o: Display.cpp Display.hpp utils.o - $(COMPILE) Display.cpp - -Double.o: Double.cpp Double.hpp Exception.o Display.o - $(COMPILE) Double.cpp - -Eval_Point.o: Eval_Point.cpp Eval_Point.hpp Parameters.o Cache_File_Point.o \ - Set_Element.hpp - $(COMPILE) Eval_Point.cpp - -Evaluator.o: Evaluator.cpp Evaluator.hpp Priority_Eval_Point.o Stats.o - $(COMPILE) Evaluator.cpp - -Evaluator_Control.o: Evaluator_Control.cpp Evaluator_Control.hpp \ - Barrier.o Pareto_Front.o Slave.o Quad_Model.o TGP_Model.o - $(COMPILE) Evaluator_Control.cpp - -Exception.o: Exception.cpp Exception.hpp - $(COMPILE) Exception.cpp - -Extended_Poll.o: Extended_Poll.cpp Extended_Poll.hpp Mads.o Signature_Element.hpp \ - Set_Element.hpp - $(COMPILE) Extended_Poll.cpp - -L_Curve.o: L_Curve.cpp L_Curve.hpp Double.o Uncopyable.hpp - $(COMPILE) L_Curve.cpp - -LH_Search.o: LH_Search.cpp LH_Search.hpp Mads.o Search.hpp Evaluator_Control.o RNG.o - $(COMPILE) LH_Search.cpp - -Mads.o: Mads.cpp Mads.hpp Evaluator_Control.o L_Curve.o \ - LH_Search.hpp LH_Search.cpp \ - Speculative_Search.cpp Speculative_Search.hpp \ - Extended_Poll.cpp Extended_Poll.hpp \ - VNS_Search.hpp VNS_Search.cpp \ - Quad_Model_Search.hpp Quad_Model_Search.cpp \ - TGP_Model_Search.hpp TGP_Model_Search.cpp \ - Cache_Search.hpp Cache_Search.cpp \ - Phase_One_Search.cpp Phase_One_Search.hpp - $(COMPILE) Mads.cpp - -Mesh.o: Mesh.cpp Mesh.hpp Point.o - $(COMPILE) Mesh.cpp - -Multi_Obj_Evaluator.o: Multi_Obj_Evaluator.cpp Multi_Obj_Evaluator.hpp \ - Phase_One_Evaluator.o - $(COMPILE) Multi_Obj_Evaluator.cpp - -Model_Sorted_Point.o: Model_Sorted_Point.cpp Model_Sorted_Point.hpp Point.o - $(COMPILE) Model_Sorted_Point.cpp - -Model_Stats.o: Model_Stats.cpp Model_Stats.hpp Double.o - $(COMPILE) Model_Stats.cpp - -nomad.o: nomad.cpp nomad.hpp Mads.o - $(COMPILE) nomad.cpp - -Parameters.o: Parameters.cpp Parameters.hpp Parameter_Entries.o Signature.o - $(COMPILE) Parameters.cpp - -Parameter_Entries.o: Parameter_Entries.cpp Parameter_Entries.hpp Parameter_Entry.o - $(COMPILE) Parameter_Entries.cpp - -Parameter_Entry.o: Parameter_Entry.hpp Parameter_Entry.cpp Display.o Uncopyable.hpp - $(COMPILE) Parameter_Entry.cpp - -Pareto_Front.o: Pareto_Front.cpp Pareto_Front.hpp Pareto_Point.o - $(COMPILE) Pareto_Front.cpp - -Pareto_Point.o: Pareto_Point.cpp Pareto_Point.hpp Multi_Obj_Evaluator.o - $(COMPILE) Pareto_Point.cpp - -Phase_One_Evaluator.o: Phase_One_Evaluator.cpp Phase_One_Evaluator.hpp Evaluator.o - $(COMPILE) Phase_One_Evaluator.cpp - -Phase_One_Search.o: Phase_One_Search.cpp Phase_One_Search.hpp Mads.o \ - Search.hpp Evaluator_Control.o - $(COMPILE) Phase_One_Search.cpp - -Point.o: Point.cpp Point.hpp Double.o - $(COMPILE) Point.cpp - -Priority_Eval_Point.o: Priority_Eval_Point.cpp Priority_Eval_Point.hpp Eval_Point.o \ - Set_Element.hpp - $(COMPILE) Priority_Eval_Point.cpp - -Quad_Model.o: Quad_Model.cpp Quad_Model.hpp Cache.o Model_Sorted_Point.o - $(COMPILE) Quad_Model.cpp - -Quad_Model_Evaluator.o: Quad_Model_Evaluator.cpp Quad_Model_Evaluator.hpp \ - Evaluator.o Search.hpp - $(COMPILE) Quad_Model_Evaluator.cpp - -Quad_Model_Search.o: Quad_Model_Search.cpp Quad_Model_Search.hpp Mads.o \ - Quad_Model_Evaluator.o - $(COMPILE) Quad_Model_Search.cpp - -Random_Pickup.o: Random_Pickup.cpp Random_Pickup.hpp Uncopyable.hpp RNG.o - $(COMPILE) Random_Pickup.cpp - -RNG.o: RNG.cpp RNG.hpp defines.hpp - $(COMPILE) RNG.cpp - -Signature.o: Signature.cpp Signature.hpp Variable_Group.o - $(COMPILE) Signature.cpp - -Slave.o: Slave.cpp Slave.hpp Evaluator.o - $(COMPILE) Slave.cpp - -Speculative_Search.o: Speculative_Search.cpp Speculative_Search.hpp Mads.o Search.hpp \ - Evaluator_Control.o - $(COMPILE) Speculative_Search.cpp - -Stats.o: Stats.cpp Stats.hpp Clock.o Double.o Model_Stats.o - $(COMPILE) Stats.cpp - -TGP_Model.o: TGP_Model.cpp TGP_Model.hpp TGP_Output_Model.o Cache.o Model_Sorted_Point.o - $(COMPILE) TGP_Model.cpp - -TGP_Model_Evaluator.o: TGP_Model_Evaluator.cpp TGP_Model_Evaluator.hpp \ - Evaluator.o Search.hpp - $(COMPILE) TGP_Model_Evaluator.cpp - -TGP_Model_Search.o: TGP_Model_Search.cpp TGP_Model_Search.hpp \ - LH_Search.o TGP_Model_Evaluator.o - $(COMPILE) TGP_Model_Search.cpp - -TGP_Output_Model.o: TGP_Output_Model.cpp TGP_Output_Model.hpp Eval_Point.o $(LIB_TGP) - $(COMPILE) TGP_Output_Model.cpp - -utils.o: utils.cpp utils.hpp defines.hpp - $(COMPILE) utils.cpp - -Variable_Group.o: Variable_Group.cpp Variable_Group.hpp Directions.o - $(COMPILE) Variable_Group.cpp - -VNS_Search.o: VNS_Search.cpp VNS_Search.hpp Mads.o Search.hpp Evaluator_Control.o - $(COMPILE) VNS_Search.cpp - -clean: - @echo "cleaning obj files" - @rm -f $(OBJS) - -del: - @echo "cleaning trash files" - @rm -f core *~ - @echo "cleaning obj files" - @rm -f $(OBJS) - @echo "cleaning exe file" - @rm -f $(EXE) - @echo "cleaning lib files" - @rm -f $(LIB) \ No newline at end of file