git-svn-id: svn://scm.gforge.inria.fr/svnroot/paradiseo@130 331e1502-861f-0410-8da2-ba01fb791d7f
This commit is contained in:
parent
0d6dfb5b0e
commit
a6fe42664b
743 changed files with 67629 additions and 0 deletions
71
trunk/paradiseo-peo/src/Makefile.am
Executable file
71
trunk/paradiseo-peo/src/Makefile.am
Executable file
|
|
@ -0,0 +1,71 @@
|
|||
# Process this file with automake to produce Makefile.in
|
||||
|
||||
CXX=g++
|
||||
|
||||
INCLUDES = \
|
||||
-I$(EO_DIR)/src \
|
||||
-I$(MO_DIR)/src \
|
||||
-I$(MOEO_DIR)/src
|
||||
|
||||
AM_CXXFLAGS =\
|
||||
-Wall\
|
||||
-g
|
||||
|
||||
SUBDIRS= rmc
|
||||
|
||||
lib_LIBRARIES = libparadiseo.a
|
||||
|
||||
#bin_PROGRAMS = peodeploy essai
|
||||
|
||||
## Shared sources
|
||||
|
||||
shared_SOURCES = \
|
||||
paradiseo \
|
||||
paradiseo.h \
|
||||
core/peo_init.h \
|
||||
core/peo_init.cpp \
|
||||
core/peo_fin.h \
|
||||
core/peo_fin.cpp \
|
||||
core/peo_run.h \
|
||||
core/peo_run.cpp \
|
||||
core/peo_param.h \
|
||||
core/peo_param.cpp \
|
||||
core/peo_debug.h \
|
||||
core/peo_debug.cpp \
|
||||
core/thread.h \
|
||||
core/thread.cpp \
|
||||
core/reac_thread.h \
|
||||
core/reac_thread.cpp \
|
||||
core/service.h \
|
||||
core/service.cpp \
|
||||
core/runner.h \
|
||||
core/runner.cpp \
|
||||
core/communicable.h \
|
||||
core/communicable.cpp \
|
||||
core/cooperative.h \
|
||||
core/rmc.h \
|
||||
core/messaging.h \
|
||||
core/topology.h \
|
||||
core/topology.cpp \
|
||||
core/ring_topo.h \
|
||||
core/ring_topo.cpp \
|
||||
core/eoPop_comm.h \
|
||||
peoEA.h \
|
||||
peoTransform.h \
|
||||
peoSeqTransform.h \
|
||||
peoParaTransform.h \
|
||||
peoPopEval.h\
|
||||
peoSeqPopEval.h \
|
||||
peoAggEvalFunc.h \
|
||||
peoParaPopEval.h
|
||||
|
||||
## Main library
|
||||
|
||||
libparadiseo_a_SOURCES = \
|
||||
$(shared_SOURCES)
|
||||
|
||||
#libparadiseo_a_LIBADD =
|
||||
|
||||
## Miscellaneous Tools
|
||||
|
||||
# peodeploy
|
||||
781
trunk/paradiseo-peo/src/Makefile.in
Normal file
781
trunk/paradiseo-peo/src/Makefile.in
Normal file
|
|
@ -0,0 +1,781 @@
|
|||
# Makefile.in generated by automake 1.9.6 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
# Process this file with automake to produce Makefile.in
|
||||
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
VPATH = @srcdir@
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
top_builddir = ..
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
INSTALL = @INSTALL@
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
subdir = src
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
|
||||
$(top_srcdir)/configure.in
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||
CONFIG_CLEAN_FILES =
|
||||
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
|
||||
am__vpath_adj = case $$p in \
|
||||
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
*) f=$$p;; \
|
||||
esac;
|
||||
am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
|
||||
am__installdirs = "$(DESTDIR)$(libdir)"
|
||||
libLIBRARIES_INSTALL = $(INSTALL_DATA)
|
||||
LIBRARIES = $(lib_LIBRARIES)
|
||||
AR = ar
|
||||
ARFLAGS = cru
|
||||
libparadiseo_a_AR = $(AR) $(ARFLAGS)
|
||||
libparadiseo_a_LIBADD =
|
||||
am__objects_1 = peo_init.$(OBJEXT) peo_fin.$(OBJEXT) peo_run.$(OBJEXT) \
|
||||
peo_param.$(OBJEXT) peo_debug.$(OBJEXT) thread.$(OBJEXT) \
|
||||
reac_thread.$(OBJEXT) service.$(OBJEXT) runner.$(OBJEXT) \
|
||||
communicable.$(OBJEXT) topology.$(OBJEXT) ring_topo.$(OBJEXT)
|
||||
am_libparadiseo_a_OBJECTS = $(am__objects_1)
|
||||
libparadiseo_a_OBJECTS = $(am_libparadiseo_a_OBJECTS)
|
||||
DEFAULT_INCLUDES = -I. -I$(srcdir)
|
||||
depcomp = $(SHELL) $(top_srcdir)/depcomp
|
||||
am__depfiles_maybe = depfiles
|
||||
CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
|
||||
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
|
||||
CXXLD = $(CXX)
|
||||
CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
|
||||
-o $@
|
||||
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
CCLD = $(CC)
|
||||
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||
SOURCES = $(libparadiseo_a_SOURCES)
|
||||
DIST_SOURCES = $(libparadiseo_a_SOURCES)
|
||||
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
|
||||
html-recursive info-recursive install-data-recursive \
|
||||
install-exec-recursive install-info-recursive \
|
||||
install-recursive installcheck-recursive installdirs-recursive \
|
||||
pdf-recursive ps-recursive uninstall-info-recursive \
|
||||
uninstall-recursive
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DIST_SUBDIRS = $(SUBDIRS)
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMDEP_FALSE = @AMDEP_FALSE@
|
||||
AMDEP_TRUE = @AMDEP_TRUE@
|
||||
AMTAR = @AMTAR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CXX = g++
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EO_DIR = @EO_DIR@
|
||||
EXEEXT = @EXEEXT@
|
||||
GREP = @GREP@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MOEO_DIR = @MOEO_DIR@
|
||||
MO_DIR = @MO_DIR@
|
||||
OBJEXT = @OBJEXT@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
RANLIB = @RANLIB@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
VERSION = @VERSION@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_CXX = @ac_ct_CXX@
|
||||
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
|
||||
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
|
||||
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
|
||||
am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build_alias = @build_alias@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host_alias = @host_alias@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
INCLUDES = \
|
||||
-I$(EO_DIR)/src \
|
||||
-I$(MO_DIR)/src \
|
||||
-I$(MOEO_DIR)/src
|
||||
|
||||
AM_CXXFLAGS = \
|
||||
-Wall\
|
||||
-g
|
||||
|
||||
SUBDIRS = rmc
|
||||
lib_LIBRARIES = libparadiseo.a
|
||||
|
||||
#bin_PROGRAMS = peodeploy essai
|
||||
shared_SOURCES = \
|
||||
paradiseo \
|
||||
paradiseo.h \
|
||||
core/peo_init.h \
|
||||
core/peo_init.cpp \
|
||||
core/peo_fin.h \
|
||||
core/peo_fin.cpp \
|
||||
core/peo_run.h \
|
||||
core/peo_run.cpp \
|
||||
core/peo_param.h \
|
||||
core/peo_param.cpp \
|
||||
core/peo_debug.h \
|
||||
core/peo_debug.cpp \
|
||||
core/thread.h \
|
||||
core/thread.cpp \
|
||||
core/reac_thread.h \
|
||||
core/reac_thread.cpp \
|
||||
core/service.h \
|
||||
core/service.cpp \
|
||||
core/runner.h \
|
||||
core/runner.cpp \
|
||||
core/communicable.h \
|
||||
core/communicable.cpp \
|
||||
core/cooperative.h \
|
||||
core/rmc.h \
|
||||
core/messaging.h \
|
||||
core/topology.h \
|
||||
core/topology.cpp \
|
||||
core/ring_topo.h \
|
||||
core/ring_topo.cpp \
|
||||
core/eoPop_comm.h \
|
||||
peoEA.h \
|
||||
peoTransform.h \
|
||||
peoSeqTransform.h \
|
||||
peoParaTransform.h \
|
||||
peoPopEval.h\
|
||||
peoSeqPopEval.h \
|
||||
peoAggEvalFunc.h \
|
||||
peoParaPopEval.h
|
||||
|
||||
libparadiseo_a_SOURCES = \
|
||||
$(shared_SOURCES)
|
||||
|
||||
all: all-recursive
|
||||
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .cpp .o .obj
|
||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
||||
&& exit 0; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \
|
||||
cd $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu src/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
install-libLIBRARIES: $(lib_LIBRARIES)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)"
|
||||
@list='$(lib_LIBRARIES)'; for p in $$list; do \
|
||||
if test -f $$p; then \
|
||||
f=$(am__strip_dir) \
|
||||
echo " $(libLIBRARIES_INSTALL) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \
|
||||
$(libLIBRARIES_INSTALL) "$$p" "$(DESTDIR)$(libdir)/$$f"; \
|
||||
else :; fi; \
|
||||
done
|
||||
@$(POST_INSTALL)
|
||||
@list='$(lib_LIBRARIES)'; for p in $$list; do \
|
||||
if test -f $$p; then \
|
||||
p=$(am__strip_dir) \
|
||||
echo " $(RANLIB) '$(DESTDIR)$(libdir)/$$p'"; \
|
||||
$(RANLIB) "$(DESTDIR)$(libdir)/$$p"; \
|
||||
else :; fi; \
|
||||
done
|
||||
|
||||
uninstall-libLIBRARIES:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(lib_LIBRARIES)'; for p in $$list; do \
|
||||
p=$(am__strip_dir) \
|
||||
echo " rm -f '$(DESTDIR)$(libdir)/$$p'"; \
|
||||
rm -f "$(DESTDIR)$(libdir)/$$p"; \
|
||||
done
|
||||
|
||||
clean-libLIBRARIES:
|
||||
-test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES)
|
||||
libparadiseo.a: $(libparadiseo_a_OBJECTS) $(libparadiseo_a_DEPENDENCIES)
|
||||
-rm -f libparadiseo.a
|
||||
$(libparadiseo_a_AR) libparadiseo.a $(libparadiseo_a_OBJECTS) $(libparadiseo_a_LIBADD)
|
||||
$(RANLIB) libparadiseo.a
|
||||
|
||||
mostlyclean-compile:
|
||||
-rm -f *.$(OBJEXT)
|
||||
|
||||
distclean-compile:
|
||||
-rm -f *.tab.c
|
||||
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/communicable.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/peo_debug.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/peo_fin.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/peo_init.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/peo_param.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/peo_run.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reac_thread.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ring_topo.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/runner.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/service.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/thread.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/topology.Po@am__quote@
|
||||
|
||||
.cpp.o:
|
||||
@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
|
||||
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $<
|
||||
|
||||
.cpp.obj:
|
||||
@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
|
||||
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
|
||||
|
||||
peo_init.o: core/peo_init.cpp
|
||||
@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT peo_init.o -MD -MP -MF "$(DEPDIR)/peo_init.Tpo" -c -o peo_init.o `test -f 'core/peo_init.cpp' || echo '$(srcdir)/'`core/peo_init.cpp; \
|
||||
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/peo_init.Tpo" "$(DEPDIR)/peo_init.Po"; else rm -f "$(DEPDIR)/peo_init.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/peo_init.cpp' object='peo_init.o' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o peo_init.o `test -f 'core/peo_init.cpp' || echo '$(srcdir)/'`core/peo_init.cpp
|
||||
|
||||
peo_init.obj: core/peo_init.cpp
|
||||
@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT peo_init.obj -MD -MP -MF "$(DEPDIR)/peo_init.Tpo" -c -o peo_init.obj `if test -f 'core/peo_init.cpp'; then $(CYGPATH_W) 'core/peo_init.cpp'; else $(CYGPATH_W) '$(srcdir)/core/peo_init.cpp'; fi`; \
|
||||
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/peo_init.Tpo" "$(DEPDIR)/peo_init.Po"; else rm -f "$(DEPDIR)/peo_init.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/peo_init.cpp' object='peo_init.obj' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o peo_init.obj `if test -f 'core/peo_init.cpp'; then $(CYGPATH_W) 'core/peo_init.cpp'; else $(CYGPATH_W) '$(srcdir)/core/peo_init.cpp'; fi`
|
||||
|
||||
peo_fin.o: core/peo_fin.cpp
|
||||
@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT peo_fin.o -MD -MP -MF "$(DEPDIR)/peo_fin.Tpo" -c -o peo_fin.o `test -f 'core/peo_fin.cpp' || echo '$(srcdir)/'`core/peo_fin.cpp; \
|
||||
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/peo_fin.Tpo" "$(DEPDIR)/peo_fin.Po"; else rm -f "$(DEPDIR)/peo_fin.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/peo_fin.cpp' object='peo_fin.o' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o peo_fin.o `test -f 'core/peo_fin.cpp' || echo '$(srcdir)/'`core/peo_fin.cpp
|
||||
|
||||
peo_fin.obj: core/peo_fin.cpp
|
||||
@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT peo_fin.obj -MD -MP -MF "$(DEPDIR)/peo_fin.Tpo" -c -o peo_fin.obj `if test -f 'core/peo_fin.cpp'; then $(CYGPATH_W) 'core/peo_fin.cpp'; else $(CYGPATH_W) '$(srcdir)/core/peo_fin.cpp'; fi`; \
|
||||
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/peo_fin.Tpo" "$(DEPDIR)/peo_fin.Po"; else rm -f "$(DEPDIR)/peo_fin.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/peo_fin.cpp' object='peo_fin.obj' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o peo_fin.obj `if test -f 'core/peo_fin.cpp'; then $(CYGPATH_W) 'core/peo_fin.cpp'; else $(CYGPATH_W) '$(srcdir)/core/peo_fin.cpp'; fi`
|
||||
|
||||
peo_run.o: core/peo_run.cpp
|
||||
@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT peo_run.o -MD -MP -MF "$(DEPDIR)/peo_run.Tpo" -c -o peo_run.o `test -f 'core/peo_run.cpp' || echo '$(srcdir)/'`core/peo_run.cpp; \
|
||||
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/peo_run.Tpo" "$(DEPDIR)/peo_run.Po"; else rm -f "$(DEPDIR)/peo_run.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/peo_run.cpp' object='peo_run.o' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o peo_run.o `test -f 'core/peo_run.cpp' || echo '$(srcdir)/'`core/peo_run.cpp
|
||||
|
||||
peo_run.obj: core/peo_run.cpp
|
||||
@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT peo_run.obj -MD -MP -MF "$(DEPDIR)/peo_run.Tpo" -c -o peo_run.obj `if test -f 'core/peo_run.cpp'; then $(CYGPATH_W) 'core/peo_run.cpp'; else $(CYGPATH_W) '$(srcdir)/core/peo_run.cpp'; fi`; \
|
||||
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/peo_run.Tpo" "$(DEPDIR)/peo_run.Po"; else rm -f "$(DEPDIR)/peo_run.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/peo_run.cpp' object='peo_run.obj' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o peo_run.obj `if test -f 'core/peo_run.cpp'; then $(CYGPATH_W) 'core/peo_run.cpp'; else $(CYGPATH_W) '$(srcdir)/core/peo_run.cpp'; fi`
|
||||
|
||||
peo_param.o: core/peo_param.cpp
|
||||
@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT peo_param.o -MD -MP -MF "$(DEPDIR)/peo_param.Tpo" -c -o peo_param.o `test -f 'core/peo_param.cpp' || echo '$(srcdir)/'`core/peo_param.cpp; \
|
||||
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/peo_param.Tpo" "$(DEPDIR)/peo_param.Po"; else rm -f "$(DEPDIR)/peo_param.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/peo_param.cpp' object='peo_param.o' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o peo_param.o `test -f 'core/peo_param.cpp' || echo '$(srcdir)/'`core/peo_param.cpp
|
||||
|
||||
peo_param.obj: core/peo_param.cpp
|
||||
@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT peo_param.obj -MD -MP -MF "$(DEPDIR)/peo_param.Tpo" -c -o peo_param.obj `if test -f 'core/peo_param.cpp'; then $(CYGPATH_W) 'core/peo_param.cpp'; else $(CYGPATH_W) '$(srcdir)/core/peo_param.cpp'; fi`; \
|
||||
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/peo_param.Tpo" "$(DEPDIR)/peo_param.Po"; else rm -f "$(DEPDIR)/peo_param.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/peo_param.cpp' object='peo_param.obj' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o peo_param.obj `if test -f 'core/peo_param.cpp'; then $(CYGPATH_W) 'core/peo_param.cpp'; else $(CYGPATH_W) '$(srcdir)/core/peo_param.cpp'; fi`
|
||||
|
||||
peo_debug.o: core/peo_debug.cpp
|
||||
@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT peo_debug.o -MD -MP -MF "$(DEPDIR)/peo_debug.Tpo" -c -o peo_debug.o `test -f 'core/peo_debug.cpp' || echo '$(srcdir)/'`core/peo_debug.cpp; \
|
||||
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/peo_debug.Tpo" "$(DEPDIR)/peo_debug.Po"; else rm -f "$(DEPDIR)/peo_debug.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/peo_debug.cpp' object='peo_debug.o' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o peo_debug.o `test -f 'core/peo_debug.cpp' || echo '$(srcdir)/'`core/peo_debug.cpp
|
||||
|
||||
peo_debug.obj: core/peo_debug.cpp
|
||||
@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT peo_debug.obj -MD -MP -MF "$(DEPDIR)/peo_debug.Tpo" -c -o peo_debug.obj `if test -f 'core/peo_debug.cpp'; then $(CYGPATH_W) 'core/peo_debug.cpp'; else $(CYGPATH_W) '$(srcdir)/core/peo_debug.cpp'; fi`; \
|
||||
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/peo_debug.Tpo" "$(DEPDIR)/peo_debug.Po"; else rm -f "$(DEPDIR)/peo_debug.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/peo_debug.cpp' object='peo_debug.obj' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o peo_debug.obj `if test -f 'core/peo_debug.cpp'; then $(CYGPATH_W) 'core/peo_debug.cpp'; else $(CYGPATH_W) '$(srcdir)/core/peo_debug.cpp'; fi`
|
||||
|
||||
thread.o: core/thread.cpp
|
||||
@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT thread.o -MD -MP -MF "$(DEPDIR)/thread.Tpo" -c -o thread.o `test -f 'core/thread.cpp' || echo '$(srcdir)/'`core/thread.cpp; \
|
||||
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/thread.Tpo" "$(DEPDIR)/thread.Po"; else rm -f "$(DEPDIR)/thread.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/thread.cpp' object='thread.o' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o thread.o `test -f 'core/thread.cpp' || echo '$(srcdir)/'`core/thread.cpp
|
||||
|
||||
thread.obj: core/thread.cpp
|
||||
@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT thread.obj -MD -MP -MF "$(DEPDIR)/thread.Tpo" -c -o thread.obj `if test -f 'core/thread.cpp'; then $(CYGPATH_W) 'core/thread.cpp'; else $(CYGPATH_W) '$(srcdir)/core/thread.cpp'; fi`; \
|
||||
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/thread.Tpo" "$(DEPDIR)/thread.Po"; else rm -f "$(DEPDIR)/thread.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/thread.cpp' object='thread.obj' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o thread.obj `if test -f 'core/thread.cpp'; then $(CYGPATH_W) 'core/thread.cpp'; else $(CYGPATH_W) '$(srcdir)/core/thread.cpp'; fi`
|
||||
|
||||
reac_thread.o: core/reac_thread.cpp
|
||||
@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT reac_thread.o -MD -MP -MF "$(DEPDIR)/reac_thread.Tpo" -c -o reac_thread.o `test -f 'core/reac_thread.cpp' || echo '$(srcdir)/'`core/reac_thread.cpp; \
|
||||
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/reac_thread.Tpo" "$(DEPDIR)/reac_thread.Po"; else rm -f "$(DEPDIR)/reac_thread.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/reac_thread.cpp' object='reac_thread.o' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o reac_thread.o `test -f 'core/reac_thread.cpp' || echo '$(srcdir)/'`core/reac_thread.cpp
|
||||
|
||||
reac_thread.obj: core/reac_thread.cpp
|
||||
@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT reac_thread.obj -MD -MP -MF "$(DEPDIR)/reac_thread.Tpo" -c -o reac_thread.obj `if test -f 'core/reac_thread.cpp'; then $(CYGPATH_W) 'core/reac_thread.cpp'; else $(CYGPATH_W) '$(srcdir)/core/reac_thread.cpp'; fi`; \
|
||||
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/reac_thread.Tpo" "$(DEPDIR)/reac_thread.Po"; else rm -f "$(DEPDIR)/reac_thread.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/reac_thread.cpp' object='reac_thread.obj' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o reac_thread.obj `if test -f 'core/reac_thread.cpp'; then $(CYGPATH_W) 'core/reac_thread.cpp'; else $(CYGPATH_W) '$(srcdir)/core/reac_thread.cpp'; fi`
|
||||
|
||||
service.o: core/service.cpp
|
||||
@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT service.o -MD -MP -MF "$(DEPDIR)/service.Tpo" -c -o service.o `test -f 'core/service.cpp' || echo '$(srcdir)/'`core/service.cpp; \
|
||||
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/service.Tpo" "$(DEPDIR)/service.Po"; else rm -f "$(DEPDIR)/service.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/service.cpp' object='service.o' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o service.o `test -f 'core/service.cpp' || echo '$(srcdir)/'`core/service.cpp
|
||||
|
||||
service.obj: core/service.cpp
|
||||
@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT service.obj -MD -MP -MF "$(DEPDIR)/service.Tpo" -c -o service.obj `if test -f 'core/service.cpp'; then $(CYGPATH_W) 'core/service.cpp'; else $(CYGPATH_W) '$(srcdir)/core/service.cpp'; fi`; \
|
||||
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/service.Tpo" "$(DEPDIR)/service.Po"; else rm -f "$(DEPDIR)/service.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/service.cpp' object='service.obj' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o service.obj `if test -f 'core/service.cpp'; then $(CYGPATH_W) 'core/service.cpp'; else $(CYGPATH_W) '$(srcdir)/core/service.cpp'; fi`
|
||||
|
||||
runner.o: core/runner.cpp
|
||||
@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT runner.o -MD -MP -MF "$(DEPDIR)/runner.Tpo" -c -o runner.o `test -f 'core/runner.cpp' || echo '$(srcdir)/'`core/runner.cpp; \
|
||||
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/runner.Tpo" "$(DEPDIR)/runner.Po"; else rm -f "$(DEPDIR)/runner.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/runner.cpp' object='runner.o' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o runner.o `test -f 'core/runner.cpp' || echo '$(srcdir)/'`core/runner.cpp
|
||||
|
||||
runner.obj: core/runner.cpp
|
||||
@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT runner.obj -MD -MP -MF "$(DEPDIR)/runner.Tpo" -c -o runner.obj `if test -f 'core/runner.cpp'; then $(CYGPATH_W) 'core/runner.cpp'; else $(CYGPATH_W) '$(srcdir)/core/runner.cpp'; fi`; \
|
||||
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/runner.Tpo" "$(DEPDIR)/runner.Po"; else rm -f "$(DEPDIR)/runner.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/runner.cpp' object='runner.obj' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o runner.obj `if test -f 'core/runner.cpp'; then $(CYGPATH_W) 'core/runner.cpp'; else $(CYGPATH_W) '$(srcdir)/core/runner.cpp'; fi`
|
||||
|
||||
communicable.o: core/communicable.cpp
|
||||
@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT communicable.o -MD -MP -MF "$(DEPDIR)/communicable.Tpo" -c -o communicable.o `test -f 'core/communicable.cpp' || echo '$(srcdir)/'`core/communicable.cpp; \
|
||||
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/communicable.Tpo" "$(DEPDIR)/communicable.Po"; else rm -f "$(DEPDIR)/communicable.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/communicable.cpp' object='communicable.o' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o communicable.o `test -f 'core/communicable.cpp' || echo '$(srcdir)/'`core/communicable.cpp
|
||||
|
||||
communicable.obj: core/communicable.cpp
|
||||
@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT communicable.obj -MD -MP -MF "$(DEPDIR)/communicable.Tpo" -c -o communicable.obj `if test -f 'core/communicable.cpp'; then $(CYGPATH_W) 'core/communicable.cpp'; else $(CYGPATH_W) '$(srcdir)/core/communicable.cpp'; fi`; \
|
||||
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/communicable.Tpo" "$(DEPDIR)/communicable.Po"; else rm -f "$(DEPDIR)/communicable.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/communicable.cpp' object='communicable.obj' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o communicable.obj `if test -f 'core/communicable.cpp'; then $(CYGPATH_W) 'core/communicable.cpp'; else $(CYGPATH_W) '$(srcdir)/core/communicable.cpp'; fi`
|
||||
|
||||
topology.o: core/topology.cpp
|
||||
@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT topology.o -MD -MP -MF "$(DEPDIR)/topology.Tpo" -c -o topology.o `test -f 'core/topology.cpp' || echo '$(srcdir)/'`core/topology.cpp; \
|
||||
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/topology.Tpo" "$(DEPDIR)/topology.Po"; else rm -f "$(DEPDIR)/topology.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/topology.cpp' object='topology.o' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o topology.o `test -f 'core/topology.cpp' || echo '$(srcdir)/'`core/topology.cpp
|
||||
|
||||
topology.obj: core/topology.cpp
|
||||
@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT topology.obj -MD -MP -MF "$(DEPDIR)/topology.Tpo" -c -o topology.obj `if test -f 'core/topology.cpp'; then $(CYGPATH_W) 'core/topology.cpp'; else $(CYGPATH_W) '$(srcdir)/core/topology.cpp'; fi`; \
|
||||
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/topology.Tpo" "$(DEPDIR)/topology.Po"; else rm -f "$(DEPDIR)/topology.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/topology.cpp' object='topology.obj' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o topology.obj `if test -f 'core/topology.cpp'; then $(CYGPATH_W) 'core/topology.cpp'; else $(CYGPATH_W) '$(srcdir)/core/topology.cpp'; fi`
|
||||
|
||||
ring_topo.o: core/ring_topo.cpp
|
||||
@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ring_topo.o -MD -MP -MF "$(DEPDIR)/ring_topo.Tpo" -c -o ring_topo.o `test -f 'core/ring_topo.cpp' || echo '$(srcdir)/'`core/ring_topo.cpp; \
|
||||
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/ring_topo.Tpo" "$(DEPDIR)/ring_topo.Po"; else rm -f "$(DEPDIR)/ring_topo.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/ring_topo.cpp' object='ring_topo.o' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ring_topo.o `test -f 'core/ring_topo.cpp' || echo '$(srcdir)/'`core/ring_topo.cpp
|
||||
|
||||
ring_topo.obj: core/ring_topo.cpp
|
||||
@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ring_topo.obj -MD -MP -MF "$(DEPDIR)/ring_topo.Tpo" -c -o ring_topo.obj `if test -f 'core/ring_topo.cpp'; then $(CYGPATH_W) 'core/ring_topo.cpp'; else $(CYGPATH_W) '$(srcdir)/core/ring_topo.cpp'; fi`; \
|
||||
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/ring_topo.Tpo" "$(DEPDIR)/ring_topo.Po"; else rm -f "$(DEPDIR)/ring_topo.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/ring_topo.cpp' object='ring_topo.obj' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ring_topo.obj `if test -f 'core/ring_topo.cpp'; then $(CYGPATH_W) 'core/ring_topo.cpp'; else $(CYGPATH_W) '$(srcdir)/core/ring_topo.cpp'; fi`
|
||||
uninstall-info-am:
|
||||
|
||||
# This directory's subdirectories are mostly independent; you can cd
|
||||
# into them and run `make' without going through this Makefile.
|
||||
# To change the values of `make' variables: instead of editing Makefiles,
|
||||
# (1) if the variable is set in `config.status', edit `config.status'
|
||||
# (which will cause the Makefiles to be regenerated when you run `make');
|
||||
# (2) otherwise, pass the desired values on the `make' command line.
|
||||
$(RECURSIVE_TARGETS):
|
||||
@failcom='exit 1'; \
|
||||
for f in x $$MAKEFLAGS; do \
|
||||
case $$f in \
|
||||
*=* | --[!k]*);; \
|
||||
*k*) failcom='fail=yes';; \
|
||||
esac; \
|
||||
done; \
|
||||
dot_seen=no; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
dot_seen=yes; \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| eval $$failcom; \
|
||||
done; \
|
||||
if test "$$dot_seen" = "no"; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
||||
fi; test -z "$$fail"
|
||||
|
||||
mostlyclean-recursive clean-recursive distclean-recursive \
|
||||
maintainer-clean-recursive:
|
||||
@failcom='exit 1'; \
|
||||
for f in x $$MAKEFLAGS; do \
|
||||
case $$f in \
|
||||
*=* | --[!k]*);; \
|
||||
*k*) failcom='fail=yes';; \
|
||||
esac; \
|
||||
done; \
|
||||
dot_seen=no; \
|
||||
case "$@" in \
|
||||
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
||||
*) list='$(SUBDIRS)' ;; \
|
||||
esac; \
|
||||
rev=''; for subdir in $$list; do \
|
||||
if test "$$subdir" = "."; then :; else \
|
||||
rev="$$subdir $$rev"; \
|
||||
fi; \
|
||||
done; \
|
||||
rev="$$rev ."; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
for subdir in $$rev; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| eval $$failcom; \
|
||||
done && test -z "$$fail"
|
||||
tags-recursive:
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
|
||||
done
|
||||
ctags-recursive:
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
|
||||
done
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
mkid -fID $$unique
|
||||
tags: TAGS
|
||||
|
||||
TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
|
||||
include_option=--etags-include; \
|
||||
empty_fix=.; \
|
||||
else \
|
||||
include_option=--include; \
|
||||
empty_fix=; \
|
||||
fi; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test ! -f $$subdir/TAGS || \
|
||||
tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
|
||||
fi; \
|
||||
done; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$tags $$unique; \
|
||||
fi
|
||||
ctags: CTAGS
|
||||
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$tags $$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& cd $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) $$here
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
|
||||
list='$(DISTFILES)'; for file in $$list; do \
|
||||
case $$file in \
|
||||
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
|
||||
esac; \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
||||
dir="/$$dir"; \
|
||||
$(mkdir_p) "$(distdir)$$dir"; \
|
||||
else \
|
||||
dir=''; \
|
||||
fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||
fi; \
|
||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||
else \
|
||||
test -f $(distdir)/$$file \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test -d "$(distdir)/$$subdir" \
|
||||
|| $(mkdir_p) "$(distdir)/$$subdir" \
|
||||
|| exit 1; \
|
||||
distdir=`$(am__cd) $(distdir) && pwd`; \
|
||||
top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
|
||||
(cd $$subdir && \
|
||||
$(MAKE) $(AM_MAKEFLAGS) \
|
||||
top_distdir="$$top_distdir" \
|
||||
distdir="$$distdir/$$subdir" \
|
||||
distdir) \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-recursive
|
||||
all-am: Makefile $(LIBRARIES)
|
||||
installdirs: installdirs-recursive
|
||||
installdirs-am:
|
||||
for dir in "$(DESTDIR)$(libdir)"; do \
|
||||
test -z "$$dir" || $(mkdir_p) "$$dir"; \
|
||||
done
|
||||
install: install-recursive
|
||||
install-exec: install-exec-recursive
|
||||
install-data: install-data-recursive
|
||||
uninstall: uninstall-recursive
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-recursive
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-recursive
|
||||
|
||||
clean-am: clean-generic clean-libLIBRARIES mostlyclean-am
|
||||
|
||||
distclean: distclean-recursive
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-compile distclean-generic \
|
||||
distclean-tags
|
||||
|
||||
dvi: dvi-recursive
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-recursive
|
||||
|
||||
info: info-recursive
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-exec-am: install-libLIBRARIES
|
||||
|
||||
install-info: install-info-recursive
|
||||
|
||||
install-man:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-recursive
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-recursive
|
||||
|
||||
mostlyclean-am: mostlyclean-compile mostlyclean-generic
|
||||
|
||||
pdf: pdf-recursive
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-recursive
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-info-am uninstall-libLIBRARIES
|
||||
|
||||
uninstall-info: uninstall-info-recursive
|
||||
|
||||
.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
|
||||
clean clean-generic clean-libLIBRARIES clean-recursive ctags \
|
||||
ctags-recursive distclean distclean-compile distclean-generic \
|
||||
distclean-recursive distclean-tags distdir dvi dvi-am html \
|
||||
html-am info info-am install install-am install-data \
|
||||
install-data-am install-exec install-exec-am install-info \
|
||||
install-info-am install-libLIBRARIES install-man install-strip \
|
||||
installcheck installcheck-am installdirs installdirs-am \
|
||||
maintainer-clean maintainer-clean-generic \
|
||||
maintainer-clean-recursive mostlyclean mostlyclean-compile \
|
||||
mostlyclean-generic mostlyclean-recursive pdf pdf-am ps ps-am \
|
||||
tags tags-recursive uninstall uninstall-am uninstall-info-am \
|
||||
uninstall-libLIBRARIES
|
||||
|
||||
|
||||
#libparadiseo_a_LIBADD =
|
||||
|
||||
# peodeploy
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
||||
85
trunk/paradiseo-peo/src/core/communicable.cpp
Normal file
85
trunk/paradiseo-peo/src/core/communicable.cpp
Normal file
|
|
@ -0,0 +1,85 @@
|
|||
// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
|
||||
|
||||
// "comm.cpp"
|
||||
|
||||
// (c) OPAC Team, LIFL, August 2005
|
||||
|
||||
/* This library 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 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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 library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Contact: paradiseo-help@lists.gforge.inria.fr
|
||||
*/
|
||||
|
||||
#include <vector>
|
||||
#include <map>
|
||||
#include <cassert>
|
||||
|
||||
#include "communicable.h"
|
||||
|
||||
static std :: vector <Communicable *> key_to_comm (1); /* Vector of registered cooperators */
|
||||
|
||||
static std :: map <const Communicable *, unsigned> comm_to_key; /* Map of registered cooperators */
|
||||
|
||||
unsigned Communicable :: num_comm = 0;
|
||||
|
||||
Communicable :: Communicable () {
|
||||
|
||||
comm_to_key [this] = key = ++ num_comm;
|
||||
key_to_comm.push_back (this);
|
||||
sem_init (& sem_lock, 0, 1);
|
||||
sem_init (& sem_stop, 0, 0);
|
||||
}
|
||||
|
||||
Communicable :: ~ Communicable () {
|
||||
|
||||
}
|
||||
|
||||
COMM_ID Communicable :: getKey () {
|
||||
|
||||
return key;
|
||||
}
|
||||
|
||||
Communicable * getCommunicable (COMM_ID __key) {
|
||||
|
||||
assert (__key < key_to_comm.size ());
|
||||
return key_to_comm [__key];
|
||||
}
|
||||
|
||||
COMM_ID getKey (const Communicable * __comm) {
|
||||
|
||||
return comm_to_key [__comm];
|
||||
}
|
||||
|
||||
void Communicable :: lock () {
|
||||
|
||||
sem_wait (& sem_lock);
|
||||
}
|
||||
|
||||
void Communicable :: unlock () {
|
||||
|
||||
sem_post (& sem_lock);
|
||||
}
|
||||
|
||||
void Communicable :: stop () {
|
||||
|
||||
sem_wait (& sem_stop);
|
||||
}
|
||||
|
||||
void Communicable :: resume () {
|
||||
|
||||
sem_post (& sem_stop);
|
||||
}
|
||||
|
||||
|
||||
|
||||
0
trunk/paradiseo-peo/src/core/communicable.cpp:
Normal file
0
trunk/paradiseo-peo/src/core/communicable.cpp:
Normal file
62
trunk/paradiseo-peo/src/core/communicable.h
Normal file
62
trunk/paradiseo-peo/src/core/communicable.h
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
|
||||
|
||||
// "communicable.h"
|
||||
|
||||
// (c) OPAC Team, LIFL, August 2005
|
||||
|
||||
/* This library 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 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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 library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Contact: paradiseo-help@lists.gforge.inria.fr
|
||||
*/
|
||||
|
||||
#ifndef __communicable_h
|
||||
#define __communicable_h
|
||||
|
||||
#include <semaphore.h>
|
||||
|
||||
typedef unsigned COMM_ID;
|
||||
|
||||
class Communicable {
|
||||
|
||||
public :
|
||||
|
||||
Communicable ();
|
||||
|
||||
virtual ~ Communicable ();
|
||||
|
||||
COMM_ID getKey ();
|
||||
|
||||
void lock (); /* It suspends the current process if the semaphore is locked */
|
||||
void unlock (); /* It unlocks the shared semaphore */
|
||||
|
||||
void stop (); /* It suspends the current process */
|
||||
void resume (); /* It resumes ___________ */
|
||||
|
||||
protected :
|
||||
|
||||
COMM_ID key;
|
||||
|
||||
sem_t sem_lock;
|
||||
|
||||
sem_t sem_stop;
|
||||
|
||||
static unsigned num_comm;
|
||||
};
|
||||
|
||||
extern Communicable * getCommunicable (COMM_ID __key);
|
||||
|
||||
//extern COMM_ID getKey (const Communicable * __comm);
|
||||
|
||||
#endif
|
||||
0
trunk/paradiseo-peo/src/core/communicable.h:
Normal file
0
trunk/paradiseo-peo/src/core/communicable.h:
Normal file
56
trunk/paradiseo-peo/src/core/cooperative.h
Normal file
56
trunk/paradiseo-peo/src/core/cooperative.h
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
|
||||
|
||||
// "cooperative.h"
|
||||
|
||||
// (c) OPAC Team, LIFL, August 2005
|
||||
|
||||
/* This library 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 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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 library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Contact: paradiseo-help@lists.gforge.inria.fr
|
||||
*/
|
||||
|
||||
#ifndef __cooperative_h
|
||||
#define __cooperative_h
|
||||
|
||||
#include "communicable.h"
|
||||
#include "runner.h"
|
||||
|
||||
typedef unsigned COOP_ID;
|
||||
|
||||
class Cooperative : public Communicable {
|
||||
|
||||
public :
|
||||
|
||||
Runner * getOwner ();
|
||||
|
||||
void setOwner (Runner & __runner);
|
||||
|
||||
virtual void pack () = 0;
|
||||
|
||||
virtual void unpack () = 0;
|
||||
|
||||
void send (Cooperative * __coop);
|
||||
|
||||
virtual void notifySending ();
|
||||
|
||||
private :
|
||||
|
||||
Runner * owner;
|
||||
|
||||
};
|
||||
|
||||
extern Cooperative * getCooperative (COOP_ID __key);
|
||||
|
||||
#endif
|
||||
0
trunk/paradiseo-peo/src/core/cooperative.h:
Normal file
0
trunk/paradiseo-peo/src/core/cooperative.h:
Normal file
47
trunk/paradiseo-peo/src/core/eoPop_comm.h
Normal file
47
trunk/paradiseo-peo/src/core/eoPop_comm.h
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
|
||||
|
||||
// "eoPop_comm.h"
|
||||
|
||||
// (c) OPAC Team, LIFL, August 2005
|
||||
|
||||
/* This library 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 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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 library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Contact: paradiseo-help@lists.gforge.inria.fr
|
||||
*/
|
||||
|
||||
#ifndef __eoPop_comm_h
|
||||
#define __eoPop_comm_h
|
||||
|
||||
#include <eoPop.h>
|
||||
|
||||
#include "messaging.h"
|
||||
|
||||
template <class EOT> void pack (const eoPop <EOT> & __pop) {
|
||||
|
||||
pack ((unsigned) __pop.size ());
|
||||
for (unsigned i = 0; i < __pop.size (); i ++)
|
||||
pack (__pop [i]);
|
||||
}
|
||||
|
||||
template <class EOT> void unpack (eoPop <EOT> & __pop) {
|
||||
|
||||
unsigned n;
|
||||
|
||||
unpack (n);
|
||||
__pop.resize (n);
|
||||
for (unsigned i = 0; i < n; i ++)
|
||||
unpack (__pop [i]);
|
||||
}
|
||||
#endif
|
||||
0
trunk/paradiseo-peo/src/core/eoPop_comm.h:
Normal file
0
trunk/paradiseo-peo/src/core/eoPop_comm.h:
Normal file
53
trunk/paradiseo-peo/src/core/eoVector_comm.h
Normal file
53
trunk/paradiseo-peo/src/core/eoVector_comm.h
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
|
||||
|
||||
// "eoVector_comm.h"
|
||||
|
||||
// (c) OPAC Team, LIFL, August 2005
|
||||
|
||||
/* This library 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 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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 library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Contact: paradiseo-help@lists.gforge.inria.fr
|
||||
*/
|
||||
|
||||
#ifndef __eoVector_comm_h
|
||||
#define __eoVector_comm_h
|
||||
|
||||
#include <eoVector.h>
|
||||
|
||||
#include "messaging.h"
|
||||
|
||||
template <class F, class T> void pack (const eoVector <F, T> & __v) {
|
||||
|
||||
pack (__v.fitness ()) ;
|
||||
unsigned len = __v.size ();
|
||||
pack (len);
|
||||
for (unsigned i = 0 ; i < len; i ++)
|
||||
pack (__v [i]);
|
||||
}
|
||||
|
||||
template <class F, class T> void unpack (eoVector <F, T> & __v) {
|
||||
|
||||
F fit;
|
||||
unpack (fit);
|
||||
__v.fitness (fit);
|
||||
|
||||
unsigned len;
|
||||
unpack (len);
|
||||
__v.resize (len);
|
||||
for (unsigned i = 0 ; i < len; i ++)
|
||||
unpack (__v [i]);
|
||||
}
|
||||
|
||||
#endif
|
||||
0
trunk/paradiseo-peo/src/core/eoVector_comm.h:
Normal file
0
trunk/paradiseo-peo/src/core/eoVector_comm.h:
Normal file
119
trunk/paradiseo-peo/src/core/messaging.h
Normal file
119
trunk/paradiseo-peo/src/core/messaging.h
Normal file
|
|
@ -0,0 +1,119 @@
|
|||
// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
|
||||
|
||||
// "messaging.h"
|
||||
|
||||
// (c) OPAC Team, LIFL, August 2005
|
||||
|
||||
/* This library 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 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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 library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Contact: paradiseo-help@lists.gforge.inria.fr
|
||||
*/
|
||||
|
||||
#ifndef __mess_h
|
||||
#define __mess_h
|
||||
|
||||
#include <utility>
|
||||
|
||||
/* Char */
|
||||
extern void pack (const char & __c);
|
||||
|
||||
/* Float */
|
||||
extern void pack (const float & __f, int __nitem = 1);
|
||||
|
||||
/* Double */
|
||||
extern void pack (const double & __d, int __nitem = 1);
|
||||
|
||||
/* Integer */
|
||||
extern void pack (const int & __i, int __nitem = 1);
|
||||
|
||||
/* Unsigned int. */
|
||||
extern void pack (const unsigned int & __ui, int __nitem = 1);
|
||||
|
||||
/* Short int. */
|
||||
extern void pack (const short & __sh, int __nitem = 1);
|
||||
|
||||
/* Unsigned short */
|
||||
extern void pack (const unsigned short & __ush, int __nitem = 1);
|
||||
|
||||
/* Long */
|
||||
extern void pack (const long & __l, int __nitem = 1);
|
||||
|
||||
/* Unsigned long */
|
||||
extern void pack (const unsigned long & __ul, int __nitem = 1);
|
||||
|
||||
/* String */
|
||||
extern void pack (const char * __str);
|
||||
|
||||
/* Pointer */
|
||||
template <class T> void pack (const T * __ptr) {
|
||||
|
||||
pack ((unsigned long) __ptr);
|
||||
}
|
||||
|
||||
/* Pair */
|
||||
template <class U, class V> void pack (const std :: pair <U, V> & __pair) {
|
||||
|
||||
pack (__pair.first);
|
||||
pack (__pair.second);
|
||||
}
|
||||
|
||||
//
|
||||
|
||||
/* Float */
|
||||
extern void unpack (char & __c);
|
||||
|
||||
/* Float */
|
||||
extern void unpack (float & __f, int __nitem = 1);
|
||||
|
||||
/* Double */
|
||||
extern void unpack (double & __d, int __nitem = 1);
|
||||
|
||||
/* Integer */
|
||||
extern void unpack (int & __i, int __nitem = 1);
|
||||
|
||||
/* Unsigned int. */
|
||||
extern void unpack (unsigned int & __ui, int __nitem = 1);
|
||||
|
||||
/* Short int. */
|
||||
extern void unpack (short & __sh, int __nitem = 1);
|
||||
|
||||
/* Unsigned short */
|
||||
extern void unpack (unsigned short & __ush, int __nitem = 1);
|
||||
|
||||
/* Long */
|
||||
extern void unpack (long & __l, int __nitem = 1);
|
||||
|
||||
/* Unsigned long */
|
||||
extern void unpack (unsigned long & __ul, int __nitem = 1);
|
||||
|
||||
/* String */
|
||||
extern void unpack (char * __str);
|
||||
|
||||
/* Pointer */
|
||||
template <class T> void unpack (T * & __ptr) {
|
||||
|
||||
unsigned long p;
|
||||
unpack (p);
|
||||
__ptr = (T *) p;
|
||||
}
|
||||
|
||||
/* Pair */
|
||||
template <class U, class V> void unpack (std :: pair <U, V> & __pair) {
|
||||
|
||||
unpack (__pair.first);
|
||||
unpack (__pair.second);
|
||||
}
|
||||
|
||||
#endif
|
||||
0
trunk/paradiseo-peo/src/core/messaging.h:
Normal file
0
trunk/paradiseo-peo/src/core/messaging.h:
Normal file
92
trunk/paradiseo-peo/src/core/peo_debug.cpp
Normal file
92
trunk/paradiseo-peo/src/core/peo_debug.cpp
Normal file
|
|
@ -0,0 +1,92 @@
|
|||
// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
|
||||
|
||||
// "peo_debug.cpp"
|
||||
|
||||
// (c) OPAC Team, LIFL, August 2005
|
||||
|
||||
/* This library 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 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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 library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Contact: paradiseo-help@lists.gforge.inria.fr
|
||||
*/
|
||||
|
||||
#include "peo_debug.h"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <time.h>
|
||||
#include <unistd.h>
|
||||
#include <string.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <vector>
|
||||
|
||||
#include "peo_debug.h"
|
||||
|
||||
#define MAX_BUFF_SIZE 1000
|
||||
|
||||
#define DEBUG_PATH "./log/"
|
||||
|
||||
static bool debug = true;
|
||||
|
||||
static char host [MAX_BUFF_SIZE];
|
||||
|
||||
std :: vector <FILE *> files;
|
||||
|
||||
void setDebugMode (bool __dbg) {
|
||||
|
||||
debug = __dbg;
|
||||
gethostname (host, MAX_BUFF_SIZE);
|
||||
}
|
||||
|
||||
extern int getNodeRank ();
|
||||
|
||||
void initDebugging () {
|
||||
|
||||
mkdir (DEBUG_PATH, S_IRWXU);
|
||||
// files.push_back (stdout);
|
||||
char buff [MAX_BUFF_SIZE];
|
||||
sprintf (buff, "%s/%d", DEBUG_PATH, getNodeRank ());
|
||||
files.push_back (fopen (buff, "w"));
|
||||
}
|
||||
|
||||
void endDebugging () {
|
||||
|
||||
for (unsigned i = 0; i < files.size (); i ++)
|
||||
if (files [i] != stdout)
|
||||
fclose (files [i]);
|
||||
}
|
||||
|
||||
void printDebugMessage (const char * __mess) {
|
||||
|
||||
if (debug) {
|
||||
|
||||
char buff [MAX_BUFF_SIZE];
|
||||
time_t t = time (0);
|
||||
|
||||
/* Date */
|
||||
sprintf (buff, "[%s][%s: ", host, ctime (& t));
|
||||
* strchr (buff, '\n') = ']';
|
||||
for (unsigned i = 0; i < files.size (); i ++)
|
||||
fprintf (files [i], buff);
|
||||
|
||||
/* Message */
|
||||
sprintf (buff, "%s", __mess);
|
||||
|
||||
for (unsigned i = 0; i < files.size (); i ++) {
|
||||
fputs (buff, files [i]);
|
||||
fputs ("\n", files [i]);
|
||||
fflush (files [i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
0
trunk/paradiseo-peo/src/core/peo_debug.cpp:
Normal file
0
trunk/paradiseo-peo/src/core/peo_debug.cpp:
Normal file
37
trunk/paradiseo-peo/src/core/peo_debug.h
Normal file
37
trunk/paradiseo-peo/src/core/peo_debug.h
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
|
||||
|
||||
// "peo_debug.h"
|
||||
|
||||
// (c) OPAC Team, LIFL, August 2005
|
||||
|
||||
/* This library 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 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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 library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Contact: paradiseo-help@lists.gforge.inria.fr
|
||||
*/
|
||||
|
||||
#ifndef __peo_debug_h
|
||||
#define __peo_debug_h
|
||||
|
||||
extern void initDebugging ();
|
||||
|
||||
extern void endDebugging ();
|
||||
|
||||
extern void setDebugMode (bool __dbg = true); /* (Des)activating the Debugging mode */
|
||||
|
||||
extern void printDebugMessage (const char * __mess); /* Print a new message both on the
|
||||
standard output and a target
|
||||
text-file in a subdirectory) */
|
||||
|
||||
#endif
|
||||
0
trunk/paradiseo-peo/src/core/peo_debug.h:
Normal file
0
trunk/paradiseo-peo/src/core/peo_debug.h:
Normal file
39
trunk/paradiseo-peo/src/core/peo_fin.cpp
Normal file
39
trunk/paradiseo-peo/src/core/peo_fin.cpp
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
|
||||
|
||||
// "peo_finalize.cpp"
|
||||
|
||||
// (c) OPAC Team, LIFL, August 2005
|
||||
|
||||
/* This library 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 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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 library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Contact: paradiseo-help@lists.gforge.inria.fr
|
||||
*/
|
||||
|
||||
#include "peo_fin.h"
|
||||
#include "peo_debug.h"
|
||||
#include "runner.h"
|
||||
#include "rmc.h"
|
||||
|
||||
void peo :: finalize () {
|
||||
|
||||
printDebugMessage ("waiting for the termination of all threads");
|
||||
|
||||
joinRunners ();
|
||||
|
||||
finalizeRMC ();
|
||||
|
||||
printDebugMessage ("this is the end");
|
||||
endDebugging ();
|
||||
}
|
||||
0
trunk/paradiseo-peo/src/core/peo_fin.cpp:
Normal file
0
trunk/paradiseo-peo/src/core/peo_fin.cpp:
Normal file
32
trunk/paradiseo-peo/src/core/peo_fin.h
Normal file
32
trunk/paradiseo-peo/src/core/peo_fin.h
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
|
||||
|
||||
// "peo_finalize.h"
|
||||
|
||||
// (c) OPAC Team, LIFL, August 2005
|
||||
|
||||
/* This library 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 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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 library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Contact: paradiseo-help@lists.gforge.inria.fr
|
||||
*/
|
||||
|
||||
#ifndef __peo_finalize_h
|
||||
#define __peo_finalize_h
|
||||
|
||||
namespace peo {
|
||||
|
||||
extern void finalize ();
|
||||
}
|
||||
|
||||
#endif
|
||||
0
trunk/paradiseo-peo/src/core/peo_fin.h:
Normal file
0
trunk/paradiseo-peo/src/core/peo_fin.h:
Normal file
52
trunk/paradiseo-peo/src/core/peo_init.cpp
Normal file
52
trunk/paradiseo-peo/src/core/peo_init.cpp
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
|
||||
|
||||
// "peo_init.cpp"
|
||||
|
||||
// (c) OPAC Team, LIFL, August 2005
|
||||
|
||||
/* This library 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 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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 library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Contact: paradiseo-help@lists.gforge.inria.fr
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#include "peo_init.h"
|
||||
#include "peo_param.h"
|
||||
#include "peo_debug.h"
|
||||
#include "rmc.h"
|
||||
|
||||
namespace peo {
|
||||
|
||||
int * argc;
|
||||
|
||||
char * * * argv;
|
||||
|
||||
void init (int & __argc, char * * & __argv) {
|
||||
|
||||
argc = & __argc;
|
||||
|
||||
argv = & __argv;
|
||||
|
||||
/* Initializing the the Resource Management and Communication */
|
||||
initRMC (__argc, __argv);
|
||||
|
||||
/* Loading the common parameters */
|
||||
loadParameters (__argc, __argv);
|
||||
|
||||
/* */
|
||||
initDebugging ();
|
||||
}
|
||||
}
|
||||
0
trunk/paradiseo-peo/src/core/peo_init.cpp:
Normal file
0
trunk/paradiseo-peo/src/core/peo_init.cpp:
Normal file
36
trunk/paradiseo-peo/src/core/peo_init.h
Normal file
36
trunk/paradiseo-peo/src/core/peo_init.h
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
|
||||
|
||||
// "peo_init.h"
|
||||
|
||||
// (c) OPAC Team, LIFL, August 2005
|
||||
|
||||
/* This library 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 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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 library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Contact: paradiseo-help@lists.gforge.inria.fr
|
||||
*/
|
||||
|
||||
#ifndef __peo_init_h
|
||||
#define __peo_init_h
|
||||
|
||||
namespace peo {
|
||||
|
||||
extern int * argc;
|
||||
|
||||
extern char * * * argv;
|
||||
|
||||
extern void init (int & __argc, char * * & __argv);
|
||||
}
|
||||
|
||||
#endif
|
||||
0
trunk/paradiseo-peo/src/core/peo_init.h:
Normal file
0
trunk/paradiseo-peo/src/core/peo_init.h:
Normal file
40
trunk/paradiseo-peo/src/core/peo_param.cpp
Normal file
40
trunk/paradiseo-peo/src/core/peo_param.cpp
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
|
||||
|
||||
// "peo_param.cpp"
|
||||
|
||||
// (c) OPAC Team, LIFL, August 2005
|
||||
|
||||
/* This library 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 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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 library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Contact: paradiseo-help@lists.gforge.inria.fr
|
||||
*/
|
||||
|
||||
#include <utils/eoParser.h>
|
||||
|
||||
#include "peo_param.h"
|
||||
#include "peo_debug.h"
|
||||
|
||||
|
||||
|
||||
void peo :: loadParameters (int & __argc, char * * & __argv) {
|
||||
|
||||
eoParser parser (__argc, __argv);
|
||||
|
||||
/* Debug */
|
||||
eoValueParam <std :: string> debug_param ("false", "debug", "?");
|
||||
parser.processParam (debug_param);
|
||||
if (debug_param.value () == "true")
|
||||
setDebugMode ();
|
||||
}
|
||||
0
trunk/paradiseo-peo/src/core/peo_param.cpp:
Normal file
0
trunk/paradiseo-peo/src/core/peo_param.cpp:
Normal file
32
trunk/paradiseo-peo/src/core/peo_param.h
Normal file
32
trunk/paradiseo-peo/src/core/peo_param.h
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
|
||||
|
||||
// "peo_param.h"
|
||||
|
||||
// (c) OPAC Team, LIFL, August 2005
|
||||
|
||||
/* This library 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 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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 library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Contact: paradiseo-help@lists.gforge.inria.fr
|
||||
*/
|
||||
|
||||
#ifndef __peo_param_h
|
||||
#define __peo_param_h
|
||||
|
||||
namespace peo {
|
||||
|
||||
extern void loadParameters (int & __argc, char * * & __argv);
|
||||
}
|
||||
|
||||
#endif
|
||||
0
trunk/paradiseo-peo/src/core/peo_param.h:
Normal file
0
trunk/paradiseo-peo/src/core/peo_param.h:
Normal file
34
trunk/paradiseo-peo/src/core/peo_run.cpp
Normal file
34
trunk/paradiseo-peo/src/core/peo_run.cpp
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
|
||||
|
||||
// "peo_run.cpp"
|
||||
|
||||
// (c) OPAC Team, LIFL, August 2005
|
||||
|
||||
/* This library 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 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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 library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Contact: paradiseo-help@lists.gforge.inria.fr
|
||||
*/
|
||||
|
||||
#include "peo_init.h"
|
||||
#include "peo_run.h"
|
||||
#include "rmc.h"
|
||||
#include "runner.h"
|
||||
|
||||
void peo :: run () {
|
||||
|
||||
startRunners ();
|
||||
|
||||
runRMC ();
|
||||
}
|
||||
0
trunk/paradiseo-peo/src/core/peo_run.cpp:
Normal file
0
trunk/paradiseo-peo/src/core/peo_run.cpp:
Normal file
32
trunk/paradiseo-peo/src/core/peo_run.h
Normal file
32
trunk/paradiseo-peo/src/core/peo_run.h
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
|
||||
|
||||
// "peo_run.h"
|
||||
|
||||
// (c) OPAC Team, LIFL, August 2005
|
||||
|
||||
/* This library 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 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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 library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Contact: paradiseo-help@lists.gforge.inria.fr
|
||||
*/
|
||||
|
||||
#ifndef __peo_run_h
|
||||
#define __peo_run_h
|
||||
|
||||
namespace peo {
|
||||
|
||||
extern void run ();
|
||||
}
|
||||
|
||||
#endif
|
||||
0
trunk/paradiseo-peo/src/core/peo_run.h:
Normal file
0
trunk/paradiseo-peo/src/core/peo_run.h:
Normal file
51
trunk/paradiseo-peo/src/core/reac_thread.cpp
Normal file
51
trunk/paradiseo-peo/src/core/reac_thread.cpp
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
|
||||
|
||||
// "reac_thread.cpp"
|
||||
|
||||
// (c) OPAC Team, LIFL, August 2005
|
||||
|
||||
/* This library 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 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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 library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Contact: paradiseo-help@lists.gforge.inria.fr
|
||||
*/
|
||||
|
||||
#include "reac_thread.h"
|
||||
|
||||
static bool the_end = false;
|
||||
|
||||
static std :: vector <ReactiveThread *> reac_threads;
|
||||
|
||||
ReactiveThread :: ReactiveThread () {
|
||||
|
||||
reac_threads.push_back (this);
|
||||
sem_init (& sem, 0, 0);
|
||||
}
|
||||
|
||||
void ReactiveThread :: sleep () {
|
||||
|
||||
sem_wait (& sem);
|
||||
}
|
||||
|
||||
void ReactiveThread :: wakeUp () {
|
||||
|
||||
sem_post (& sem);
|
||||
}
|
||||
|
||||
void stopReactiveThreads () {
|
||||
|
||||
the_end = true;
|
||||
for (unsigned i = 0; i < reac_threads.size (); i ++)
|
||||
reac_threads [i] -> wakeUp ();
|
||||
}
|
||||
0
trunk/paradiseo-peo/src/core/reac_thread.cpp:
Normal file
0
trunk/paradiseo-peo/src/core/reac_thread.cpp:
Normal file
50
trunk/paradiseo-peo/src/core/reac_thread.h
Normal file
50
trunk/paradiseo-peo/src/core/reac_thread.h
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
|
||||
|
||||
// "reac_thread.h"
|
||||
|
||||
// (c) OPAC Team, LIFL, August 2005
|
||||
|
||||
/* This library 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 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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 library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Contact: paradiseo-help@lists.gforge.inria.fr
|
||||
*/
|
||||
|
||||
#ifndef REAC_THREAD_H_
|
||||
#define REAC_THREAD_H_
|
||||
|
||||
#include <semaphore.h>
|
||||
|
||||
#include "thread.h"
|
||||
|
||||
class ReactiveThread : public Thread {
|
||||
|
||||
public:
|
||||
|
||||
/* Ctor */
|
||||
ReactiveThread ();
|
||||
|
||||
void sleep ();
|
||||
|
||||
void wakeUp ();
|
||||
|
||||
private:
|
||||
|
||||
sem_t sem;
|
||||
|
||||
};
|
||||
|
||||
extern void stopReactiveThreads ();
|
||||
|
||||
#endif /*THREAD_H_*/
|
||||
0
trunk/paradiseo-peo/src/core/reac_thread.h:
Normal file
0
trunk/paradiseo-peo/src/core/reac_thread.h:
Normal file
40
trunk/paradiseo-peo/src/core/ring_topo.cpp
Normal file
40
trunk/paradiseo-peo/src/core/ring_topo.cpp
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
|
||||
|
||||
// "ring_topo.cpp"
|
||||
|
||||
// (c) OPAC Team, LIFL, September 2005
|
||||
|
||||
/* This library 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 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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 library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Contact: paradiseo-help@lists.gforge.inria.fr
|
||||
*/
|
||||
|
||||
#include "ring_topo.h"
|
||||
|
||||
void RingTopology :: setNeighbors (Cooperative * __mig,
|
||||
std :: vector <Cooperative *> & __from,
|
||||
std :: vector <Cooperative *> & __to) {
|
||||
__from.clear () ;
|
||||
__to.clear () ;
|
||||
|
||||
int len = mig.size () ;
|
||||
|
||||
for (int i = 0 ; i < len ; i ++)
|
||||
if (mig [i] == __mig) {
|
||||
__from.push_back (mig [(i - 1 + len) % len]) ;
|
||||
__to.push_back (mig [(i + 1) % len]) ;
|
||||
break;
|
||||
}
|
||||
}
|
||||
0
trunk/paradiseo-peo/src/core/ring_topo.cpp:
Normal file
0
trunk/paradiseo-peo/src/core/ring_topo.cpp:
Normal file
39
trunk/paradiseo-peo/src/core/ring_topo.h
Normal file
39
trunk/paradiseo-peo/src/core/ring_topo.h
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
|
||||
|
||||
// "ring_topo.h"
|
||||
|
||||
// (c) OPAC Team, LIFL, September 2005
|
||||
|
||||
/* This library 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 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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 library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Contact: paradiseo-help@lists.gforge.inria.fr
|
||||
*/
|
||||
|
||||
#ifndef __ring_topo_h
|
||||
#define __ring_topo_h
|
||||
|
||||
#include "topology.h"
|
||||
|
||||
class RingTopology : public Topology {
|
||||
|
||||
public :
|
||||
|
||||
void setNeighbors (Cooperative * __mig,
|
||||
std :: vector <Cooperative *> & __from,
|
||||
std :: vector <Cooperative *> & __to);
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
0
trunk/paradiseo-peo/src/core/ring_topo.h:
Normal file
0
trunk/paradiseo-peo/src/core/ring_topo.h:
Normal file
33
trunk/paradiseo-peo/src/core/rmc.h
Normal file
33
trunk/paradiseo-peo/src/core/rmc.h
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
|
||||
|
||||
// "rmc.h"
|
||||
|
||||
// (c) OPAC Team, LIFL, August 2005
|
||||
|
||||
/* This library 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 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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 library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Contact: paradiseo-help@lists.gforge.inria.fr
|
||||
*/
|
||||
|
||||
#ifndef __rmc_h
|
||||
#define __rmc_h
|
||||
|
||||
extern void initRMC (int & __argc, char * * & __argv);
|
||||
|
||||
extern void runRMC (); /* Resource Management and Communication */
|
||||
|
||||
extern void finalizeRMC ();
|
||||
|
||||
#endif
|
||||
0
trunk/paradiseo-peo/src/core/rmc.h:
Normal file
0
trunk/paradiseo-peo/src/core/rmc.h:
Normal file
119
trunk/paradiseo-peo/src/core/runner.cpp
Normal file
119
trunk/paradiseo-peo/src/core/runner.cpp
Normal file
|
|
@ -0,0 +1,119 @@
|
|||
// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
|
||||
|
||||
// "runner.cpp"
|
||||
|
||||
// (c) OPAC Team, LIFL, August 2005
|
||||
|
||||
/* This library 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 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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 library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Contact: paradiseo-help@lists.gforge.inria.fr
|
||||
*/
|
||||
|
||||
#include <vector>
|
||||
|
||||
#include "runner.h"
|
||||
#include "reac_thread.h"
|
||||
#include "peo_debug.h"
|
||||
#include "messaging.h"
|
||||
|
||||
static unsigned num_act = 0; /* Number of active runners */
|
||||
|
||||
static std :: vector <pthread_t *> ll_threads; /* Low-level runner threads */
|
||||
|
||||
static std :: vector <Runner *> the_runners;
|
||||
|
||||
static unsigned num_runners = 0;
|
||||
|
||||
Runner :: Runner () {
|
||||
|
||||
id = ++ num_runners;
|
||||
the_runners.push_back (this);
|
||||
sem_init (& sem_start, 0, 0);
|
||||
num_act ++;
|
||||
}
|
||||
|
||||
extern int getNodeRank ();
|
||||
|
||||
extern int getNumberOfNodes ();
|
||||
|
||||
void unpackTerminationOfRunner () {
|
||||
|
||||
RUNNER_ID id;
|
||||
unpack (id);
|
||||
num_act --;
|
||||
printDebugMessage ("I'm noticed of the termination of a runner");
|
||||
if (! num_act) {
|
||||
printDebugMessage ("all the runners have terminated. Now stopping the reactive threads.");
|
||||
stopReactiveThreads ();
|
||||
}
|
||||
}
|
||||
|
||||
bool atLeastOneActiveRunner () {
|
||||
|
||||
return num_act;
|
||||
}
|
||||
|
||||
RUNNER_ID Runner :: getID () {
|
||||
|
||||
return id;
|
||||
}
|
||||
|
||||
void Runner :: start () {
|
||||
|
||||
setActive ();
|
||||
sem_post (& sem_start);
|
||||
run ();
|
||||
terminate ();
|
||||
}
|
||||
|
||||
void Runner :: notifySendingTermination () {
|
||||
|
||||
/*
|
||||
char b [1000];
|
||||
sprintf (b, "Il reste encore %d !!!!!!!!!!!!", n);
|
||||
printDebugMessage (b);
|
||||
*/
|
||||
printDebugMessage ("je suis informe que tout le monde a recu ma terminaison");
|
||||
setPassive ();
|
||||
|
||||
}
|
||||
|
||||
void Runner :: waitStarting () {
|
||||
|
||||
sem_wait (& sem_start);
|
||||
}
|
||||
|
||||
Runner * getRunner (RUNNER_ID __key) {
|
||||
|
||||
return dynamic_cast <Runner *> (getCommunicable (__key));
|
||||
}
|
||||
|
||||
void startRunners () {
|
||||
|
||||
/* Runners */
|
||||
for (unsigned i = 0; i < the_runners.size (); i ++)
|
||||
if (the_runners [i] -> isLocal ()) {
|
||||
addThread (the_runners [i], ll_threads);
|
||||
the_runners [i] -> waitStarting ();
|
||||
}
|
||||
printDebugMessage ("launched the parallel runners");
|
||||
}
|
||||
|
||||
|
||||
void joinRunners () {
|
||||
|
||||
|
||||
joinThreads (ll_threads);
|
||||
}
|
||||
0
trunk/paradiseo-peo/src/core/runner.cpp:
Normal file
0
trunk/paradiseo-peo/src/core/runner.cpp:
Normal file
73
trunk/paradiseo-peo/src/core/runner.h
Normal file
73
trunk/paradiseo-peo/src/core/runner.h
Normal file
|
|
@ -0,0 +1,73 @@
|
|||
// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
|
||||
|
||||
// "runner.h"
|
||||
|
||||
// (c) OPAC Team, LIFL, August 2005
|
||||
|
||||
/* This library 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 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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 library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Contact: paradiseo-help@lists.gforge.inria.fr
|
||||
*/
|
||||
|
||||
#ifndef __runner_h
|
||||
#define __runner_h
|
||||
|
||||
#include <eoFunctor.h>
|
||||
|
||||
#include "communicable.h"
|
||||
#include "thread.h"
|
||||
|
||||
typedef unsigned RUNNER_ID;
|
||||
|
||||
class Runner : public Communicable, public Thread {
|
||||
|
||||
public :
|
||||
|
||||
Runner ();
|
||||
|
||||
void start ();
|
||||
|
||||
void waitStarting ();
|
||||
|
||||
bool isLocal ();
|
||||
|
||||
void terminate ();
|
||||
|
||||
virtual void run () = 0;
|
||||
|
||||
RUNNER_ID getID ();
|
||||
|
||||
void packTermination ();
|
||||
|
||||
void notifySendingTermination ();
|
||||
|
||||
private :
|
||||
|
||||
sem_t sem_start;
|
||||
|
||||
unsigned id;
|
||||
};
|
||||
|
||||
extern bool atLeastOneActiveRunner ();
|
||||
|
||||
extern void unpackTerminationOfRunner ();
|
||||
|
||||
extern Runner * getRunner (RUNNER_ID __key);
|
||||
|
||||
extern void startRunners ();
|
||||
|
||||
extern void joinRunners ();
|
||||
|
||||
#endif
|
||||
0
trunk/paradiseo-peo/src/core/runner.h:
Normal file
0
trunk/paradiseo-peo/src/core/runner.h:
Normal file
73
trunk/paradiseo-peo/src/core/service.cpp
Normal file
73
trunk/paradiseo-peo/src/core/service.cpp
Normal file
|
|
@ -0,0 +1,73 @@
|
|||
// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
|
||||
|
||||
// "service.cpp"
|
||||
|
||||
// (c) OPAC Team, LIFL, August 2005
|
||||
|
||||
/* This library 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 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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 library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Contact: paradiseo-help@lists.gforge.inria.fr
|
||||
*/
|
||||
|
||||
#include "service.h"
|
||||
|
||||
void Service :: setOwner (Thread & __owner) {
|
||||
|
||||
owner = & __owner;
|
||||
}
|
||||
|
||||
Thread * Service :: getOwner () {
|
||||
|
||||
return owner;
|
||||
}
|
||||
|
||||
Service * getService (SERVICE_ID __key) {
|
||||
|
||||
return dynamic_cast <Service *> (getCommunicable (__key));
|
||||
}
|
||||
|
||||
void Service :: notifySendingData () {
|
||||
|
||||
}
|
||||
void Service :: notifySendingResourceRequest () {
|
||||
|
||||
num_sent_rr --;
|
||||
if (! num_sent_rr)
|
||||
notifySendingAllResourceRequests ();
|
||||
}
|
||||
|
||||
void Service :: notifySendingAllResourceRequests () {
|
||||
|
||||
}
|
||||
|
||||
void Service :: packData () {
|
||||
|
||||
}
|
||||
|
||||
void Service :: unpackData () {
|
||||
|
||||
}
|
||||
|
||||
void Service :: execute () {
|
||||
|
||||
}
|
||||
|
||||
void Service :: packResult () {
|
||||
|
||||
}
|
||||
|
||||
void Service :: unpackResult () {
|
||||
|
||||
}
|
||||
0
trunk/paradiseo-peo/src/core/service.cpp:
Normal file
0
trunk/paradiseo-peo/src/core/service.cpp:
Normal file
65
trunk/paradiseo-peo/src/core/service.h
Normal file
65
trunk/paradiseo-peo/src/core/service.h
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
|
||||
|
||||
// "service.h"
|
||||
|
||||
// (c) OPAC Team, LIFL, August 2005
|
||||
|
||||
/* This library 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 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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 library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Contact: paradiseo-help@lists.gforge.inria.fr
|
||||
*/
|
||||
|
||||
#ifndef __service_h
|
||||
#define __service_h
|
||||
|
||||
#include "communicable.h"
|
||||
#include "thread.h"
|
||||
|
||||
typedef unsigned SERVICE_ID;
|
||||
|
||||
class Service : public Communicable {
|
||||
|
||||
public :
|
||||
|
||||
void setOwner (Thread & __owner);
|
||||
|
||||
Thread * getOwner ();
|
||||
|
||||
void requestResourceRequest (unsigned __how_many = 1);
|
||||
void packResourceRequest ();
|
||||
|
||||
virtual void packData ();
|
||||
virtual void unpackData ();
|
||||
|
||||
virtual void execute ();
|
||||
|
||||
virtual void packResult ();
|
||||
virtual void unpackResult ();
|
||||
|
||||
virtual void notifySendingData ();
|
||||
virtual void notifySendingResourceRequest ();
|
||||
virtual void notifySendingAllResourceRequests ();
|
||||
|
||||
private :
|
||||
|
||||
Thread * owner; /* Owner thread (i.e. 'uses' that service) */
|
||||
|
||||
unsigned num_sent_rr; /* Number of RR not really sent (i.e. still in the sending queue)*/
|
||||
|
||||
};
|
||||
|
||||
extern Service * getService (SERVICE_ID __key);
|
||||
|
||||
#endif
|
||||
0
trunk/paradiseo-peo/src/core/service.h:
Normal file
0
trunk/paradiseo-peo/src/core/service.h:
Normal file
96
trunk/paradiseo-peo/src/core/thread.cpp
Normal file
96
trunk/paradiseo-peo/src/core/thread.cpp
Normal file
|
|
@ -0,0 +1,96 @@
|
|||
// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
|
||||
|
||||
// "thread.cpp"
|
||||
|
||||
// (c) OPAC Team, LIFL, August 2005
|
||||
|
||||
/* This library 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 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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 library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Contact: paradiseo-help@lists.gforge.inria.fr
|
||||
*/
|
||||
|
||||
#include <map>
|
||||
|
||||
#include "thread.h"
|
||||
|
||||
static std :: vector <Thread *> threads;
|
||||
|
||||
unsigned num_act = 0;
|
||||
|
||||
Thread :: Thread () {
|
||||
|
||||
threads.push_back (this);
|
||||
act = false;
|
||||
}
|
||||
|
||||
Thread :: ~ Thread () {
|
||||
|
||||
/* Nothing ! */
|
||||
}
|
||||
|
||||
extern int getNodeRank ();
|
||||
|
||||
void Thread :: setActive () {
|
||||
|
||||
if (! act ) {
|
||||
|
||||
act = true;
|
||||
num_act ++;
|
||||
// if (getNodeRank () == 1)
|
||||
// printf ("On passe a %d\n", num_act);
|
||||
}
|
||||
}
|
||||
|
||||
void Thread :: setPassive () {
|
||||
|
||||
if (act) {
|
||||
|
||||
act = false;
|
||||
num_act --;
|
||||
// if (getNodeRank () == 1)
|
||||
// printf ("On passe a %d\n", num_act);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
bool atLeastOneActiveThread () {
|
||||
|
||||
return num_act;
|
||||
}
|
||||
|
||||
unsigned numberOfActiveThreads () {
|
||||
|
||||
return num_act;
|
||||
}
|
||||
|
||||
static void * launch (void * __arg) {
|
||||
|
||||
Thread * thr = (Thread *) __arg;
|
||||
thr -> start ();
|
||||
return 0;
|
||||
}
|
||||
|
||||
void addThread (Thread * __hl_thread, std :: vector <pthread_t *> & __ll_threads) {
|
||||
|
||||
pthread_t * ll_thr = new pthread_t;
|
||||
__ll_threads.push_back (ll_thr);
|
||||
pthread_create (ll_thr, 0, launch, __hl_thread);
|
||||
}
|
||||
|
||||
void joinThreads (std :: vector <pthread_t *> & __threads) {
|
||||
|
||||
for (unsigned i = 0; i < __threads.size (); i ++)
|
||||
pthread_join (* __threads [i], 0);
|
||||
}
|
||||
0
trunk/paradiseo-peo/src/core/thread.cpp:
Normal file
0
trunk/paradiseo-peo/src/core/thread.cpp:
Normal file
63
trunk/paradiseo-peo/src/core/thread.h
Normal file
63
trunk/paradiseo-peo/src/core/thread.h
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
|
||||
|
||||
// "thread.h"
|
||||
|
||||
// (c) OPAC Team, LIFL, August 2005
|
||||
|
||||
/* This library 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 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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 library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Contact: paradiseo-help@lists.gforge.inria.fr
|
||||
*/
|
||||
|
||||
#ifndef THREAD_H_
|
||||
#define THREAD_H_
|
||||
|
||||
#include <vector>
|
||||
|
||||
/* A high-level thread */
|
||||
|
||||
class Thread {
|
||||
|
||||
public:
|
||||
|
||||
/* Ctor */
|
||||
Thread ();
|
||||
|
||||
/* Dtor */
|
||||
virtual ~ Thread ();
|
||||
|
||||
/* Go ! */
|
||||
virtual void start () = 0;
|
||||
|
||||
void setActive ();/* It means the current process is going to send messages soon */
|
||||
void setPassive ();/* The current process is not going to perform send operations
|
||||
(but it may receive messages) */
|
||||
|
||||
private :
|
||||
|
||||
bool act;
|
||||
};
|
||||
|
||||
extern void addThread (Thread * __hl_thread, std :: vector <pthread_t *> & __ll_threads);
|
||||
|
||||
extern void joinThreads (std :: vector <pthread_t *> & __ll_threads);
|
||||
|
||||
extern bool atLeastOneActiveThread (); /* It returns 'true' iff at least one process is going
|
||||
to send messages */
|
||||
|
||||
extern unsigned numberOfActiveThreads ();
|
||||
|
||||
|
||||
#endif /*THREAD_H_*/
|
||||
0
trunk/paradiseo-peo/src/core/thread.h:
Normal file
0
trunk/paradiseo-peo/src/core/thread.h:
Normal file
35
trunk/paradiseo-peo/src/core/topology.cpp
Normal file
35
trunk/paradiseo-peo/src/core/topology.cpp
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
|
||||
|
||||
// "topo.cpp"
|
||||
|
||||
// (c) OPAC Team, LIFL, September 2005
|
||||
|
||||
/* This library 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 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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 library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Contact: paradiseo-help@lists.gforge.inria.fr
|
||||
*/
|
||||
|
||||
#include "topology.h"
|
||||
|
||||
Topology :: ~ Topology () {
|
||||
|
||||
/* Nothing ! */
|
||||
}
|
||||
|
||||
void Topology :: add (Cooperative & __mig) {
|
||||
|
||||
mig.push_back (& __mig) ;
|
||||
}
|
||||
|
||||
0
trunk/paradiseo-peo/src/core/topology.cpp:
Normal file
0
trunk/paradiseo-peo/src/core/topology.cpp:
Normal file
48
trunk/paradiseo-peo/src/core/topology.h
Normal file
48
trunk/paradiseo-peo/src/core/topology.h
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
|
||||
|
||||
// "topology.h"
|
||||
|
||||
// (c) OPAC Team, LIFL, September 2005
|
||||
|
||||
/* This library 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 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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 library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Contact: paradiseo-help@lists.gforge.inria.fr
|
||||
*/
|
||||
|
||||
#ifndef __topology_h
|
||||
#define __topology_h
|
||||
|
||||
#include <vector>
|
||||
|
||||
#include "cooperative.h"
|
||||
|
||||
class Topology {
|
||||
|
||||
public:
|
||||
|
||||
virtual ~Topology ();
|
||||
|
||||
void add (Cooperative & __mig);
|
||||
|
||||
virtual void setNeighbors (Cooperative * __mig,
|
||||
std :: vector <Cooperative *> & __from,
|
||||
std :: vector <Cooperative *> & __to) = 0;
|
||||
|
||||
protected:
|
||||
|
||||
std :: vector <Cooperative *> mig ;
|
||||
};
|
||||
|
||||
#endif
|
||||
0
trunk/paradiseo-peo/src/core/topology.h:
Normal file
0
trunk/paradiseo-peo/src/core/topology.h:
Normal file
29
trunk/paradiseo-peo/src/paradiseo
Normal file
29
trunk/paradiseo-peo/src/paradiseo
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
|
||||
|
||||
// "paradiseo"
|
||||
|
||||
// (c) OPAC Team, LIFL, August 2005
|
||||
|
||||
/* This library 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 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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 library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Contact: paradiseo-help@lists.gforge.inria.fr
|
||||
*/
|
||||
|
||||
#ifndef __paradiseo_
|
||||
#define __paradiseo_
|
||||
|
||||
#include "paradiseo.h"
|
||||
|
||||
#endif
|
||||
300
trunk/paradiseo-peo/src/paradiseo.h
Normal file
300
trunk/paradiseo-peo/src/paradiseo.h
Normal file
|
|
@ -0,0 +1,300 @@
|
|||
// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
|
||||
|
||||
// "paradiseo.h"
|
||||
|
||||
// (c) OPAC Team, LIFL, August 2005
|
||||
|
||||
/* This library 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 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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 library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Contact: paradiseo-help@lists.gforge.inria.fr
|
||||
*/
|
||||
|
||||
#ifndef __paradiseo_h_
|
||||
#define __paradiseo_h_
|
||||
|
||||
#include <eo>
|
||||
#include <mo>
|
||||
|
||||
|
||||
//! \mainpage The ParadisEO-PEO Framework
|
||||
//!
|
||||
//! \section intro Introduction
|
||||
//!
|
||||
//! ParadisEO is a white-box object-oriented framework dedicated to the reusable design
|
||||
//! of parallel and distributed metaheuristics (PDM). ParadisEO provides a broad range of features including evolutionary
|
||||
//! algorithms (EA), local searches (LS), the most common parallel and distributed models and hybridization
|
||||
//! mechanisms, etc. This high content and utility encourages its use at European level. ParadisEO is based on a
|
||||
//! clear conceptual separation of the solution methods from the problems they are intended to solve. This separation
|
||||
//! confers to the user a maximum code and design reuse. Furthermore, the fine-grained nature of the classes
|
||||
//! provided by the framework allow a higher flexibility compared to other frameworks. ParadisEO is one of the rare
|
||||
//! frameworks that provide the most common parallel and distributed models. Their implementation is portable on
|
||||
//! distributed-memory machines as well as on shared-memory multiprocessors, as it uses standard libraries such as
|
||||
//! MPI, PVM and PThreads. The models can be exploited in a transparent way, one has just to instantiate their associated
|
||||
//! provided classes. Their experimentation on the radio network design real-world application demonstrate their
|
||||
//! efficiency.
|
||||
//!
|
||||
//! In practice, combinatorial optimization problems are often NP-hard, CPU time-consuming,
|
||||
//! and evolve over time. Unlike exact methods, metaheuristics allow to tackle large-size problems
|
||||
//! instances by delivering satisfactory solutions in a reasonable time. Metaheuristics are
|
||||
//! general-purpose heuristics that split in two categories: evolutionary algorithms (EA) and local
|
||||
//! search methods (LS). These two families have complementary characteristics: EA allow
|
||||
//! a better exploration of the search space, while LS have the power to intensify the search in
|
||||
//! promising regions. Their hybridization allows to deliver robust and better solutions
|
||||
//!
|
||||
//! Although serial metaheuristics have a polynomial temporal complexity, they remain
|
||||
//! unsatisfactory for industrial problems. Parallel and distributed computing is a powerful way
|
||||
//! to deal with the performance issue of these problems. Numerous parallel and distributed
|
||||
//! metaheuristics (PDM) and their implementations have been proposed, and are available on
|
||||
//! theWeb. They can be reused and adapted to his/her own problems. However, the user has to
|
||||
//! deeply examine the code and rewrite its problem-specific sections. The task is tedious, errorprone,
|
||||
//! takes along time and makes harder the produced code maintenance. A better way to
|
||||
//! reuse the code of existing PDM is the reuse through libraries. These are often
|
||||
//! more reliable as they are more tested and documented. They allow a better maintainability
|
||||
//! and efficiency. However, libraries do not allow the reuse of design.
|
||||
//!
|
||||
//! \section parallel_metaheuristics Parallel and distributed metaheuristics
|
||||
//!
|
||||
//! \subsection parallel_distributed Parallel distributed evolutionary algorithms
|
||||
//!
|
||||
//! Evolutionary Algorithms (EA) are based on the iterative improvement of a
|
||||
//! population of solutions. At each step, individuals are selected, paired and recombined in order
|
||||
//! to generate new solutions that replace other ones, and so on. As the algorithm converges,
|
||||
//! the population is mainly composed of individuals well adapted to the "environment", for
|
||||
//! instance the problem. The main features that characterize EA are the way the population is
|
||||
//! initialized, the selection strategy (deterministic/stochastic) by fostering "good" solutions,
|
||||
//! the replacement strategy that discards individuals, and the continuation/stopping criterion
|
||||
//! to decide whether the evolution should go on or not.
|
||||
//!
|
||||
//! Basically, three major parallel and distributed models for EA can been distinguished:
|
||||
//! the island (a)synchronous cooperative model, the parallel evaluation of the
|
||||
//! population, and the distributed evaluation of a single solution.
|
||||
//! <ul>
|
||||
//! <li> <i>Island (a)synchronous cooperative model</i>. Different EA are simultaneously deployed to
|
||||
//! cooperate for computing better and robust solutions. They exchange in an asynchronous
|
||||
//! way genetic stuff to diversify the search. The objective is to allow to delay the global
|
||||
//! convergence, especially when theEAare heterogeneous regarding the variation operators.
|
||||
//! The migration of individuals follows a policy defined by few parameters: the migration
|
||||
//! decision criterion, the exchange topology, the number of emigrants, the emigrants selection
|
||||
//! policy, and the replacement/integration policy.</li>
|
||||
//!
|
||||
//! <li> <i>Parallel evaluation of the population</i>. It is required as it is in general the most timeconsuming.
|
||||
//! The parallel evaluation follows the centralized model. The farmer applies
|
||||
//! the following operations: selection, transformation and replacement as they require a
|
||||
//! global management of the population. At each generation, it distributes the set of new
|
||||
//! solutions between differentworkers. These evaluate and return back the solutions and their
|
||||
//! quality values. An efficient execution is often obtained particularly when the evaluation
|
||||
//! of each solution is costly. The two main advantages of an asynchronous model over
|
||||
//! the synchronous model are: (1) the fault tolerance of the asynchronous model; (2) the
|
||||
//! robustness in case the fitness computation can take very different computation times (e.g.
|
||||
//! for nonlinear numerical optimization). Whereas some time-out detection can be used to
|
||||
//! address the former issue, the latter one can be partially overcome if the grain is set to very
|
||||
//! small values, as individuals will be sent out for evaluations upon request of the workers.</li>
|
||||
//!
|
||||
//! <li> <i>Distributed evaluation of a single solution</i>. The quality of each solution is evaluated in
|
||||
//! a parallel centralized way. That model is particularly interesting when the evaluation
|
||||
//! function can be itself parallelized as it is CPU time-consuming and/or IO intensive. In
|
||||
//! that case, the function can be viewed as an aggregation of a certain number of partial
|
||||
//! functions. The partial functions could also be identical if for example the problem to deal
|
||||
//! with is a data mining one. The evaluation is thus data parallel and the accesses to data
|
||||
//! base are performed in parallel. Furthermore, a reduction operation is performed on the
|
||||
//! results returned by the partial functions. As a summary, for this model the user has to
|
||||
//! indicate a set of partial functions and an aggregation operator of these.</li>
|
||||
//! </ul>
|
||||
//!
|
||||
//! \subsection parallel_ls Parallel distributed local searches
|
||||
//!
|
||||
//! \subsubsection local_searches Local searches
|
||||
//!
|
||||
//! All metaheuristics dedicated to the improvement of a single solution
|
||||
//! are based on the concept of neighborhood. They start from a solution randomly generated or
|
||||
//! obtained from another optimization algorithm, and update it, step by step, by replacing the
|
||||
//! current solution by one of its neighboring candidates. Some criterion have been identified to
|
||||
//! differentiate such searches: the heuristic internal memory, the choice of the initial solution,
|
||||
//! the candidate solutions generator, and the selection strategy of candidate moves. Three main
|
||||
//! algorithms of local search stand out: Hill Climbing (HC), Simulated
|
||||
//! Annealing (SA) and Tabu Search (TS).
|
||||
//!
|
||||
//! \subsubsection parallel_local_searches Parallel local searches
|
||||
//!
|
||||
//! Two parallel distributed models are commonly used in the literature: the parallel distributed
|
||||
//! exploration of neighboring candidate solutions model, and the multi-start model.
|
||||
//! <ul>
|
||||
//! <li><i>Parallel exploration of neighboring candidates</i>. It is a low-level Farmer-Worker model
|
||||
//! that does not alter the behavior of the heuristic. A sequential search computes the same
|
||||
//! results slower.At the beginning of each iteration, the farmer duplicates the current solution
|
||||
//! between distributed nodes. Each one manages some candidates and the results are returned to the farmer.
|
||||
//! The model is efficient if the evaluation of a each solution is time-consuming and/or there are a great
|
||||
//! deal of candidate neighbors to evaluate. This is obviously not applicable to SA since only one candidate
|
||||
//! is evaluated at each iteration. Likewise, the efficiency of the model for HC is not always guaranteed as
|
||||
//! the number of neighboring solutions to process before finding one that improves the current objective function may
|
||||
//! be highly variable.</li>
|
||||
//!
|
||||
//! <li> <i>Multi-start model</i>. It consists in simultaneously launching several local searches. They
|
||||
//! may be heterogeneous, but no information is exchanged between them. The resultswould
|
||||
//! be identical as if the algorithms were sequentially run.Very often deterministic algorithms
|
||||
//! differ by the supplied initial solution and/or some other parameters. This trivial model is
|
||||
//! convenient for low-speed networks of workstations.</li>
|
||||
//! </ul>
|
||||
//!
|
||||
//! \section hybridization Hybridization
|
||||
//!
|
||||
//! Recently, hybrid metaheuristics have gained a considerable interest. For many
|
||||
//! practical or academic optimization problems, the best found solutions are obtained by
|
||||
//! hybrid algorithms. Combinations of different metaheuristics have provided very powerful
|
||||
//! search methods. Two levels and two modes
|
||||
//! of hybridization have been distinguished: Low and High levels, and Relay and Cooperative modes.
|
||||
//! The low-level hybridization addresses the functional composition of a single optimization
|
||||
//! method. A function of a given metaheuristic is replaced by another metaheuristic. On the
|
||||
//! contrary, for high-level hybrid algorithms the different metaheuristics are self-containing,
|
||||
//! meaning no direct relationship to their internal working is considered. On the other hand,
|
||||
//! relay hybridization means a set of metaheuristics is applied in a pipeline way. The output
|
||||
//! of a metaheuristic (except the last) is the input of the following one (except the first).
|
||||
//! Conversely, co-evolutionist hybridization is a cooperative optimization model. Each metaheuristic
|
||||
//! performs a search in a solution space, and exchange solutions with others.
|
||||
//!
|
||||
//! \section paradiseo_goals Paradiseo goals and architecture
|
||||
//!
|
||||
//! The "EO" part of ParadisEO means Evolving Objects. EO is a C++ LGPL open source
|
||||
//! framework and includes a paradigm-free Evolutionary Computation library (EOlib)
|
||||
//! dedicated to the flexible design of EA through evolving objects superseding the most common
|
||||
//! dialects (Genetic Algorithms, Evolution Strategies, Evolutionary Programming and
|
||||
//! Genetic Programming). Furthermore, EO integrates several services including visualization
|
||||
//! facilities, on-line definition of parameters, application check-pointing, etc. ParadisEO is an
|
||||
//! extended version of the EO framework. The extensions include local search methods, hybridization
|
||||
//! mechanisms, parallelism and distribution mechanisms, and other features that
|
||||
//! are not addressed in this paper such as multi-objective optimization and grid computing. In
|
||||
//! the next sections, we present the motivations and goals of ParadisEO, its architecture and
|
||||
//! some of its main implementation details and issues.
|
||||
//!
|
||||
//! \subsection motivation Motivations and goals
|
||||
//!
|
||||
//! A framework is normally intended to be exploited by as many users as possible. Therefore,
|
||||
//! its exploitation could be successful only if some important user criteria are satisfied. The
|
||||
//! following criteria are the major of them and constitute the main objectives of the ParadisEO
|
||||
//! framework:
|
||||
//!
|
||||
//! <ul>
|
||||
//! <li><i>Maximum design and code reuse</i>. The framework must provide for the user a whole
|
||||
//! architecture design of his/her solution method. Moreover, the programmer may redo as
|
||||
//! little code as possible. This objective requires a clear and maximal conceptual separation
|
||||
//! between the solution methods and the problems to be solved, and thus a deep domain
|
||||
//! analysis. The user might therefore develop only the minimal problem-specific code.</li>
|
||||
//!
|
||||
//! <li><i>Flexibility and adaptability</i>. It must be possible for the user to easily add new features/
|
||||
//! metaheuristics or change existing ones without implicating other components. Furthermore,
|
||||
//! as in practice existing problems evolve and new others arise these have to be
|
||||
//! tackled by specializing/adapting the framework components.</li>
|
||||
//!
|
||||
//! <li><i>Utility</i>. The framework must allow the user to cover a broad range of metaheuristics,
|
||||
//! problems, parallel distributed models, hybridization mechanisms, etc.</li>
|
||||
//!
|
||||
//! <li><i>Transparent and easy access to performance and robustness</i>. As the optimization applications
|
||||
//! are often time-consuming the performance issue is crucial. Parallelism and
|
||||
//! distribution are two important ways to achieve high performance execution. In order to
|
||||
//! facilitate its use it is implemented so that the user can deploy his/her parallel algorithms in
|
||||
//! a transparent manner. Moreover, the execution of the algorithms must be robust to guarantee
|
||||
//! the reliability and the quality of the results. The hybridization mechanism allows
|
||||
//! to obtain robust and better solutions.</li>
|
||||
//!
|
||||
//! <li><i>Portability</i>. In order to satisfy a large number of users the framework must support
|
||||
//! different material architectures and their associated operating systems.</li>
|
||||
//! </ul>
|
||||
//!
|
||||
//! \subsection architecture ParadisEO architecture
|
||||
//!
|
||||
//! The architecture of ParadisEO is multi-layer and modular allowing to achieve the objectives
|
||||
//! quoted above. This allows particularly a high flexibility and adaptability, an
|
||||
//! easier hybridization, and more code and design reuse. The architecture has three layers
|
||||
//! identifying three major categories of classes: <i>Solvers</i>, <i>Runners</i> and <i>Helpers</i>.
|
||||
//! <ul>
|
||||
//! <li><i>Helpers</i>. Helpers are low-level classes that perform specific actions related to the evolution
|
||||
//! or search process. They are split in two categories: <i>Evolutionary helpers (EH)</i>
|
||||
//! and <i>Local search helpers (LSH)</i>. EH include mainly the transformation, selection and
|
||||
//! replacement operations, the evaluation function and the stopping criterion. LSH can be
|
||||
//! generic such as the neighborhood explorer class, or specific to the local search metaheuristic
|
||||
//! like the tabu list manager class in the Tabu Search solution method. On the
|
||||
//! other hand, there are some special helpers dedicated to the management of parallel and
|
||||
//! distributed models 2 and 3, such as the communicators that embody the communication
|
||||
//! services.
|
||||
//!
|
||||
//! Helpers cooperate between them and interact with the components of the upper layer
|
||||
//! i.e. the runners. The runners invoke the helpers through function parameters. Indeed,
|
||||
//! helpers have not their own data, but they work on the internal data of the runners.</li>
|
||||
//!
|
||||
//! <li><i>Runners</i>. The Runners layer contains a set of classes that implement the metaheuristics
|
||||
//! themselves. They perform the run of the metaheuristics from the initial state or
|
||||
//! population to the final one. One can distinguish the <i>Evolutionary runners (ER)</i> such as
|
||||
//! genetic algorithms, evolution strategies, etc., and <i>Local search runners (LSR)</i> like tabu
|
||||
//! search, simulated annealing and hill climbing. Runners invoke the helpers to perform
|
||||
//! specific actions on their data. For instance, an ER may ask the fitness function evaluation
|
||||
//! helper to evaluate its population. An LSR asks the movement helper to perform
|
||||
//! a given movement on the current state. Furthermore, runners can be serial or parallel
|
||||
//! distributed.</li>
|
||||
//!
|
||||
//! <li><i>Solvers</i>. Solvers are devoted to control the evolution process and/or the search. They
|
||||
//! generate the initial state (solution or population) and define the strategy for combining
|
||||
//! and sequencing different metaheuristics. Two types of solvers can be distinguished.
|
||||
//! <i>Single metaheuristic solvers (SMS)</i> and <i>Multiple metaheuristics solvers (MMS)</i>. SMSs
|
||||
//! are dedicated to the execution of only one metaheuristic.MMS are more complex as they
|
||||
//! control and sequence several metaheuristics that can be heterogeneous. Solvers interact with
|
||||
//! the user by getting the input data and delivering the output (best solution, statistics,
|
||||
//! etc).</li>
|
||||
//! </ul>
|
||||
//!
|
||||
//! According to the generality of their embedded features, the classes of the architecture split
|
||||
//! in two major categories: <i>Provided classes</i> and <i>Required classes</i>. Provided classes embody
|
||||
//! the factored out part of the metaheuristics. They are generic, implemented in the framework,
|
||||
//! and ensure the control at run time. Required classes are those that must be supplied by the
|
||||
//! user. They encapsulate the problem-specific aspects of the application. These classes are
|
||||
//! fixed but not implemented in ParadisEO. The programmer has the burden to develop them
|
||||
//! using the OO specialization mechanism.
|
||||
//!
|
||||
//! \section tutorials ParadisEO-PEO Tutorials
|
||||
//!
|
||||
//! The basisc of the ParadisEO framework philosophy are exposed in a few simple tutorials:
|
||||
//! <ul>
|
||||
//! <li>
|
||||
//! <a href="lesson1/html/main.html" style="text-decoration:none;"> creating a simple ParadisEO evolutionary algorithm</a>;
|
||||
//! </li>
|
||||
//! </ul>
|
||||
//! All the presented examples have as case study the travel salesman problem (TSP). Different operators and auxiliary objects were designed,
|
||||
//! standing as a <a href="lsnshared/html/index.html" target="new" style="text-decoration:none;">common shared source code base</a>. While not being
|
||||
//! part of the ParadisEO-PEO framework, it may represent a startpoint for a better understanding of the presented tutorials.
|
||||
|
||||
|
||||
|
||||
#include "core/peo_init.h"
|
||||
#include "core/peo_run.h"
|
||||
#include "core/peo_fin.h"
|
||||
|
||||
#include "core/eoVector_comm.h"
|
||||
|
||||
#include "peoEA.h"
|
||||
|
||||
/* Parallel steps of the E.A. */
|
||||
#include "peoSeqTransform.h"
|
||||
#include "peoParaSGATransform.h"
|
||||
#include "peoSeqPopEval.h"
|
||||
#include "peoParaPopEval.h"
|
||||
|
||||
/* Cooperative island model */
|
||||
#include "core/ring_topo.h"
|
||||
#include "peoAsyncIslandMig.h"
|
||||
#include "peoSyncIslandMig.h"
|
||||
|
||||
/* Synchronous multi-start model */
|
||||
#include "peoSyncMultiStart.h"
|
||||
|
||||
#endif
|
||||
0
trunk/paradiseo-peo/src/paradiseo.h:
Normal file
0
trunk/paradiseo-peo/src/paradiseo.h:
Normal file
0
trunk/paradiseo-peo/src/paradiseo:
Normal file
0
trunk/paradiseo-peo/src/paradiseo:
Normal file
45
trunk/paradiseo-peo/src/peoAggEvalFunc.h
Normal file
45
trunk/paradiseo-peo/src/peoAggEvalFunc.h
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
|
||||
|
||||
// "peoAggEvalFunc.h"
|
||||
|
||||
// (c) OPAC Team, LIFL, August 2005
|
||||
|
||||
/* This library 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 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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 library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Contact: paradiseo-help@lists.gforge.inria.fr
|
||||
*/
|
||||
|
||||
#ifndef __peoAggEvalFunc_h
|
||||
#define __peoAggEvalFunc_h
|
||||
|
||||
#include <eoFunctor.h>
|
||||
|
||||
//! Interface class for creating an aggregate evaluation function.
|
||||
|
||||
//! The peoAggEvalFunc class offers only the interface for creating aggregate evaluation functions - there
|
||||
//! are no direct internal functions provided. The class inherits <b>public eoBF< EOT&, const typename EOT :: Fitness&, void ></b>
|
||||
//! thus requiring, for the derived classes, the creation of a function having the following signature:
|
||||
//!
|
||||
//! <table style="border:none; border-spacing:0px;text-align:left; vertical-align:top; font-size:8pt;" border="0">
|
||||
//! <tr><td>void operator()( EOT& __eot, const typename EOT :: Fitness& __partial_fittness ); </td> <td> </td></tr>
|
||||
//! </table>
|
||||
//!
|
||||
//! The aggregation object is called in an iterative manner for each of the results obtained by applying partial evaluation functions.
|
||||
template< class EOT > class peoAggEvalFunc : public eoBF< EOT&, const typename EOT :: Fitness&, void > {
|
||||
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
0
trunk/paradiseo-peo/src/peoAggEvalFunc.h:
Normal file
0
trunk/paradiseo-peo/src/peoAggEvalFunc.h:
Normal file
273
trunk/paradiseo-peo/src/peoAsyncIslandMig.h
Normal file
273
trunk/paradiseo-peo/src/peoAsyncIslandMig.h
Normal file
|
|
@ -0,0 +1,273 @@
|
|||
// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
|
||||
|
||||
// "peoAsyncIslandMig.h"
|
||||
|
||||
// (c) OPAC Team, LIFL, August 2005
|
||||
|
||||
/* This library 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 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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 library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Contact: paradiseo-help@lists.gforge.inria.fr
|
||||
*/
|
||||
|
||||
#ifndef __peoAsyncIslandMig_h
|
||||
#define __peoAsyncIslandMig_h
|
||||
|
||||
|
||||
#include <queue>
|
||||
|
||||
#include <utils/eoUpdater.h>
|
||||
|
||||
#include <eoContinue.h>
|
||||
#include <eoSelect.h>
|
||||
#include <eoReplacement.h>
|
||||
#include <eoPop.h>
|
||||
|
||||
#include "core/topology.h"
|
||||
#include "core/cooperative.h"
|
||||
#include "core/eoPop_comm.h"
|
||||
#include "core/peo_debug.h"
|
||||
|
||||
|
||||
//! Class providing the basis for the asynchronous island migration model.
|
||||
|
||||
//! The peoAsyncIslandMig class offers the elementary basis for implementating an
|
||||
//! asynchronous island migration model - requires the specification of several basic
|
||||
//! parameters, i.e. continuation criterion, selection and replacement strategies,
|
||||
//! a topological model and the source and destination population for the migrating individuals.
|
||||
//! As opposed to the synchronous migration model, in the asynchronous migration approach, there is
|
||||
//! no synchronization step between islands after performing the emigration phase.
|
||||
//!
|
||||
//! The migration operator is called at the end of each generation of an evolutionary algorithms
|
||||
//! as a checkpoint object - the following code exposes the structure of a classic evolutionary algorithm:
|
||||
//!
|
||||
//! <table style="border:none; border-spacing:0px;text-align:left; vertical-align:top; font-size:8pt;" border="0">
|
||||
//! <tr><td><b>do</b> { </td> <td> </td></tr>
|
||||
//! <tr><td> select( population, offsprings ); </td> <td>// select the offsprings from the current population</td></tr>
|
||||
//! <tr><td> transform( offsprings ); </td> <td>// crossover and mutation operators are applied on the selected offsprings</td></tr>
|
||||
//! <tr><td> evaluate( offsprings ); </td> <td>// evaluation step of the resulting offspring</td></tr>
|
||||
//! <tr><td> replace( population, offsprings ); </td> <td>// replace the individuals in the current population whith individuals from the offspring population, according to a specified replacement strategy</td></tr>
|
||||
//! <tr><td>} <b>while</b> ( eaCheckpointContinue( population ) ); </td> <td>// checkpoint operators are applied on the current population, including the migration operator, if any specified </td></tr>
|
||||
//! </table>
|
||||
//!
|
||||
//! Constructing an asynchronous island migration model requires having defined (1) a topological migration model,
|
||||
//! (2) the control parameters of the migration process, (3) a checkpoint object associated with an evolutionary algorithm,
|
||||
//! and (4) an owner object must be set. The owner object must be derived from the <b>Runner</b> class (for example
|
||||
//! a peoEA object represents a possible owner).
|
||||
//! A simple example is offered bellow:
|
||||
//!
|
||||
//! <ol>
|
||||
//! <li> topological model to be followed when performing migrations: <br/>
|
||||
//! <br/>
|
||||
//! <table style="border:none; border-spacing:0px;text-align:left; vertical-align:top; font-size:8pt;" border="0">
|
||||
//! <tr><td>RingTopology migTopology; </td> <td>// a simple ring topological model - each island communicates with two other islands</td></tr>
|
||||
//! </table>
|
||||
//! </li>
|
||||
//!
|
||||
//! <li> the continuation criterion, selection and replacement strategy etc. are defined: <br/>
|
||||
//! <br/>
|
||||
//! <table style="border:none; border-spacing:0px; font-size:8pt;" border="0">
|
||||
//! <tr><td>eoPop< EOT > population( POP_SIZE, popInitializer ); </td> <td>// population of individuals to be used for the evolutionary algorithm</td></tr>
|
||||
//! <tr><td> </td> <td> </td></tr>
|
||||
//! <tr><td>eoPeriodicContinue< EOT > migCont( MIG_FREQ ); </td> <td>// migrations occur periodically at MIG_FREQ iterations</td></tr>
|
||||
//! <tr><td>eoRandomSelect< EOT > migSelectStrategy; </td> <td>// selection strategy - in this case a random selection is applied</td></tr>
|
||||
//! <tr><td>eoSelectNumber< EOT > migSelect( migSelectStrategy, MIG_SIZE ); </td> <td>// number of individuals to be selected using the specified strategy</td></tr>
|
||||
//! <tr><td>eoPlusReplacement< EOT > migReplace; </td> <td>// immigration strategy - the worse individuals in the destination population are replaced by the immigrant individuals</td></tr>
|
||||
//! <tr><td> </td> <td> </td></tr>
|
||||
//! <tr><td>peoAsyncIslandMig< EOT > asyncMigration(
|
||||
//! <br/> migCont, migSelect, migReplace, migTopology,
|
||||
//! <br/> population, population
|
||||
//! <br/> ); </td>
|
||||
//! <td>// asynchronous migration object - the emigrant individuals are selected from the same from population in which the immigrant individuals are being integrated </td></tr>
|
||||
//! </table>
|
||||
//! </li>
|
||||
//!
|
||||
//! <li> creation of a checkpoint object as part of the definition of an evolutionary algoritm (details of th EA not given as being out of scope): <br/>
|
||||
//! <br/>
|
||||
//! <table style="border:none; border-spacing:0px;text-align:left; vertical-align:top; font-size:8pt;" border="0">
|
||||
//! <tr><td>... </td> <td> </td></tr>
|
||||
//! <tr><td>eoGenContinue< EOT > eaCont( NUM_GEN ); </td> <td>// the evolutionary algorithm will stop after NUM_GEN generations</td></tr>
|
||||
//! <tr><td>eoCheckPoint< EOT > eaCheckpointContinue( eaCont ); </td> <td>// number of individuals to be selected using the specified strategy</td></tr>
|
||||
//! <tr><td>... </td> <td> </td></tr>
|
||||
//! <tr><td>eaCheckpointContinue.add( asyncMigration ); </td> <td>// adding the migration operator as checkpoint element</td></tr>
|
||||
//! <tr><td>... </td> <td> </td></tr>
|
||||
//! </table>
|
||||
//! </li>
|
||||
//!
|
||||
//! <li> definition of an owner evolutionary algorithm (an object inheriting the <b>Runner</b> class): <br/>
|
||||
//! <br/>
|
||||
//! <table style="border:none; border-spacing:0px;text-align:left; vertical-align:top; font-size:8pt;" border="0">
|
||||
//! <tr><td>peoEA< EOT > eaAlg( eaCheckpointContinue, eaPopEval, eaSelect, eaTransform, eaReplace); </td> <td>// evolutionary algorithm having as checkpoint the eaCheckpointContinue object defined above </td></tr>
|
||||
//! <tr><td>asyncMigration.setOwner( eaAlg ); </td> <td>// setting the evolutionary algorithm as owner of the migration object </td></tr>
|
||||
//! <tr><td>eaAlg( population ); </td> <td>// applying the evolutionary algorithm on a given population </td></tr>
|
||||
//! </table>
|
||||
//! </li>
|
||||
//! </ol>
|
||||
//!
|
||||
//! The source and the destination population for the migration object were specified as being the same, in step no. 2,
|
||||
//! as we are usually interested in selecting the emigrants and integrating the immigrant individuals from and in, respectively, one unique
|
||||
//! population, iteratively evolved by an evolutionary algorithm. There is no restriction in having two distinct populations
|
||||
//! as source and destination for the emigrant and immigrant individuals respectively.
|
||||
//!
|
||||
//! The above steps only create an asynchronous migration object associated to an evolutionary algorithm. The creation of several
|
||||
//! islands requires the reiteration of the steps 2 through 4 for creating distinct algorithms, with distinct populations and
|
||||
//! the associated distinctly parametrized migration objects. The interconnecting element is the underlying topology, defined at step 1
|
||||
//! (the same C++ migTopology object has to be passed as parameter for all the migration objects, in order to interconnect them).
|
||||
template< class EOT > class peoAsyncIslandMig : public Cooperative, public eoUpdater {
|
||||
|
||||
public:
|
||||
|
||||
//! Constructor for the peoAsyncIslandMig class; the characteristics of the migration model are defined
|
||||
//! through the specified parameters - out of the box objects provided in EO, etc., or custom, derived objects may be passed as parameters.
|
||||
//!
|
||||
//! @param eoContinue< EOT >& __cont - continuation criterion specifying whether the migration is performed or not;
|
||||
//! @param eoSelect< EOT >& __select - selection strategy to be applied for constructing a list of emigrant individuals out of the source population;
|
||||
//! @param eoReplacement< EOT >& __replace - replacement strategy used for integrating the immigrant individuals in the destination population;
|
||||
//! @param Topology& __topology - topological model to be followed when performing migrations;
|
||||
//! @param eoPop< EOT >& __source - source population from which the emigrant individuals are selected;
|
||||
//! @param eoPop< EOT >& __destination - destination population in which the immigrant population are integrated.
|
||||
peoAsyncIslandMig(
|
||||
eoContinue< EOT >& __cont,
|
||||
eoSelect< EOT >& __select,
|
||||
eoReplacement< EOT >& __replace,
|
||||
Topology& __topology,
|
||||
eoPop< EOT >& __source,
|
||||
eoPop< EOT >& __destination
|
||||
);
|
||||
|
||||
//! Function operator to be called as checkpoint for performing the migration step. The emigrant individuals are selected
|
||||
//! from the source population and sent to the next island (defined by the topology object) while the immigrant
|
||||
//! individuals are integrated in the destination population. There is no need to explicitly call the function - the
|
||||
//! wrapper checkpoint object (please refer to the above example) will perform the call when required.
|
||||
void operator()();
|
||||
|
||||
//! Auxiliary function dealing with sending the emigrant individuals. There is no need to explicitly call the function.
|
||||
void pack();
|
||||
//! Auxiliary function dealing with receiving immigrant individuals. There is no need to explicitly call the function.
|
||||
void unpack();
|
||||
|
||||
|
||||
private:
|
||||
|
||||
void emigrate();
|
||||
void immigrate();
|
||||
|
||||
|
||||
private:
|
||||
|
||||
eoContinue< EOT >& cont; // continuator
|
||||
eoSelect< EOT >& select; // the selection strategy
|
||||
eoReplacement< EOT >& replace; // the replacement strategy
|
||||
Topology& topology; // the neighboring topology
|
||||
|
||||
// source and destination populations
|
||||
eoPop< EOT >& source;
|
||||
eoPop< EOT >& destination;
|
||||
|
||||
// immigrants & emigrants in the queue
|
||||
std :: queue< eoPop< EOT > > imm;
|
||||
std :: queue< eoPop< EOT > > em;
|
||||
|
||||
std :: queue< Cooperative* > coop_em;
|
||||
};
|
||||
|
||||
|
||||
template< class EOT > peoAsyncIslandMig< EOT > :: peoAsyncIslandMig(
|
||||
|
||||
eoContinue< EOT >& __cont,
|
||||
eoSelect< EOT >& __select,
|
||||
eoReplacement< EOT >& __replace,
|
||||
Topology& __topology,
|
||||
eoPop< EOT >& __source,
|
||||
eoPop< EOT >& __destination
|
||||
|
||||
) : cont( __cont ), select( __select ), replace( __replace ), topology( __topology ), source( __source ), destination( __destination )
|
||||
{
|
||||
|
||||
__topology.add( *this );
|
||||
}
|
||||
|
||||
|
||||
template< class EOT > void peoAsyncIslandMig< EOT > :: pack()
|
||||
{
|
||||
|
||||
lock(); {
|
||||
|
||||
:: pack( coop_em.front()->getKey() );
|
||||
:: pack( em.front() );
|
||||
coop_em.pop();
|
||||
em.pop();
|
||||
}
|
||||
unlock();
|
||||
}
|
||||
|
||||
|
||||
template< class EOT > void peoAsyncIslandMig< EOT > :: unpack()
|
||||
{
|
||||
|
||||
lock(); {
|
||||
|
||||
eoPop< EOT > mig;
|
||||
:: unpack( mig );
|
||||
imm.push( mig );
|
||||
}
|
||||
unlock();
|
||||
}
|
||||
|
||||
|
||||
template< class EOT > void peoAsyncIslandMig< EOT > :: emigrate()
|
||||
{
|
||||
|
||||
std :: vector< Cooperative* >in, out;
|
||||
topology.setNeighbors( this, in, out );
|
||||
|
||||
for ( unsigned i = 0; i < out.size(); i++ ) {
|
||||
|
||||
eoPop< EOT > mig;
|
||||
select( source, mig );
|
||||
em.push( mig );
|
||||
coop_em.push( out[i] );
|
||||
send( out[i] );
|
||||
printDebugMessage( "sending some emigrants." );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
template< class EOT > void peoAsyncIslandMig< EOT > :: immigrate()
|
||||
{
|
||||
|
||||
lock(); {
|
||||
|
||||
while ( !imm.empty() ) {
|
||||
|
||||
replace( destination, imm.front() );
|
||||
imm.pop();
|
||||
printDebugMessage( "receiving some immigrants." );
|
||||
}
|
||||
}
|
||||
unlock();
|
||||
}
|
||||
|
||||
|
||||
template< class EOT > void peoAsyncIslandMig< EOT > :: operator()() {
|
||||
|
||||
if ( !cont( source ) ) {
|
||||
|
||||
emigrate(); // sending emigrants
|
||||
immigrate(); // receiving immigrants
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
0
trunk/paradiseo-peo/src/peoAsyncIslandMig.h:
Normal file
0
trunk/paradiseo-peo/src/peoAsyncIslandMig.h:
Normal file
160
trunk/paradiseo-peo/src/peoEA.h
Normal file
160
trunk/paradiseo-peo/src/peoEA.h
Normal file
|
|
@ -0,0 +1,160 @@
|
|||
// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
|
||||
|
||||
// "peoEA.h"
|
||||
|
||||
// (c) OPAC Team, LIFL, August 2005
|
||||
|
||||
/* This library 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 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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 library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Contact: paradiseo-help@lists.gforge.inria.fr
|
||||
*/
|
||||
|
||||
#ifndef __peoEA_h
|
||||
#define __peoEA_h
|
||||
|
||||
#include <eoContinue.h>
|
||||
#include <eoEvalFunc.h>
|
||||
#include <eoSelect.h>
|
||||
#include <eoPopEvalFunc.h>
|
||||
#include <eoReplacement.h>
|
||||
|
||||
#include "peoPopEval.h"
|
||||
#include "peoTransform.h"
|
||||
#include "core/runner.h"
|
||||
#include "core/peo_debug.h"
|
||||
|
||||
//! Class providing an elementary ParadisEO evolutionary algorithm.
|
||||
|
||||
//! The peoEA class offers an elementary evolutionary algorithm implementation. In addition, as compared
|
||||
//! with the algorithms provided by the EO framework, the peoEA class has the underlying necessary structure
|
||||
//! for including, for example, parallel evaluation and parallel transformation operators, migration operators
|
||||
//! etc. Although there is no restriction on using the algorithms provided by the EO framework, the drawback resides
|
||||
//! in the fact that the EO implementation is exclusively sequential and, in consequence, no parallelism is provided.
|
||||
//! A simple example for constructing a peoEA object:
|
||||
//!
|
||||
//! <table style="border:none; border-spacing:0px;text-align:left; vertical-align:top; font-size:8pt;" border="0">
|
||||
//! <tr><td>... </td> <td> </td></tr>
|
||||
//! <tr><td>eoPop< EOT > population( POP_SIZE, popInitializer ); </td> <td>// creation of a population with POP_SIZE individuals - the popInitializer is a functor to be called for each individual</td></tr>
|
||||
//! <tr><td> </td> <td> </td></tr>
|
||||
//! <tr><td>eoGenContinue< EOT > eaCont( NUM_GEN ); </td> <td>// number of generations for the evolutionary algorithm</td></tr>
|
||||
//! <tr><td>eoCheckPoint< EOT > eaCheckpointContinue( eaCont ); </td> <td>// checkpoint incorporating the continuation criterion - startpoint for adding other checkpoint objects</td></tr>
|
||||
//! <tr><td> </td> <td> </td></tr>
|
||||
//! <tr><td>peoSeqPopEval< EOT > eaPopEval( evalFunction ); </td> <td>// sequential evaluation functor wrapper - evalFunction represents the actual evaluation functor </td></tr>
|
||||
//! <tr><td> </td> <td> </td></tr>
|
||||
//! <tr><td>eoRankingSelect< EOT > selectionStrategy; </td> <td>// selection strategy for creating the offspring population - a simple ranking selection in this case </td></tr>
|
||||
//! <tr><td>eoSelectNumber< EOT > eaSelect( selectionStrategy, POP_SIZE ); </td> <td>// the number of individuals to be selected for creating the offspring population </td></tr>
|
||||
//! <tr><td>eoRankingSelect< EOT > selectionStrategy; </td> <td>// selection strategy for creating the offspring population - a simple ranking selection in this case </td></tr>
|
||||
//! <tr><td> </td> <td> </td></tr>
|
||||
//! <tr><td>eoSGATransform< EOT > transform( crossover, CROSS_RATE, mutation, MUT_RATE ); </td> <td>// transformation operator - crossover and mutation operators with their associated probabilities </td></tr>
|
||||
//! <tr><td>peoSeqTransform< EOT > eaTransform( transform ); </td> <td>// ParadisEO specific sequential operator - a parallel version may be specified in the same manner </td></tr>
|
||||
//! <tr><td> </td> <td> </td></tr>
|
||||
//! <tr><td>eoPlusReplacement< EOT > eaReplace; </td> <td>// replacement strategy - for integrating the offspring resulting individuals in the initial population </td></tr>
|
||||
//! <tr><td> </td> <td> </td></tr>
|
||||
//! <tr><td>peoEA< EOT > eaAlg( eaCheckpointContinue, eaPopEval, eaSelect, eaTransform, eaReplace ); </td> <td>// ParadisEO evolutionary algorithm integrating the above defined objects </td></tr>
|
||||
//! <tr><td>eaAlg( population ); </td> <td>// specifying the initial population for the algorithm </td></tr>
|
||||
//! <tr><td>... </td> <td> </td></tr>
|
||||
//! </table>
|
||||
template < class EOT > class peoEA : public Runner {
|
||||
|
||||
public:
|
||||
|
||||
//! Constructor for the evolutionary algorithm object - several basic parameters have to be specified,
|
||||
//! allowing for different levels of parallelism. Depending on the requirements, a sequential or a parallel
|
||||
//! evaluation operator may be specified or, in the same manner, a sequential or a parallel transformation
|
||||
//! operator may be given as parameter. Out of the box objects may be provided, from the EO package, for example,
|
||||
//! or custom defined ones may be specified, provided that they are derived from the correct base classes.
|
||||
//!
|
||||
//! @param eoContinue< EOT >& __cont - continuation criterion specifying whether the algorithm should continue or not;
|
||||
//! @param peoPopEval< EOT >& __pop_eval - evaluation operator; it allows the specification of parallel evaluation operators, aggregate evaluation functions, etc.;
|
||||
//! @param eoSelect< EOT >& __select - selection strategy to be applied for constructing a list of offspring individuals;
|
||||
//! @param peoTransform< EOT >& __trans - transformation operator, i.e. crossover and mutation; allows for sequential or parallel transform;
|
||||
//! @param eoReplacement< EOT >& __replace - replacement strategy for integrating the offspring individuals in the initial population;
|
||||
peoEA(
|
||||
eoContinue< EOT >& __cont,
|
||||
peoPopEval< EOT >& __pop_eval,
|
||||
eoSelect< EOT >& __select,
|
||||
peoTransform< EOT >& __trans,
|
||||
eoReplacement< EOT >& __replace
|
||||
);
|
||||
|
||||
//! Evolutionary algorithm function - a side effect of the fact that the class is derived from the <b>Runner</b> class,
|
||||
//! thus requiring the existence of a <i>run</i> function, the algorithm being executed on a distinct thread.
|
||||
void run();
|
||||
|
||||
//! Function operator for specifying the population to be associated with the algorithm.
|
||||
//!
|
||||
//! @param eoPop< EOT >& __pop - initial population of the algorithm, to be iteratively evolved;
|
||||
void operator()( eoPop< EOT >& __pop );
|
||||
|
||||
private:
|
||||
|
||||
|
||||
eoContinue< EOT >& cont;
|
||||
peoPopEval< EOT >& pop_eval;
|
||||
eoSelect< EOT >& select;
|
||||
peoTransform< EOT >& trans;
|
||||
eoReplacement< EOT >& replace;
|
||||
eoPop< EOT >* pop;
|
||||
};
|
||||
|
||||
|
||||
template < class EOT > peoEA< EOT > :: peoEA(
|
||||
|
||||
eoContinue< EOT >& __cont,
|
||||
peoPopEval< EOT >& __pop_eval,
|
||||
eoSelect< EOT >& __select,
|
||||
peoTransform< EOT >& __trans,
|
||||
eoReplacement< EOT >& __replace
|
||||
|
||||
) : cont( __cont ), pop_eval( __pop_eval ), select( __select ), trans( __trans ), replace( __replace )
|
||||
{
|
||||
|
||||
trans.setOwner( *this );
|
||||
pop_eval.setOwner( *this );
|
||||
}
|
||||
|
||||
|
||||
template< class EOT > void peoEA< EOT > :: operator ()( eoPop< EOT >& __pop ) {
|
||||
|
||||
pop = &__pop;
|
||||
}
|
||||
|
||||
|
||||
template< class EOT > void peoEA< EOT > :: run() {
|
||||
|
||||
printDebugMessage( "performing the first evaluation of the population." );
|
||||
pop_eval( *pop );
|
||||
|
||||
do {
|
||||
|
||||
eoPop< EOT > off;
|
||||
|
||||
printDebugMessage( "performing the selection step." );
|
||||
select( *pop, off );
|
||||
trans( off );
|
||||
|
||||
printDebugMessage( "performing the evaluation of the population." );
|
||||
pop_eval( off );
|
||||
|
||||
printDebugMessage( "performing the replacement of the population." );
|
||||
replace( *pop, off );
|
||||
|
||||
printDebugMessage( "deciding of the continuation." );
|
||||
|
||||
} while ( cont( *pop ) );
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
0
trunk/paradiseo-peo/src/peoEA.h:
Normal file
0
trunk/paradiseo-peo/src/peoEA.h:
Normal file
49
trunk/paradiseo-peo/src/peoNoAggEvalFunc.h
Normal file
49
trunk/paradiseo-peo/src/peoNoAggEvalFunc.h
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
|
||||
|
||||
// "peoNoAggEvalFunc.h"
|
||||
|
||||
// (c) OPAC Team, LIFL, August 2005
|
||||
|
||||
/* This library 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 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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 library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Contact: paradiseo-help@lists.gforge.inria.fr
|
||||
*/
|
||||
|
||||
#ifndef __peoNoAggEvalFunc_h
|
||||
#define __peoNoAggEvalFunc_h
|
||||
|
||||
#include "peoAggEvalFunc.h"
|
||||
|
||||
//! Class providing a simple interface for associating a fitness value to a specified individual.
|
||||
|
||||
//! The peoNoAggEvalFunc class does nothing more than an association between a fitness value and a specified individual.
|
||||
//! The class is provided as a mean of declaring that no aggregation is required for the evaluation function - the fitness
|
||||
//! value is explicitly specified.
|
||||
template< class EOT > class peoNoAggEvalFunc : public peoAggEvalFunc< EOT > {
|
||||
|
||||
public :
|
||||
|
||||
//! Operator which sets as fitness the <b>__fit</b> value for the <b>__sol</b> individual
|
||||
void operator()( EOT& __sol, const typename EOT :: Fitness& __fit );
|
||||
};
|
||||
|
||||
|
||||
template< class EOT > void peoNoAggEvalFunc< EOT > :: operator()( EOT& __sol, const typename EOT :: Fitness& __fit ) {
|
||||
|
||||
__sol.fitness( __fit );
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
0
trunk/paradiseo-peo/src/peoNoAggEvalFunc.h:
Normal file
0
trunk/paradiseo-peo/src/peoNoAggEvalFunc.h:
Normal file
240
trunk/paradiseo-peo/src/peoParaPopEval.h
Normal file
240
trunk/paradiseo-peo/src/peoParaPopEval.h
Normal file
|
|
@ -0,0 +1,240 @@
|
|||
// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
|
||||
|
||||
// "peoParaPopEval.h"
|
||||
|
||||
// (c) OPAC Team, LIFL, August 2005
|
||||
|
||||
/* This library 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 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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 library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Contact: paradiseo-help@lists.gforge.inria.fr
|
||||
*/
|
||||
|
||||
#ifndef __peoParaPopEval_h
|
||||
#define __peoParaPopEval_h
|
||||
|
||||
#include <queue>
|
||||
#include <eoEvalFunc.h>
|
||||
|
||||
#include "core/messaging.h"
|
||||
#include "core/peo_debug.h"
|
||||
#include "peoAggEvalFunc.h"
|
||||
#include "peoNoAggEvalFunc.h"
|
||||
|
||||
|
||||
//! Parallel evaluation functor wrapper.
|
||||
|
||||
//! The peoParaPopEval represents a wrapper for creating a functor capable of applying in parallel
|
||||
//! an EO-derived evaluation functor. The class offers the possibility of chosing between a single-function evaluation
|
||||
//! and an aggregate evaluation function, including several sub-evalution functions.
|
||||
template< class EOT > class peoParaPopEval : public peoPopEval< EOT > {
|
||||
|
||||
public:
|
||||
|
||||
using peoPopEval< EOT > :: requestResourceRequest;
|
||||
using peoPopEval< EOT > :: resume;
|
||||
using peoPopEval< EOT > :: stop;
|
||||
using peoPopEval< EOT > :: getOwner;
|
||||
|
||||
//! Constructor function - an EO-derived evaluation functor has to be specified; an internal reference
|
||||
//! is set towards the specified evaluation functor.
|
||||
//!
|
||||
//! @param eoEvalFunc< EOT >& __eval_func - EO-derived evaluation functor to be applied in parallel on each individual of a specified population
|
||||
peoParaPopEval( eoEvalFunc< EOT >& __eval_func );
|
||||
|
||||
//! Constructor function - a vector of EO-derived evaluation functors has to be specified as well as an aggregation function.
|
||||
//!
|
||||
//! @param const std :: vector< eoEvalFunc < EOT >* >& __funcs - vector of EO-derived partial evaluation functors;
|
||||
//! @param peoAggEvalFunc< EOT >& __merge_eval - aggregation functor for creating a fitness value out of the partial fitness values.
|
||||
peoParaPopEval( const std :: vector< eoEvalFunc < EOT >* >& __funcs, peoAggEvalFunc< EOT >& __merge_eval );
|
||||
|
||||
//! Operator for applying the evaluation functor (direct or aggregate) for each individual of the specified population.
|
||||
//!
|
||||
//! @param eoPop< EOT >& __pop - population to be evaluated by applying the evaluation functor specified in the constructor.
|
||||
void operator()( eoPop< EOT >& __pop );
|
||||
|
||||
//! Auxiliary function for transferring data between the process requesting an evaluation operation and the process that
|
||||
//! performs the actual evaluation phase. There is no need to explicitly call the function.
|
||||
void packData();
|
||||
|
||||
//! Auxiliary function for transferring data between the process requesting an evaluation operation and the process that
|
||||
//! performs the actual evaluation phase. There is no need to explicitly call the function.
|
||||
void unpackData();
|
||||
|
||||
//! Auxiliary function - it calls the specified evaluation functor(s). There is no need to explicitly call the function.
|
||||
void execute();
|
||||
|
||||
//! Auxiliary function for transferring data between the process requesting an evaluation operation and the process that
|
||||
//! performs the actual evaluation phase. There is no need to explicitly call the function.
|
||||
void packResult();
|
||||
|
||||
//! Auxiliary function for transferring data between the process requesting an evaluation operation and the process that
|
||||
//! performs the actual evaluation phase. There is no need to explicitly call the function.
|
||||
void unpackResult();
|
||||
|
||||
//! Auxiliary function for notifications between the process requesting an evaluation operation and the processes that
|
||||
//! performs the actual evaluation phase. There is no need to explicitly call the function.
|
||||
void notifySendingData();
|
||||
|
||||
//! Auxiliary function for notifications between the process requesting an evaluation operation and the processes that
|
||||
//! performs the actual evaluation phase. There is no need to explicitly call the function.
|
||||
void notifySendingAllResourceRequests();
|
||||
|
||||
private:
|
||||
|
||||
|
||||
const std :: vector< eoEvalFunc < EOT >* >& funcs;
|
||||
std :: vector< eoEvalFunc < EOT >* > one_func;
|
||||
|
||||
peoAggEvalFunc< EOT >& merge_eval;
|
||||
peoNoAggEvalFunc< EOT > no_merge_eval;
|
||||
|
||||
std :: queue< EOT* >tasks;
|
||||
|
||||
std :: map< EOT*, std :: pair< unsigned, unsigned > > progression;
|
||||
|
||||
unsigned num_func;
|
||||
|
||||
EOT sol;
|
||||
|
||||
EOT *ad_sol;
|
||||
|
||||
unsigned total;
|
||||
};
|
||||
|
||||
|
||||
template< class EOT > peoParaPopEval< EOT > :: peoParaPopEval( eoEvalFunc< EOT >& __eval_func ) :
|
||||
|
||||
funcs( one_func ), merge_eval( no_merge_eval )
|
||||
{
|
||||
|
||||
one_func.push_back( &__eval_func );
|
||||
}
|
||||
|
||||
|
||||
template< class EOT > peoParaPopEval< EOT > :: peoParaPopEval(
|
||||
|
||||
const std :: vector< eoEvalFunc< EOT >* >& __funcs,
|
||||
peoAggEvalFunc< EOT >& __merge_eval
|
||||
|
||||
) : funcs( __funcs ), merge_eval( __merge_eval )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
template< class EOT > void peoParaPopEval< EOT >::operator()( eoPop< EOT >& __pop ) {
|
||||
|
||||
for ( unsigned i = 0; i < __pop.size(); i++ ) {
|
||||
|
||||
__pop[ i ].fitness( typename EOT :: Fitness() );
|
||||
|
||||
progression[ &__pop[ i ] ].first = funcs.size() - 1;
|
||||
progression[ &__pop[ i ] ].second = funcs.size();
|
||||
|
||||
for ( unsigned j = 0; j < funcs.size(); j++ ) {
|
||||
/* Queuing the 'invalid' solution and its associated owner */
|
||||
tasks.push( &__pop[ i ] );
|
||||
}
|
||||
}
|
||||
|
||||
total = funcs.size() * __pop.size();
|
||||
requestResourceRequest( funcs.size() * __pop.size() );
|
||||
stop();
|
||||
}
|
||||
|
||||
|
||||
template< class EOT > void peoParaPopEval< EOT > :: packData() {
|
||||
|
||||
// printDebugMessage ("debut pakc data");
|
||||
pack( progression[ tasks.front() ].first-- );
|
||||
|
||||
/* Packing the contents :-) of the solution */
|
||||
pack( *tasks.front() );
|
||||
|
||||
/* Packing the addresses of both the solution and the owner */
|
||||
pack( tasks.front() );
|
||||
tasks.pop( );
|
||||
}
|
||||
|
||||
|
||||
template< class EOT > void peoParaPopEval< EOT > :: unpackData() {
|
||||
|
||||
unpack( num_func );
|
||||
/* Unpacking the solution */
|
||||
unpack( sol );
|
||||
/* Unpacking the @ of that one */
|
||||
unpack( ad_sol );
|
||||
}
|
||||
|
||||
|
||||
template< class EOT > void peoParaPopEval< EOT > :: execute() {
|
||||
|
||||
/* Computing the fitness of the solution */
|
||||
funcs[ num_func ]->operator()( sol );
|
||||
}
|
||||
|
||||
|
||||
template< class EOT > void peoParaPopEval< EOT > :: packResult() {
|
||||
|
||||
/* Packing the fitness of the solution */
|
||||
pack( sol.fitness() );
|
||||
/* Packing the @ of the individual */
|
||||
pack( ad_sol );
|
||||
}
|
||||
|
||||
|
||||
template< class EOT > void peoParaPopEval< EOT > :: unpackResult() {
|
||||
|
||||
typename EOT :: Fitness fit;
|
||||
|
||||
/* Unpacking the computed fitness */
|
||||
unpack( fit );
|
||||
|
||||
/* Unpacking the @ of the associated individual */
|
||||
unpack( ad_sol );
|
||||
|
||||
|
||||
/* Associating the fitness the local solution */
|
||||
merge_eval( *ad_sol, fit );
|
||||
|
||||
progression[ ad_sol ].second--;
|
||||
|
||||
/* Notifying the container of the termination of the evaluation */
|
||||
if ( !progression[ ad_sol ].second ) {
|
||||
|
||||
progression.erase( ad_sol );
|
||||
}
|
||||
|
||||
total--;
|
||||
if ( !total ) {
|
||||
|
||||
getOwner()->setActive();
|
||||
resume();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
template< class EOT > void peoParaPopEval< EOT > :: notifySendingData() {
|
||||
|
||||
}
|
||||
|
||||
|
||||
template< class EOT > void peoParaPopEval< EOT > :: notifySendingAllResourceRequests() {
|
||||
|
||||
getOwner()->setPassive();
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
0
trunk/paradiseo-peo/src/peoParaPopEval.h:
Normal file
0
trunk/paradiseo-peo/src/peoParaPopEval.h:
Normal file
170
trunk/paradiseo-peo/src/peoParaSGATransform.h
Normal file
170
trunk/paradiseo-peo/src/peoParaSGATransform.h
Normal file
|
|
@ -0,0 +1,170 @@
|
|||
// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
|
||||
|
||||
// "peoParaSGATransform.h"
|
||||
|
||||
//(c) OPAC Team, LIFL, August 2005
|
||||
|
||||
/* This library 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 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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 library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Contact: paradiseo-help@lists.gforge.inria.fr
|
||||
*/
|
||||
|
||||
#ifndef __peoParaSGATransform_h
|
||||
#define __peoParaSGATransform_h
|
||||
|
||||
#include "peoTransform.h"
|
||||
#include "core/thread.h"
|
||||
#include "core/messaging.h"
|
||||
#include "core/peo_debug.h"
|
||||
|
||||
|
||||
extern int getNodeRank();
|
||||
|
||||
|
||||
template< class EOT > class peoParaSGATransform : public peoTransform< EOT > {
|
||||
|
||||
public:
|
||||
|
||||
using peoTransform< EOT > :: requestResourceRequest;
|
||||
using peoTransform< EOT > :: resume;
|
||||
using peoTransform< EOT > :: stop;
|
||||
using peoTransform< EOT > :: getOwner;
|
||||
|
||||
peoParaSGATransform(
|
||||
|
||||
eoQuadOp< EOT >& __cross,
|
||||
double __cross_rate,
|
||||
eoMonOp< EOT >& __mut,
|
||||
double __mut_rate
|
||||
);
|
||||
|
||||
void operator()( eoPop< EOT >& __pop );
|
||||
|
||||
void packData();
|
||||
|
||||
void unpackData();
|
||||
|
||||
void execute();
|
||||
|
||||
void packResult();
|
||||
|
||||
void unpackResult();
|
||||
|
||||
void notifySendingData();
|
||||
void notifySendingAllResourceRequests();
|
||||
|
||||
private:
|
||||
|
||||
eoQuadOp< EOT >& cross;
|
||||
double cross_rate;
|
||||
|
||||
eoMonOp< EOT >& mut;
|
||||
double mut_rate;
|
||||
|
||||
unsigned idx;
|
||||
|
||||
eoPop< EOT >* pop;
|
||||
|
||||
EOT father, mother;
|
||||
|
||||
unsigned num_term;
|
||||
};
|
||||
|
||||
template< class EOT > peoParaSGATransform< EOT > :: peoParaSGATransform(
|
||||
|
||||
eoQuadOp< EOT >& __cross,
|
||||
double __cross_rate,
|
||||
eoMonOp < EOT >& __mut,
|
||||
double __mut_rate
|
||||
|
||||
) : cross( __cross ), cross_rate( __cross_rate ), mut( __mut ), mut_rate( __mut_rate )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
template< class EOT > void peoParaSGATransform< EOT > :: packData() {
|
||||
|
||||
pack( idx );
|
||||
:: pack( pop->operator[]( idx++ ) );
|
||||
:: pack( pop->operator[]( idx++ ) );
|
||||
}
|
||||
|
||||
|
||||
template< class EOT > void peoParaSGATransform< EOT > :: unpackData() {
|
||||
|
||||
unpack( idx );
|
||||
:: unpack( father );
|
||||
:: unpack( mother );
|
||||
}
|
||||
|
||||
|
||||
template< class EOT > void peoParaSGATransform< EOT > :: execute() {
|
||||
|
||||
if( rng.uniform() < cross_rate ) cross( mother, father );
|
||||
|
||||
if( rng.uniform() < mut_rate ) mut( mother );
|
||||
if( rng.uniform() < mut_rate ) mut( father );
|
||||
}
|
||||
|
||||
|
||||
template< class EOT > void peoParaSGATransform< EOT > :: packResult() {
|
||||
|
||||
pack( idx );
|
||||
:: pack( father );
|
||||
:: pack( mother );
|
||||
}
|
||||
|
||||
|
||||
template< class EOT > void peoParaSGATransform< EOT > :: unpackResult() {
|
||||
|
||||
unsigned sidx;
|
||||
|
||||
unpack( sidx );
|
||||
:: unpack( pop->operator[]( sidx++ ) );
|
||||
:: unpack( pop->operator[]( sidx ) );
|
||||
num_term += 2;
|
||||
|
||||
if( num_term == pop->size() ) {
|
||||
|
||||
getOwner()->setActive();
|
||||
resume();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
template< class EOT > void peoParaSGATransform< EOT > :: operator()( eoPop < EOT >& __pop ) {
|
||||
|
||||
printDebugMessage( "performing the parallel transformation step." );
|
||||
pop = &__pop;
|
||||
idx = 0;
|
||||
num_term = 0;
|
||||
requestResourceRequest( __pop.size() / 2 );
|
||||
stop();
|
||||
}
|
||||
|
||||
|
||||
template< class EOT > void peoParaSGATransform< EOT > :: notifySendingData() {
|
||||
|
||||
}
|
||||
|
||||
|
||||
template< class EOT > void peoParaSGATransform< EOT > :: notifySendingAllResourceRequests() {
|
||||
|
||||
getOwner()->setPassive();
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
0
trunk/paradiseo-peo/src/peoParaSGATransform.h:
Normal file
0
trunk/paradiseo-peo/src/peoParaSGATransform.h:
Normal file
43
trunk/paradiseo-peo/src/peoPopEval.h
Normal file
43
trunk/paradiseo-peo/src/peoPopEval.h
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
|
||||
|
||||
// "peoPopEval.h"
|
||||
|
||||
// (c) OPAC Team, LIFL, August 2005
|
||||
|
||||
/* This library 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 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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 library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Contact: paradiseo-help@lists.gforge.inria.fr
|
||||
*/
|
||||
|
||||
#ifndef __peoPopEval_h
|
||||
#define __peoPopEval_h
|
||||
|
||||
#include "core/service.h"
|
||||
|
||||
//! Interface for ParadisEO specific evaluation functors.
|
||||
|
||||
//! The <b>peoPopEval</b> class provides the interface for constructing ParadisEO specific evaluation functors.
|
||||
//! The derived classes may be used as wrappers for <b>EO</b>-derived evaluation functors. In order to have an example,
|
||||
//! please refer to the implementation of the <b>peoSeqPopEval</b> and <b>peoParaPopEval</b> classes.
|
||||
template< class EOT > class peoPopEval : public Service {
|
||||
|
||||
public:
|
||||
|
||||
//! Interface function providing the signature for constructing an evaluation functor.
|
||||
virtual void operator()( eoPop< EOT >& __pop ) = 0;
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
0
trunk/paradiseo-peo/src/peoPopEval.h:
Normal file
0
trunk/paradiseo-peo/src/peoPopEval.h:
Normal file
68
trunk/paradiseo-peo/src/peoSeqPopEval.h
Normal file
68
trunk/paradiseo-peo/src/peoSeqPopEval.h
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
|
||||
|
||||
// "peoSeqPopEval.h"
|
||||
|
||||
// (c) OPAC Team, LIFL, August 2005
|
||||
|
||||
/* This library 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 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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 library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Contact: paradiseo-help@lists.gforge.inria.fr
|
||||
*/
|
||||
|
||||
#ifndef __peoSeqPopEval_h
|
||||
#define __peoSeqPopEval_h
|
||||
|
||||
#include <eoEvalFunc.h>
|
||||
|
||||
#include "peoPopEval.h"
|
||||
|
||||
//! Sequential evaluation functor wrapper.
|
||||
|
||||
//! The peoSeqPopEval class acts only as a ParadisEO specific sequential evaluation functor - a wrapper for incorporating
|
||||
//! an <b>eoEvalFunc< EOT ></b>-derived class as evaluation functor. The specified EO evaluation object is applyied in an
|
||||
//! iterative manner to each individual of a specified population.
|
||||
template< class EOT > class peoSeqPopEval : public peoPopEval< EOT > {
|
||||
|
||||
public:
|
||||
|
||||
//! Constructor function - it only sets an internal reference to point to the specified evaluation object.
|
||||
//!
|
||||
//! @param eoEvalFunc< EOT >& __eval - evaluation object to be applied for each individual of a specified population
|
||||
peoSeqPopEval( eoEvalFunc< EOT >& __eval );
|
||||
|
||||
//! Operator for evaluating all the individuals of a given population - in a sequential iterative manner.
|
||||
//!
|
||||
//! @param eoPop< EOT >& __pop - population to be evaluated.
|
||||
void operator()( eoPop< EOT >& __pop );
|
||||
|
||||
private:
|
||||
|
||||
eoEvalFunc< EOT >& eval;
|
||||
};
|
||||
|
||||
|
||||
template< class EOT > peoSeqPopEval< EOT > :: peoSeqPopEval( eoEvalFunc< EOT >& __eval ) : eval( __eval ) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
template< class EOT > void peoSeqPopEval< EOT > :: operator()( eoPop< EOT >& __pop ) {
|
||||
|
||||
for ( unsigned i = 0; i < __pop.size(); i++ )
|
||||
eval( __pop[i] );
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
0
trunk/paradiseo-peo/src/peoSeqPopEval.h:
Normal file
0
trunk/paradiseo-peo/src/peoSeqPopEval.h:
Normal file
81
trunk/paradiseo-peo/src/peoSeqTransform.h
Normal file
81
trunk/paradiseo-peo/src/peoSeqTransform.h
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
|
||||
|
||||
// "peoSeqTransform.h"
|
||||
|
||||
// (c) OPAC Team, LIFL, August 2005
|
||||
|
||||
/* This library 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 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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 library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Contact: paradiseo-help@lists.gforge.inria.fr
|
||||
*/
|
||||
|
||||
#ifndef __peoSeqTransform_h
|
||||
#define __peoSeqTransform_h
|
||||
|
||||
#include "peoTransform.h"
|
||||
|
||||
|
||||
//! ParadisEO specific wrapper class offering the possibility of using EO derived transform operators.
|
||||
|
||||
//! The peoSeqTransform represent a wrapper for offering the possibility of using EO derived transform operators
|
||||
//! along with the ParadisEO evolutionary algorithms. A minimal set of interface functions is also provided for creating the
|
||||
//! link with the parallel architecture of the ParadisEO framework.
|
||||
template< class EOT > class peoSeqTransform : public peoTransform< EOT > {
|
||||
|
||||
public:
|
||||
|
||||
//! Constructor function - sets an internal reference towards the specified EO-derived transform object.
|
||||
//!
|
||||
//! @param eoTransform< EOT >& __trans - EO-derived transform object including crossover and mutation operators.
|
||||
peoSeqTransform( eoTransform< EOT >& __trans );
|
||||
|
||||
//! Operator for applying the specified transform operators on each individual of the given population.
|
||||
//!
|
||||
//! @param eoPop< EOT >& __pop - population to be transformed by applying the crossover and mutation operators.
|
||||
void operator()( eoPop< EOT >& __pop );
|
||||
|
||||
//! Interface function for providing a link with the parallel architecture of the ParadisEO framework.
|
||||
virtual void packData() { }
|
||||
|
||||
//! Interface function for providing a link with the parallel architecture of the ParadisEO framework.
|
||||
virtual void unpackData() { }
|
||||
|
||||
//! Interface function for providing a link with the parallel architecture of the ParadisEO framework.
|
||||
virtual void execute() { }
|
||||
|
||||
//! Interface function for providing a link with the parallel architecture of the ParadisEO framework.
|
||||
virtual void packResult() { }
|
||||
|
||||
//! Interface function for providing a link with the parallel architecture of the ParadisEO framework.
|
||||
virtual void unpackResult() { }
|
||||
|
||||
private:
|
||||
|
||||
eoTransform< EOT >& trans;
|
||||
};
|
||||
|
||||
|
||||
template< class EOT > peoSeqTransform< EOT > :: peoSeqTransform( eoTransform< EOT >& __trans ) : trans( __trans ) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
template< class EOT > void peoSeqTransform< EOT > :: operator()( eoPop< EOT >& __pop ) {
|
||||
|
||||
trans( __pop );
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
0
trunk/paradiseo-peo/src/peoSeqTransform.h:
Normal file
0
trunk/paradiseo-peo/src/peoSeqTransform.h:
Normal file
301
trunk/paradiseo-peo/src/peoSyncIslandMig.h
Normal file
301
trunk/paradiseo-peo/src/peoSyncIslandMig.h
Normal file
|
|
@ -0,0 +1,301 @@
|
|||
// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
|
||||
|
||||
// "peoSyncIslandMig.h"
|
||||
|
||||
// (c) OPAC Team, LIFL, August 2005
|
||||
|
||||
/* This library 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 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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 library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Contact: paradiseo-help@lists.gforge.inria.fr
|
||||
*/
|
||||
|
||||
#ifndef __peoSyncIslandMig_h
|
||||
#define __peoSyncIslandMig_h
|
||||
|
||||
|
||||
#include <queue>
|
||||
#include <cassert>
|
||||
|
||||
#include <eoPeriodicContinue.h>
|
||||
|
||||
#include <utils/eoUpdater.h>
|
||||
|
||||
#include <eoContinue.h>
|
||||
#include <eoSelect.h>
|
||||
#include <eoReplacement.h>
|
||||
#include <eoPop.h>
|
||||
|
||||
#include "core/topology.h"
|
||||
#include "core/thread.h"
|
||||
#include "core/eoPop_comm.h"
|
||||
#include "core/peo_debug.h"
|
||||
|
||||
|
||||
//! Class providing the basis for the synchronous island migration model.
|
||||
|
||||
//! The peoSyncIslandMig class offers the elementary basis for implementating a
|
||||
//! synchronous island migration model - requires the specification of several basic
|
||||
//! parameters, i.e. frequency of the migrations, selection and replacement strategies,
|
||||
//! a topological model and the source and destination population for the migrating individuals.
|
||||
//! The main difference as opposed to the asynchronous migration model is the synchronization step
|
||||
//! performed after selecting and sending the emigrant individuals.
|
||||
//!
|
||||
//! The migration operator is called at the end of each generation of an evolutionary algorithms
|
||||
//! as a checkpoint object - the following code exposes the structure of a classic evolutionary algorithm:
|
||||
//!
|
||||
//! <table style="border:none; border-spacing:0px;text-align:left; vertical-align:top; font-size:8pt;" border="0">
|
||||
//! <tr><td><b>do</b> { </td> <td> </td></tr>
|
||||
//! <tr><td> select( population, offsprings ); </td> <td>// select the offsprings from the current population</td></tr>
|
||||
//! <tr><td> transform( offsprings ); </td> <td>// crossover and mutation operators are applied on the selected offsprings</td></tr>
|
||||
//! <tr><td> evaluate( offsprings ); </td> <td>// evaluation step of the resulting offspring</td></tr>
|
||||
//! <tr><td> replace( population, offsprings ); </td> <td>// replace the individuals in the current population whith individuals from the offspring population, according to a specified replacement strategy</td></tr>
|
||||
//! <tr><td>} <b>while</b> ( eaCheckpointContinue( population ) ); </td> <td>// checkpoint operators are applied on the current population, including the migration operator, if any specified </td></tr>
|
||||
//! </table>
|
||||
//!
|
||||
//! Constructing a synchronous island migration model requires having defined (1) a topological migration model,
|
||||
//! (2) the control parameters of the migration process, (3) a checkpoint object associated with an evolutionary algorithm,
|
||||
//! and (4) an owner object must be set. The owner object must be derived from the <b>Runner</b> class (for example
|
||||
//! a peoEA object represents a possible owner).
|
||||
//! A simple example is offered bellow:
|
||||
//!
|
||||
//! <ol>
|
||||
//! <li> topological model to be followed when performing migrations: <br/>
|
||||
//! <br/>
|
||||
//! <table style="border:none; border-spacing:0px;text-align:left; vertical-align:top; font-size:8pt;" border="0">
|
||||
//! <tr><td>RingTopology migTopology; </td> <td>// a simple ring topological model - each island communicates with two other islands</td></tr>
|
||||
//! </table>
|
||||
//! </li>
|
||||
//!
|
||||
//! <li> the continuation criterion, selection and replacement strategy etc. are defined: <br/>
|
||||
//! <br/>
|
||||
//! <table style="border:none; border-spacing:0px; font-size:8pt;" border="0">
|
||||
//! <tr><td>eoPop< EOT > population( POP_SIZE, popInitializer ); </td> <td>// population of individuals to be used for the evolutionary algorithm</td></tr>
|
||||
//! <tr><td> </td> <td> </td></tr>
|
||||
//! <tr><td>eoRandomSelect< EOT > migSelectStrategy; </td> <td>// selection strategy - in this case a random selection is applied</td></tr>
|
||||
//! <tr><td>eoSelectNumber< EOT > migSelect( migSelectStrategy, MIG_SIZE ); </td> <td>// number of individuals to be selected using the specified strategy</td></tr>
|
||||
//! <tr><td>eoPlusReplacement< EOT > migReplace; </td> <td>// immigration strategy - the worse individuals in the destination population are replaced by the immigrant individuals</td></tr>
|
||||
//! <tr><td> </td> <td> </td></tr>
|
||||
//! <tr><td>peoSyncIslandMig< EOT > syncMigration(
|
||||
//! <br/> MIG_FREQ, migSelect, migReplace, migTopology,
|
||||
//! <br/> population, population
|
||||
//! <br/> ); </td>
|
||||
//! <td>// synchronous migration object - the emigrant individuals are selected from the same from population in which the immigrant individuals are being integrated </td></tr>
|
||||
//! </table>
|
||||
//! </li>
|
||||
//!
|
||||
//! <li> creation of a checkpoint object as part of the definition of an evolutionary algoritm (details of th EA not given as being out of scope): <br/>
|
||||
//! <br/>
|
||||
//! <table style="border:none; border-spacing:0px;text-align:left; vertical-align:top; font-size:8pt;" border="0">
|
||||
//! <tr><td>... </td> <td> </td></tr>
|
||||
//! <tr><td>eoGenContinue< EOT > eaCont( NUM_GEN ); </td> <td>// the evolutionary algorithm will stop after NUM_GEN generations</td></tr>
|
||||
//! <tr><td>eoCheckPoint< EOT > eaCheckpointContinue( eaCont ); </td> <td>// number of individuals to be selected using the specified strategy</td></tr>
|
||||
//! <tr><td>... </td> <td> </td></tr>
|
||||
//! <tr><td>eaCheckpointContinue.add( syncMigration ); </td> <td>// adding the migration operator as checkpoint element</td></tr>
|
||||
//! <tr><td>... </td> <td> </td></tr>
|
||||
//! </table>
|
||||
//! </li>
|
||||
//!
|
||||
//! <li> definition of an owner evolutionary algorithm (an object inheriting the <b>Runner</b> class): <br/>
|
||||
//! <br/>
|
||||
//! <table style="border:none; border-spacing:0px;text-align:left; vertical-align:top; font-size:8pt;" border="0">
|
||||
//! <tr><td>peoEA< EOT > eaAlg( eaCheckpointContinue, eaPopEval, eaSelect, eaTransform, eaReplace); </td> <td>// evolutionary algorithm having as checkpoint the eaCheckpointContinue object defined above </td></tr>
|
||||
//! <tr><td>syncMigration.setOwner( eaAlg ); </td> <td>// setting the evolutionary algorithm as owner of the migration object </td></tr>
|
||||
//! <tr><td>eaAlg( population ); </td> <td>// applying the evolutionary algorithm on a given population </td></tr>
|
||||
//! </table>
|
||||
//! </li>
|
||||
//! </ol>
|
||||
//!
|
||||
//! The source and the destination population for the migration object were specified as being the same, in step no. 2,
|
||||
//! as we are usually interested in selecting the emigrants and integrating the immigrant individuals from and in, respectively, one unique
|
||||
//! population, iteratively evolved by an evolutionary algorithm. There is no restriction in having two distinct populations
|
||||
//! as source and destination for the emigrant and immigrant individuals respectively.
|
||||
//!
|
||||
//! The above steps only create a synchronous migration object associated to an evolutionary algorithm. The creation of several
|
||||
//! islands requires the reiteration of the steps 2 through 4 for creating distinct algorithms, with distinct populations and
|
||||
//! the associated distinctly parametrized migration objects. The interconnecting element is the underlying topology, defined at step 1
|
||||
//! (the same C++ migTopology object has to be passed as parameter for all the migration objects, in order to interconnect them).
|
||||
template< class EOT > class peoSyncIslandMig : public Cooperative, public eoUpdater {
|
||||
|
||||
public:
|
||||
|
||||
//! Constructor for the peoSyncIslandMig class; the characteristics of the migration model are defined
|
||||
//! through the specified parameters - out of the box objects provided in EO, etc., or custom, derived objects may be passed as parameters.
|
||||
//!
|
||||
//! @param unsigned __frequency - frequency of the migrations - the migrations occur periodically;
|
||||
//! @param eoSelect< EOT >& __select - selection strategy to be applied for constructing a list of emigrant individuals out of the source population;
|
||||
//! @param eoReplacement< EOT >& __replace - replacement strategy used for integrating the immigrant individuals in the destination population;
|
||||
//! @param Topology& __topology - topological model to be followed when performing migrations;
|
||||
//! @param eoPop< EOT >& __source - source population from which the emigrant individuals are selected;
|
||||
//! @param eoPop< EOT >& __destination - destination population in which the immigrant population are integrated.
|
||||
peoSyncIslandMig(
|
||||
unsigned __frequency,
|
||||
eoSelect< EOT >& __select,
|
||||
eoReplacement< EOT >& __replace,
|
||||
Topology& __topology,
|
||||
eoPop< EOT >& __source,
|
||||
eoPop< EOT >& __destination
|
||||
);
|
||||
|
||||
//! Function operator to be called as checkpoint for performing the migration step. The emigrant individuals are selected
|
||||
//! from the source population and sent to the next island (defined by the topology object) while the immigrant
|
||||
//! individuals are integrated in the destination population. There is no need to explicitly call the function - the
|
||||
//! wrapper checkpoint object (please refer to the above example) will perform the call when required.
|
||||
void operator()();
|
||||
|
||||
//! Auxiliary function dealing with sending the emigrant individuals. There is no need to explicitly call the function.
|
||||
void pack();
|
||||
//! Auxiliary function dealing with receiving immigrant individuals. There is no need to explicitly call the function.
|
||||
void unpack();
|
||||
|
||||
//! Auxiliary function dealing with migration notifications. There is no need to explicitly call the function.
|
||||
void notifySending();
|
||||
|
||||
|
||||
private:
|
||||
|
||||
void emigrate();
|
||||
void immigrate();
|
||||
|
||||
|
||||
private:
|
||||
|
||||
eoPeriodicContinue< EOT > cont;
|
||||
eoSelect< EOT >& select; // selection strategy
|
||||
eoReplacement< EOT >& replace; // replacement strategy
|
||||
Topology& topology; // neighboring topology
|
||||
|
||||
// source and target populations
|
||||
eoPop< EOT >& source;
|
||||
eoPop< EOT >& destination;
|
||||
|
||||
// immigrants & emigrants in the queue
|
||||
std :: queue< eoPop< EOT > > imm;
|
||||
std :: queue< eoPop< EOT > > em;
|
||||
|
||||
std :: queue< Cooperative* > coop_em;
|
||||
|
||||
sem_t sync;
|
||||
};
|
||||
|
||||
|
||||
template< class EOT > peoSyncIslandMig< EOT > :: peoSyncIslandMig(
|
||||
|
||||
unsigned __frequency,
|
||||
eoSelect< EOT >& __select,
|
||||
eoReplacement< EOT >& __replace,
|
||||
Topology& __topology,
|
||||
eoPop< EOT >& __source,
|
||||
eoPop< EOT >& __destination
|
||||
|
||||
) : cont( __frequency ), select( __select ), replace( __replace ), topology( __topology ), source( __source ), destination( __destination )
|
||||
{
|
||||
|
||||
__topology.add( *this );
|
||||
sem_init( &sync, 0, 0 );
|
||||
}
|
||||
|
||||
|
||||
template< class EOT > void peoSyncIslandMig< EOT > :: pack() {
|
||||
|
||||
lock(); {
|
||||
|
||||
:: pack( coop_em.front()->getKey() );
|
||||
:: pack( em.front() );
|
||||
coop_em.pop();
|
||||
em.pop();
|
||||
}
|
||||
unlock();
|
||||
}
|
||||
|
||||
|
||||
template< class EOT > void peoSyncIslandMig< EOT > :: unpack() {
|
||||
|
||||
lock(); {
|
||||
|
||||
eoPop< EOT > mig;
|
||||
:: unpack( mig );
|
||||
imm.push( mig );
|
||||
}
|
||||
unlock();
|
||||
|
||||
sem_post( &sync );
|
||||
}
|
||||
|
||||
|
||||
template< class EOT > void peoSyncIslandMig< EOT > :: emigrate() {
|
||||
|
||||
std :: vector< Cooperative* > in, out;
|
||||
topology.setNeighbors( this, in, out );
|
||||
|
||||
for ( unsigned i = 0; i < out.size(); i ++ ) {
|
||||
|
||||
eoPop< EOT > mig;
|
||||
select( source, mig );
|
||||
em.push( mig );
|
||||
coop_em.push( out[ i ] );
|
||||
send( out[ i ] );
|
||||
printDebugMessage( "sending some emigrants." );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
template< class EOT > void peoSyncIslandMig< EOT > :: immigrate() {
|
||||
|
||||
lock(); {
|
||||
|
||||
assert( imm.size() );
|
||||
replace( destination, imm.front() ) ;
|
||||
imm.pop();
|
||||
printDebugMessage( "receiving some immigrants." );
|
||||
}
|
||||
unlock();
|
||||
}
|
||||
|
||||
|
||||
template< class EOT > void peoSyncIslandMig< EOT > :: operator()() {
|
||||
|
||||
if ( !cont( source ) ) {
|
||||
|
||||
// sending emigrants
|
||||
emigrate();
|
||||
stop();
|
||||
|
||||
// synchronizing
|
||||
sem_wait( &sync );
|
||||
getOwner()->setActive();
|
||||
|
||||
// receiving immigrants
|
||||
immigrate();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
template< class EOT > void peoSyncIslandMig< EOT > :: notifySending() {
|
||||
|
||||
lock(); {
|
||||
|
||||
if ( imm.empty() ) {
|
||||
|
||||
printDebugMessage( "entering pasive mode\n" );
|
||||
getOwner()->setPassive();
|
||||
}
|
||||
}
|
||||
unlock();
|
||||
|
||||
resume();
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
0
trunk/paradiseo-peo/src/peoSyncIslandMig.h:
Normal file
0
trunk/paradiseo-peo/src/peoSyncIslandMig.h:
Normal file
198
trunk/paradiseo-peo/src/peoSyncMultiStart.h
Normal file
198
trunk/paradiseo-peo/src/peoSyncMultiStart.h
Normal file
|
|
@ -0,0 +1,198 @@
|
|||
// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
|
||||
|
||||
// "peoSyncMultiStart.h"
|
||||
|
||||
// (c) OPAC Team, LIFL, August 2005
|
||||
|
||||
/* This library 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 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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 library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Contact: paradiseo-help@lists.gforge.inria.fr
|
||||
*/
|
||||
|
||||
#ifndef __peoSyncMultiStart_h
|
||||
#define __peoSyncMultiStart_h
|
||||
|
||||
#include <utils/eoUpdater.h>
|
||||
#include <moAlgo.h>
|
||||
|
||||
#include <eoSelect.h>
|
||||
#include <eoReplacement.h>
|
||||
#include <eoContinue.h>
|
||||
|
||||
#include "core/service.h"
|
||||
#include "core/messaging.h"
|
||||
#include "core/peo_debug.h"
|
||||
|
||||
|
||||
extern int getNodeRank();
|
||||
|
||||
|
||||
//! Class providing the basis for the synchronous multi-start model.
|
||||
|
||||
//! The peoSyncMultiStart class provides the basis for implementing the synchronous multi-start model,
|
||||
//! for launching several solution-based algorithms in parallel on a specified initial population. As a simple
|
||||
//! example, several hill climbing algorithms may be synchronously launched on the specified population, each
|
||||
//! algorithm acting upon one individual only, the final result being integrated back in the population. A
|
||||
//! peoSyncMultiStart object can be specified as checkpoint object for a classic ParadisEO evolutionary algorithm
|
||||
//! thus allowing for simple hybridization schemes which combine the evolutionary approach with a local search approach,
|
||||
//! for example, executed at the end of each generation.
|
||||
template< class EOT > class peoSyncMultiStart : public Service, public eoUpdater {
|
||||
|
||||
public:
|
||||
|
||||
//! Constructor function - several simple parameters are required for defining the characteristics of the multi-start model.
|
||||
//!
|
||||
//! @param eoContinue< EOT >& __cont - defined for including further functionality - no semantics associated at this time;
|
||||
//! @param eoSelect< EOT >& __select - selection strategy for obtaining a subset of the initial population on which to apply the specified algorithm;
|
||||
//! @param eoReplacement< EOT >& __replace - replacement strategy for integrating the resulting individuals in the initial population;
|
||||
//! @param moAlgo< EOT >& __ls - algorithm to be applied on each of the selected individuals - a <b>moAlgo< EOT ></b>-derived object must be specified;
|
||||
//! @param eoPop< EOT >& __pop - the initial population from which the individuals are selected for applying the specified algorithm.
|
||||
peoSyncMultiStart(
|
||||
|
||||
eoContinue< EOT >& __cont,
|
||||
eoSelect< EOT >& __select,
|
||||
eoReplacement< EOT >& __replace,
|
||||
moAlgo< EOT >& __ls,
|
||||
eoPop< EOT >& __pop
|
||||
);
|
||||
|
||||
//! Operator which synchronously executes the specified algorithm on the individuals selected from the initial population.
|
||||
//! There is no need to explicitly call the operator - automatically called as checkpoint operator.
|
||||
void operator()();
|
||||
|
||||
//! Auxiliary function for transferring data between the process requesting the synchronous execution of the specified
|
||||
//! algorithm and the process which actually executes the algorithm. There is no need to explicitly call the function.
|
||||
void packData();
|
||||
|
||||
//! Auxiliary function for transferring data between the process requesting the synchronous execution of the specified
|
||||
//! algorithm and the process which actually executes the algorithm. There is no need to explicitly call the function.
|
||||
void unpackData();
|
||||
|
||||
//! Auxiliary function for actually executing the specified algorithm on one assigned individual. There is no need to
|
||||
//! explicitly call the function.
|
||||
void execute();
|
||||
|
||||
//! Auxiliary function for transferring data between the process requesting the synchronous execution of the specified
|
||||
//! algorithm and the process which actually executes the algorithm. There is no need to explicitly call the function.
|
||||
void packResult();
|
||||
|
||||
//! Auxiliary function for transferring data between the process requesting the synchronous execution of the specified
|
||||
//! algorithm and the process which actually executes the algorithm. There is no need to explicitly call the function.
|
||||
void unpackResult();
|
||||
|
||||
//! Auxiliary function for notifications between the process requesting the synchronous multi-start execution
|
||||
//! and the processes that performs the actual execution phase. There is no need to explicitly call the function.
|
||||
void notifySendingData();
|
||||
|
||||
//! Auxiliary function for notifications between the process requesting the synchronous multi-start execution
|
||||
//! and the processes that performs the actual execution phase. There is no need to explicitly call the function.
|
||||
void notifySendingAllResourceRequests();
|
||||
|
||||
private:
|
||||
|
||||
eoContinue< EOT >& cont;
|
||||
eoSelect< EOT >& select;
|
||||
eoReplacement< EOT >& replace;
|
||||
|
||||
moAlgo< EOT >& ls;
|
||||
|
||||
eoPop< EOT >& pop;
|
||||
eoPop< EOT > sel;
|
||||
eoPop< EOT > impr_sel;
|
||||
|
||||
EOT sol;
|
||||
unsigned idx;
|
||||
unsigned num_term;
|
||||
};
|
||||
|
||||
|
||||
template< class EOT > peoSyncMultiStart< EOT > :: peoSyncMultiStart(
|
||||
|
||||
eoContinue < EOT >& __cont,
|
||||
eoSelect< EOT >& __select,
|
||||
eoReplacement< EOT >& __replace,
|
||||
moAlgo < EOT >& __ls,
|
||||
eoPop< EOT >& __pop
|
||||
|
||||
) : cont( __cont ), select( __select ), replace( __replace ), ls( __ls ), pop( __pop )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
template< class EOT > void peoSyncMultiStart< EOT > :: packData() {
|
||||
|
||||
:: pack( sel[ idx++ ] );
|
||||
}
|
||||
|
||||
|
||||
template< class EOT > void peoSyncMultiStart< EOT > :: unpackData() {
|
||||
|
||||
unpack( sol );
|
||||
}
|
||||
|
||||
|
||||
template< class EOT > void peoSyncMultiStart< EOT > :: execute() {
|
||||
|
||||
ls( sol );
|
||||
}
|
||||
|
||||
|
||||
template< class EOT > void peoSyncMultiStart< EOT > :: packResult() {
|
||||
|
||||
pack( sol );
|
||||
}
|
||||
|
||||
|
||||
template< class EOT > void peoSyncMultiStart< EOT > :: unpackResult() {
|
||||
|
||||
unpack( sol );
|
||||
impr_sel.push_back( sol );
|
||||
num_term++;
|
||||
|
||||
if ( num_term == sel.size() ) {
|
||||
|
||||
getOwner()->setActive();
|
||||
replace( pop, impr_sel );
|
||||
|
||||
printDebugMessage( "replacing the improved individuals in the population." );
|
||||
resume();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
template< class EOT > void peoSyncMultiStart< EOT > :: operator()() {
|
||||
|
||||
printDebugMessage( "performing the parallel multi-start hybridization." );
|
||||
select( pop, sel );
|
||||
impr_sel.clear();
|
||||
idx = num_term = 0;
|
||||
requestResourceRequest( sel.size() );
|
||||
stop();
|
||||
}
|
||||
|
||||
|
||||
template< class EOT > void peoSyncMultiStart< EOT > :: notifySendingData() {
|
||||
|
||||
}
|
||||
|
||||
|
||||
template< class EOT > void peoSyncMultiStart< EOT > :: notifySendingAllResourceRequests() {
|
||||
|
||||
getOwner()->setPassive();
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
0
trunk/paradiseo-peo/src/peoSyncMultiStart.h:
Normal file
0
trunk/paradiseo-peo/src/peoSyncMultiStart.h:
Normal file
40
trunk/paradiseo-peo/src/peoTransform.h
Normal file
40
trunk/paradiseo-peo/src/peoTransform.h
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
|
||||
|
||||
// "peoTransform.h"
|
||||
|
||||
// (c) OPAC Team, LIFL, August 2005
|
||||
|
||||
/* This library 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 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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 library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Contact: paradiseo-help@lists.gforge.inria.fr
|
||||
*/
|
||||
|
||||
#ifndef __peoTransform_h
|
||||
#define __peoTransform_h
|
||||
|
||||
#include <eoTransform.h>
|
||||
|
||||
#include "core/service.h"
|
||||
|
||||
//! Interface class for constructing more complex transformation operators.
|
||||
|
||||
//! The peoTransform class acts only as an interface for creating transform operators - for an example
|
||||
//! please refer to the <b>peoSeqTransform</b> and the <b>peoParaSGATransform</b> classes.
|
||||
template< class EOT > class peoTransform : public Service, public eoTransform< EOT > {
|
||||
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
0
trunk/paradiseo-peo/src/peoTransform.h:
Normal file
0
trunk/paradiseo-peo/src/peoTransform.h:
Normal file
1
trunk/paradiseo-peo/src/rmc/Makefile.am
Executable file
1
trunk/paradiseo-peo/src/rmc/Makefile.am
Executable file
|
|
@ -0,0 +1 @@
|
|||
SUBDIRS= mpi
|
||||
445
trunk/paradiseo-peo/src/rmc/Makefile.in
Normal file
445
trunk/paradiseo-peo/src/rmc/Makefile.in
Normal file
|
|
@ -0,0 +1,445 @@
|
|||
# Makefile.in generated by automake 1.9.6 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
VPATH = @srcdir@
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
top_builddir = ../..
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
INSTALL = @INSTALL@
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
subdir = src/rmc
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
|
||||
$(top_srcdir)/configure.in
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||
CONFIG_CLEAN_FILES =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
|
||||
html-recursive info-recursive install-data-recursive \
|
||||
install-exec-recursive install-info-recursive \
|
||||
install-recursive installcheck-recursive installdirs-recursive \
|
||||
pdf-recursive ps-recursive uninstall-info-recursive \
|
||||
uninstall-recursive
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DIST_SUBDIRS = $(SUBDIRS)
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMDEP_FALSE = @AMDEP_FALSE@
|
||||
AMDEP_TRUE = @AMDEP_TRUE@
|
||||
AMTAR = @AMTAR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CXX = @CXX@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EO_DIR = @EO_DIR@
|
||||
EXEEXT = @EXEEXT@
|
||||
GREP = @GREP@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MOEO_DIR = @MOEO_DIR@
|
||||
MO_DIR = @MO_DIR@
|
||||
OBJEXT = @OBJEXT@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
RANLIB = @RANLIB@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
VERSION = @VERSION@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_CXX = @ac_ct_CXX@
|
||||
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
|
||||
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
|
||||
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
|
||||
am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build_alias = @build_alias@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host_alias = @host_alias@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
SUBDIRS = mpi
|
||||
all: all-recursive
|
||||
|
||||
.SUFFIXES:
|
||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
||||
&& exit 0; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/rmc/Makefile'; \
|
||||
cd $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu src/rmc/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
uninstall-info-am:
|
||||
|
||||
# This directory's subdirectories are mostly independent; you can cd
|
||||
# into them and run `make' without going through this Makefile.
|
||||
# To change the values of `make' variables: instead of editing Makefiles,
|
||||
# (1) if the variable is set in `config.status', edit `config.status'
|
||||
# (which will cause the Makefiles to be regenerated when you run `make');
|
||||
# (2) otherwise, pass the desired values on the `make' command line.
|
||||
$(RECURSIVE_TARGETS):
|
||||
@failcom='exit 1'; \
|
||||
for f in x $$MAKEFLAGS; do \
|
||||
case $$f in \
|
||||
*=* | --[!k]*);; \
|
||||
*k*) failcom='fail=yes';; \
|
||||
esac; \
|
||||
done; \
|
||||
dot_seen=no; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
dot_seen=yes; \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| eval $$failcom; \
|
||||
done; \
|
||||
if test "$$dot_seen" = "no"; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
||||
fi; test -z "$$fail"
|
||||
|
||||
mostlyclean-recursive clean-recursive distclean-recursive \
|
||||
maintainer-clean-recursive:
|
||||
@failcom='exit 1'; \
|
||||
for f in x $$MAKEFLAGS; do \
|
||||
case $$f in \
|
||||
*=* | --[!k]*);; \
|
||||
*k*) failcom='fail=yes';; \
|
||||
esac; \
|
||||
done; \
|
||||
dot_seen=no; \
|
||||
case "$@" in \
|
||||
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
||||
*) list='$(SUBDIRS)' ;; \
|
||||
esac; \
|
||||
rev=''; for subdir in $$list; do \
|
||||
if test "$$subdir" = "."; then :; else \
|
||||
rev="$$subdir $$rev"; \
|
||||
fi; \
|
||||
done; \
|
||||
rev="$$rev ."; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
for subdir in $$rev; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| eval $$failcom; \
|
||||
done && test -z "$$fail"
|
||||
tags-recursive:
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
|
||||
done
|
||||
ctags-recursive:
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
|
||||
done
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
mkid -fID $$unique
|
||||
tags: TAGS
|
||||
|
||||
TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
|
||||
include_option=--etags-include; \
|
||||
empty_fix=.; \
|
||||
else \
|
||||
include_option=--include; \
|
||||
empty_fix=; \
|
||||
fi; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test ! -f $$subdir/TAGS || \
|
||||
tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
|
||||
fi; \
|
||||
done; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$tags $$unique; \
|
||||
fi
|
||||
ctags: CTAGS
|
||||
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$tags $$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& cd $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) $$here
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
|
||||
list='$(DISTFILES)'; for file in $$list; do \
|
||||
case $$file in \
|
||||
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
|
||||
esac; \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
||||
dir="/$$dir"; \
|
||||
$(mkdir_p) "$(distdir)$$dir"; \
|
||||
else \
|
||||
dir=''; \
|
||||
fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||
fi; \
|
||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||
else \
|
||||
test -f $(distdir)/$$file \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test -d "$(distdir)/$$subdir" \
|
||||
|| $(mkdir_p) "$(distdir)/$$subdir" \
|
||||
|| exit 1; \
|
||||
distdir=`$(am__cd) $(distdir) && pwd`; \
|
||||
top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
|
||||
(cd $$subdir && \
|
||||
$(MAKE) $(AM_MAKEFLAGS) \
|
||||
top_distdir="$$top_distdir" \
|
||||
distdir="$$distdir/$$subdir" \
|
||||
distdir) \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-recursive
|
||||
all-am: Makefile
|
||||
installdirs: installdirs-recursive
|
||||
installdirs-am:
|
||||
install: install-recursive
|
||||
install-exec: install-exec-recursive
|
||||
install-data: install-data-recursive
|
||||
uninstall: uninstall-recursive
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-recursive
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-recursive
|
||||
|
||||
clean-am: clean-generic mostlyclean-am
|
||||
|
||||
distclean: distclean-recursive
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic distclean-tags
|
||||
|
||||
dvi: dvi-recursive
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-recursive
|
||||
|
||||
info: info-recursive
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-info: install-info-recursive
|
||||
|
||||
install-man:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-recursive
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-recursive
|
||||
|
||||
mostlyclean-am: mostlyclean-generic
|
||||
|
||||
pdf: pdf-recursive
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-recursive
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-info-am
|
||||
|
||||
uninstall-info: uninstall-info-recursive
|
||||
|
||||
.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
|
||||
clean clean-generic clean-recursive ctags ctags-recursive \
|
||||
distclean distclean-generic distclean-recursive distclean-tags \
|
||||
distdir dvi dvi-am html html-am info info-am install \
|
||||
install-am install-data install-data-am install-exec \
|
||||
install-exec-am install-info install-info-am install-man \
|
||||
install-strip installcheck installcheck-am installdirs \
|
||||
installdirs-am maintainer-clean maintainer-clean-generic \
|
||||
maintainer-clean-recursive mostlyclean mostlyclean-generic \
|
||||
mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \
|
||||
uninstall uninstall-am uninstall-info-am
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
||||
39
trunk/paradiseo-peo/src/rmc/mpi/Makefile.am
Executable file
39
trunk/paradiseo-peo/src/rmc/mpi/Makefile.am
Executable file
|
|
@ -0,0 +1,39 @@
|
|||
CXX=mpicxx
|
||||
|
||||
INCLUDES = \
|
||||
`xml2-config --cflags` \
|
||||
-I$(EO_DIR)/src
|
||||
|
||||
AM_CXXFLAGS =\
|
||||
-g \
|
||||
-Wall
|
||||
|
||||
lib_LIBRARIES = librmc_mpi.a
|
||||
|
||||
librmc_mpi_a_SOURCES = \
|
||||
node.h \
|
||||
node.cpp \
|
||||
param.h \
|
||||
param.cpp \
|
||||
comm.h \
|
||||
comm.cpp \
|
||||
coop.h \
|
||||
coop.cpp \
|
||||
mess.h \
|
||||
mess.cpp \
|
||||
rmc.cpp \
|
||||
scheduler.h \
|
||||
scheduler.cpp \
|
||||
worker.h \
|
||||
worker.cpp \
|
||||
send.h \
|
||||
send.cpp \
|
||||
recv.h \
|
||||
recv.cpp \
|
||||
xml_parser.h \
|
||||
xml_parser.cpp \
|
||||
schema.h \
|
||||
schema.cpp \
|
||||
runner.cpp \
|
||||
service.h \
|
||||
service.cpp
|
||||
478
trunk/paradiseo-peo/src/rmc/mpi/Makefile.in
Normal file
478
trunk/paradiseo-peo/src/rmc/mpi/Makefile.in
Normal file
|
|
@ -0,0 +1,478 @@
|
|||
# Makefile.in generated by automake 1.9.6 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
VPATH = @srcdir@
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
top_builddir = ../../..
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
INSTALL = @INSTALL@
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
subdir = src/rmc/mpi
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
|
||||
$(top_srcdir)/configure.in
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||
CONFIG_CLEAN_FILES =
|
||||
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
|
||||
am__vpath_adj = case $$p in \
|
||||
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
*) f=$$p;; \
|
||||
esac;
|
||||
am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
|
||||
am__installdirs = "$(DESTDIR)$(libdir)"
|
||||
libLIBRARIES_INSTALL = $(INSTALL_DATA)
|
||||
LIBRARIES = $(lib_LIBRARIES)
|
||||
AR = ar
|
||||
ARFLAGS = cru
|
||||
librmc_mpi_a_AR = $(AR) $(ARFLAGS)
|
||||
librmc_mpi_a_LIBADD =
|
||||
am_librmc_mpi_a_OBJECTS = node.$(OBJEXT) param.$(OBJEXT) \
|
||||
comm.$(OBJEXT) coop.$(OBJEXT) mess.$(OBJEXT) rmc.$(OBJEXT) \
|
||||
scheduler.$(OBJEXT) worker.$(OBJEXT) send.$(OBJEXT) \
|
||||
recv.$(OBJEXT) xml_parser.$(OBJEXT) schema.$(OBJEXT) \
|
||||
runner.$(OBJEXT) service.$(OBJEXT)
|
||||
librmc_mpi_a_OBJECTS = $(am_librmc_mpi_a_OBJECTS)
|
||||
DEFAULT_INCLUDES = -I. -I$(srcdir)
|
||||
depcomp = $(SHELL) $(top_srcdir)/depcomp
|
||||
am__depfiles_maybe = depfiles
|
||||
CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
|
||||
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
|
||||
CXXLD = $(CXX)
|
||||
CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
|
||||
-o $@
|
||||
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
CCLD = $(CC)
|
||||
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||
SOURCES = $(librmc_mpi_a_SOURCES)
|
||||
DIST_SOURCES = $(librmc_mpi_a_SOURCES)
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMDEP_FALSE = @AMDEP_FALSE@
|
||||
AMDEP_TRUE = @AMDEP_TRUE@
|
||||
AMTAR = @AMTAR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CXX = mpicxx
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EO_DIR = @EO_DIR@
|
||||
EXEEXT = @EXEEXT@
|
||||
GREP = @GREP@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MOEO_DIR = @MOEO_DIR@
|
||||
MO_DIR = @MO_DIR@
|
||||
OBJEXT = @OBJEXT@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
RANLIB = @RANLIB@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
VERSION = @VERSION@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_CXX = @ac_ct_CXX@
|
||||
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
|
||||
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
|
||||
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
|
||||
am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build_alias = @build_alias@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host_alias = @host_alias@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
INCLUDES = \
|
||||
`xml2-config --cflags` \
|
||||
-I$(EO_DIR)/src
|
||||
|
||||
AM_CXXFLAGS = \
|
||||
-g \
|
||||
-Wall
|
||||
|
||||
lib_LIBRARIES = librmc_mpi.a
|
||||
librmc_mpi_a_SOURCES = \
|
||||
node.h \
|
||||
node.cpp \
|
||||
param.h \
|
||||
param.cpp \
|
||||
comm.h \
|
||||
comm.cpp \
|
||||
coop.h \
|
||||
coop.cpp \
|
||||
mess.h \
|
||||
mess.cpp \
|
||||
rmc.cpp \
|
||||
scheduler.h \
|
||||
scheduler.cpp \
|
||||
worker.h \
|
||||
worker.cpp \
|
||||
send.h \
|
||||
send.cpp \
|
||||
recv.h \
|
||||
recv.cpp \
|
||||
xml_parser.h \
|
||||
xml_parser.cpp \
|
||||
schema.h \
|
||||
schema.cpp \
|
||||
runner.cpp \
|
||||
service.h \
|
||||
service.cpp
|
||||
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .cpp .o .obj
|
||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
||||
&& exit 0; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/rmc/mpi/Makefile'; \
|
||||
cd $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu src/rmc/mpi/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
install-libLIBRARIES: $(lib_LIBRARIES)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)"
|
||||
@list='$(lib_LIBRARIES)'; for p in $$list; do \
|
||||
if test -f $$p; then \
|
||||
f=$(am__strip_dir) \
|
||||
echo " $(libLIBRARIES_INSTALL) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \
|
||||
$(libLIBRARIES_INSTALL) "$$p" "$(DESTDIR)$(libdir)/$$f"; \
|
||||
else :; fi; \
|
||||
done
|
||||
@$(POST_INSTALL)
|
||||
@list='$(lib_LIBRARIES)'; for p in $$list; do \
|
||||
if test -f $$p; then \
|
||||
p=$(am__strip_dir) \
|
||||
echo " $(RANLIB) '$(DESTDIR)$(libdir)/$$p'"; \
|
||||
$(RANLIB) "$(DESTDIR)$(libdir)/$$p"; \
|
||||
else :; fi; \
|
||||
done
|
||||
|
||||
uninstall-libLIBRARIES:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(lib_LIBRARIES)'; for p in $$list; do \
|
||||
p=$(am__strip_dir) \
|
||||
echo " rm -f '$(DESTDIR)$(libdir)/$$p'"; \
|
||||
rm -f "$(DESTDIR)$(libdir)/$$p"; \
|
||||
done
|
||||
|
||||
clean-libLIBRARIES:
|
||||
-test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES)
|
||||
librmc_mpi.a: $(librmc_mpi_a_OBJECTS) $(librmc_mpi_a_DEPENDENCIES)
|
||||
-rm -f librmc_mpi.a
|
||||
$(librmc_mpi_a_AR) librmc_mpi.a $(librmc_mpi_a_OBJECTS) $(librmc_mpi_a_LIBADD)
|
||||
$(RANLIB) librmc_mpi.a
|
||||
|
||||
mostlyclean-compile:
|
||||
-rm -f *.$(OBJEXT)
|
||||
|
||||
distclean-compile:
|
||||
-rm -f *.tab.c
|
||||
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/comm.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coop.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mess.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/node.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/param.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/recv.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rmc.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/runner.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scheduler.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/schema.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/send.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/service.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/worker.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xml_parser.Po@am__quote@
|
||||
|
||||
.cpp.o:
|
||||
@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
|
||||
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $<
|
||||
|
||||
.cpp.obj:
|
||||
@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
|
||||
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
|
||||
uninstall-info-am:
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
mkid -fID $$unique
|
||||
tags: TAGS
|
||||
|
||||
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$tags $$unique; \
|
||||
fi
|
||||
ctags: CTAGS
|
||||
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$tags $$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& cd $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) $$here
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
|
||||
list='$(DISTFILES)'; for file in $$list; do \
|
||||
case $$file in \
|
||||
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
|
||||
esac; \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
||||
dir="/$$dir"; \
|
||||
$(mkdir_p) "$(distdir)$$dir"; \
|
||||
else \
|
||||
dir=''; \
|
||||
fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||
fi; \
|
||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||
else \
|
||||
test -f $(distdir)/$$file \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
all-am: Makefile $(LIBRARIES)
|
||||
installdirs:
|
||||
for dir in "$(DESTDIR)$(libdir)"; do \
|
||||
test -z "$$dir" || $(mkdir_p) "$$dir"; \
|
||||
done
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-generic clean-libLIBRARIES mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-compile distclean-generic \
|
||||
distclean-tags
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-am
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-exec-am: install-libLIBRARIES
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-man:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-compile mostlyclean-generic
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-info-am uninstall-libLIBRARIES
|
||||
|
||||
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
|
||||
clean-libLIBRARIES ctags distclean distclean-compile \
|
||||
distclean-generic distclean-tags distdir dvi dvi-am html \
|
||||
html-am info info-am install install-am install-data \
|
||||
install-data-am install-exec install-exec-am install-info \
|
||||
install-info-am install-libLIBRARIES install-man install-strip \
|
||||
installcheck installcheck-am installdirs maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-compile \
|
||||
mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
|
||||
uninstall-am uninstall-info-am uninstall-libLIBRARIES
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
||||
82
trunk/paradiseo-peo/src/rmc/mpi/comm.cpp
Normal file
82
trunk/paradiseo-peo/src/rmc/mpi/comm.cpp
Normal file
|
|
@ -0,0 +1,82 @@
|
|||
// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
|
||||
|
||||
// "comm.cpp"
|
||||
|
||||
// (c) OPAC Team, LIFL, August 2005
|
||||
|
||||
/* This library 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 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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 library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Contact: paradiseo-help@lists.gforge.inria.fr
|
||||
*/
|
||||
|
||||
|
||||
#include <mpi.h>
|
||||
|
||||
#include "comm.h"
|
||||
#include "mess.h"
|
||||
#include "node.h"
|
||||
#include "param.h"
|
||||
#include "../../core/peo_debug.h"
|
||||
#include "../../core/runner.h"
|
||||
#include "send.h"
|
||||
#include "recv.h"
|
||||
#include "scheduler.h"
|
||||
|
||||
static sem_t sem_comm_init;
|
||||
|
||||
static Communicator * the_thread;
|
||||
|
||||
Communicator :: Communicator (int * __argc, char * * * __argv) {
|
||||
|
||||
the_thread = this;
|
||||
initNode (__argc, __argv);
|
||||
loadRMCParameters (* __argc, * __argv);
|
||||
sem_post (& sem_comm_init);
|
||||
}
|
||||
|
||||
void Communicator :: start () {
|
||||
|
||||
while (true) {
|
||||
|
||||
/* Zzz Zzz Zzz :-))) */
|
||||
sleep ();
|
||||
sendMessages ();
|
||||
|
||||
if (! atLeastOneActiveRunner ())
|
||||
break;
|
||||
receiveMessages ();
|
||||
}
|
||||
waitBuffers ();
|
||||
printDebugMessage ("finalizing");
|
||||
MPI_Finalize ();
|
||||
}
|
||||
|
||||
void initCommunication () {
|
||||
|
||||
sem_init (& sem_comm_init, 0, 0);
|
||||
}
|
||||
|
||||
void waitNodeInitialization () {
|
||||
|
||||
sem_wait (& sem_comm_init);
|
||||
}
|
||||
|
||||
void wakeUpCommunicator () {
|
||||
|
||||
the_thread -> wakeUp ();
|
||||
}
|
||||
|
||||
|
||||
|
||||
0
trunk/paradiseo-peo/src/rmc/mpi/comm.cpp:
Normal file
0
trunk/paradiseo-peo/src/rmc/mpi/comm.cpp:
Normal file
46
trunk/paradiseo-peo/src/rmc/mpi/comm.h
Normal file
46
trunk/paradiseo-peo/src/rmc/mpi/comm.h
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
|
||||
|
||||
// "comm.h"
|
||||
|
||||
// (c) OPAC Team, LIFL, August 2005
|
||||
|
||||
/* This library 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 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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 library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Contact: paradiseo-help@lists.gforge.inria.fr
|
||||
*/
|
||||
|
||||
#ifndef __comm_mpi_h
|
||||
#define __comm_mpi_h
|
||||
|
||||
#include "../../core/communicable.h"
|
||||
#include "../../core/reac_thread.h"
|
||||
|
||||
class Communicator : public ReactiveThread {
|
||||
|
||||
public :
|
||||
|
||||
/* Ctor */
|
||||
Communicator (int * __argc, char * * * __argv);
|
||||
|
||||
void start ();
|
||||
};
|
||||
|
||||
extern void initCommunication ();
|
||||
|
||||
extern void waitNodeInitialization ();
|
||||
|
||||
extern void wakeUpCommunicator ();
|
||||
|
||||
#endif
|
||||
0
trunk/paradiseo-peo/src/rmc/mpi/comm.h:
Normal file
0
trunk/paradiseo-peo/src/rmc/mpi/comm.h:
Normal file
57
trunk/paradiseo-peo/src/rmc/mpi/coop.cpp
Normal file
57
trunk/paradiseo-peo/src/rmc/mpi/coop.cpp
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
|
||||
|
||||
// "coop.cpp"
|
||||
|
||||
// (c) OPAC Team, LIFL, August 2005
|
||||
|
||||
/* This library 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 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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 library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Contact: paradiseo-help@lists.gforge.inria.fr
|
||||
*/
|
||||
|
||||
#include "../../core/cooperative.h"
|
||||
#include "send.h"
|
||||
#include "tags.h"
|
||||
#include "schema.h"
|
||||
#include "mess.h"
|
||||
#include "../../core/peo_debug.h"
|
||||
|
||||
Runner * Cooperative :: getOwner () {
|
||||
|
||||
return owner;
|
||||
}
|
||||
|
||||
void Cooperative :: setOwner (Runner & __runner) {
|
||||
|
||||
owner = & __runner;
|
||||
}
|
||||
|
||||
void Cooperative :: send (Cooperative * __coop) {
|
||||
|
||||
:: send (this, getRankOfRunner (__coop -> getOwner () -> getID ()), COOP_TAG);
|
||||
// stop ();
|
||||
}
|
||||
|
||||
Cooperative * getCooperative (COOP_ID __key) {
|
||||
|
||||
return dynamic_cast <Cooperative *> (getCommunicable (__key));
|
||||
}
|
||||
|
||||
void Cooperative :: notifySending () {
|
||||
|
||||
//getOwner -> setPassive ();
|
||||
// resume ();
|
||||
// printDebugMessage (b);
|
||||
}
|
||||
0
trunk/paradiseo-peo/src/rmc/mpi/coop.cpp:
Normal file
0
trunk/paradiseo-peo/src/rmc/mpi/coop.cpp:
Normal file
252
trunk/paradiseo-peo/src/rmc/mpi/mess.cpp
Normal file
252
trunk/paradiseo-peo/src/rmc/mpi/mess.cpp
Normal file
|
|
@ -0,0 +1,252 @@
|
|||
// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
|
||||
|
||||
// "mess.cpp"
|
||||
|
||||
// (c) OPAC Team, LIFL, August 2005
|
||||
|
||||
/* This library 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 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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 library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Contact: paradiseo-help@lists.gforge.inria.fr
|
||||
*/
|
||||
|
||||
#include <mpi.h>
|
||||
#include <vector>
|
||||
|
||||
#include "mess.h"
|
||||
#include "../../core/peo_debug.h"
|
||||
#include "node.h"
|
||||
|
||||
#define MPI_BUF_SIZE 1024*64
|
||||
|
||||
static char mpi_buf [MPI_BUF_SIZE];
|
||||
|
||||
static int pos_buf ;
|
||||
|
||||
static std :: vector <char *> act_buf; /* Active buffers */
|
||||
|
||||
static std :: vector <MPI_Request *> act_req; /* Active requests */
|
||||
|
||||
void cleanBuffers () {
|
||||
|
||||
for (unsigned i = 0; i < act_req.size ();) {
|
||||
|
||||
MPI_Status stat ;
|
||||
int flag ;
|
||||
MPI_Test (act_req [i], & flag, & stat) ;
|
||||
if (flag) {
|
||||
|
||||
delete act_buf [i] ;
|
||||
delete act_req [i] ;
|
||||
|
||||
act_buf [i] = act_buf.back () ;
|
||||
act_buf.pop_back () ;
|
||||
|
||||
act_req [i] = act_req.back () ;
|
||||
act_req.pop_back () ;
|
||||
}
|
||||
else
|
||||
i ++;
|
||||
}
|
||||
}
|
||||
|
||||
void waitBuffers () {
|
||||
|
||||
printDebugMessage ("waiting the termination of the asynchronous operations to complete");
|
||||
|
||||
for (unsigned i = 0; i < act_req.size (); i ++) {
|
||||
|
||||
MPI_Status stat ;
|
||||
|
||||
MPI_Wait (act_req [i], & stat) ;
|
||||
|
||||
delete act_buf [i] ;
|
||||
delete act_req [i] ;
|
||||
}
|
||||
}
|
||||
|
||||
bool probeMessage (int & __src, int & __tag) {
|
||||
|
||||
int flag;
|
||||
|
||||
MPI_Status stat;
|
||||
|
||||
MPI_Iprobe (MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, & flag, & stat);
|
||||
|
||||
__src = stat.MPI_SOURCE;
|
||||
__tag = stat.MPI_TAG;
|
||||
|
||||
return flag;
|
||||
}
|
||||
|
||||
void waitMessage () {
|
||||
|
||||
MPI_Status stat;
|
||||
|
||||
MPI_Probe (MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, & stat);
|
||||
}
|
||||
|
||||
void initMessage () {
|
||||
|
||||
pos_buf = 0;
|
||||
}
|
||||
|
||||
void sendMessage (int __to, int __tag) {
|
||||
|
||||
cleanBuffers ();
|
||||
act_buf.push_back (new char [pos_buf]);
|
||||
act_req.push_back (new MPI_Request);
|
||||
memcpy (act_buf.back (), mpi_buf, pos_buf);
|
||||
MPI_Isend (act_buf.back (), pos_buf, MPI_PACKED, __to, __tag, MPI_COMM_WORLD, act_req.back ());
|
||||
}
|
||||
|
||||
void sendMessageToAll (int __tag) {
|
||||
|
||||
for (int i = 0; i < getNumberOfNodes (); i ++)
|
||||
sendMessage (i, __tag);
|
||||
}
|
||||
|
||||
void receiveMessage (int __from, int __tag) {
|
||||
|
||||
MPI_Status stat;
|
||||
MPI_Request req;
|
||||
|
||||
MPI_Irecv (mpi_buf, MPI_BUF_SIZE, MPI_PACKED, __from, __tag, MPI_COMM_WORLD, & req) ;
|
||||
MPI_Wait (& req, & stat) ;
|
||||
}
|
||||
|
||||
/* Char */
|
||||
void pack (const char & __c) {
|
||||
|
||||
MPI_Pack ((void *) & __c, 1, MPI_CHAR, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD);
|
||||
}
|
||||
|
||||
/* Float */
|
||||
void pack (const float & __f, int __nitem) {
|
||||
|
||||
MPI_Pack ((void *) & __f, __nitem, MPI_FLOAT, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD);
|
||||
}
|
||||
|
||||
/* Double */
|
||||
void pack (const double & __d, int __nitem) {
|
||||
|
||||
MPI_Pack ((void *) & __d, __nitem, MPI_DOUBLE, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD);
|
||||
}
|
||||
|
||||
/* Integer */
|
||||
void pack (const int & __i, int __nitem) {
|
||||
|
||||
MPI_Pack ((void *) & __i, __nitem, MPI_INT, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD);
|
||||
}
|
||||
|
||||
/* Unsigned int. */
|
||||
void pack (const unsigned int & __ui, int __nitem) {
|
||||
|
||||
MPI_Pack ((void *) & __ui, __nitem, MPI_UNSIGNED, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD);
|
||||
}
|
||||
|
||||
/* Short int. */
|
||||
void pack (const short & __sh, int __nitem) {
|
||||
|
||||
MPI_Pack ((void *) & __sh, __nitem, MPI_SHORT, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD);
|
||||
}
|
||||
|
||||
/* Unsigned short */
|
||||
void pack (const unsigned short & __ush, int __nitem) {
|
||||
|
||||
MPI_Pack ((void *) & __ush, __nitem, MPI_UNSIGNED_SHORT, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD);
|
||||
}
|
||||
|
||||
/* Long */
|
||||
void pack (const long & __l, int __nitem) {
|
||||
|
||||
MPI_Pack ((void *) & __l, __nitem, MPI_LONG, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD);
|
||||
}
|
||||
|
||||
/* Unsigned long */
|
||||
void pack (const unsigned long & __ul, int __nitem) {
|
||||
|
||||
MPI_Pack ((void *) & __ul, __nitem, MPI_UNSIGNED_LONG, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD);
|
||||
}
|
||||
|
||||
/* String */
|
||||
void pack (const char * __str) {
|
||||
|
||||
int len = strlen (__str) + 1;
|
||||
MPI_Pack (& len, 1, MPI_INT, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD);
|
||||
MPI_Pack ((void *) __str, len, MPI_CHAR, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD);
|
||||
}
|
||||
|
||||
/* Char */
|
||||
void unpack (char & __c) {
|
||||
|
||||
MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __c, 1, MPI_CHAR, MPI_COMM_WORLD);
|
||||
}
|
||||
|
||||
/* Float */
|
||||
void unpack (float & __f, int __nitem) {
|
||||
|
||||
MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __f, __nitem, MPI_FLOAT, MPI_COMM_WORLD);
|
||||
}
|
||||
|
||||
/* Double */
|
||||
void unpack (double & __d, int __nitem) {
|
||||
|
||||
MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __d, __nitem, MPI_DOUBLE, MPI_COMM_WORLD);
|
||||
}
|
||||
|
||||
/* Integer */
|
||||
void unpack (int & __i, int __nitem) {
|
||||
|
||||
MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __i, __nitem, MPI_INT, MPI_COMM_WORLD);
|
||||
}
|
||||
|
||||
/* Unsigned int. */
|
||||
void unpack (unsigned int & __ui, int __nitem) {
|
||||
|
||||
MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __ui, __nitem, MPI_UNSIGNED, MPI_COMM_WORLD);
|
||||
}
|
||||
|
||||
/* Short int. */
|
||||
void unpack (short & __sh, int __nitem) {
|
||||
|
||||
MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __sh, __nitem, MPI_SHORT, MPI_COMM_WORLD);
|
||||
}
|
||||
|
||||
/* Unsigned short */
|
||||
void unpack (unsigned short & __ush, int __nitem) {
|
||||
|
||||
MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __ush, __nitem, MPI_UNSIGNED_SHORT, MPI_COMM_WORLD);
|
||||
}
|
||||
|
||||
/* Long */
|
||||
void unpack (long & __l, int __nitem) {
|
||||
|
||||
MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __l, __nitem, MPI_LONG, MPI_COMM_WORLD);
|
||||
}
|
||||
|
||||
/* Unsigned long */
|
||||
void unpack (unsigned long & __ul, int __nitem) {
|
||||
|
||||
MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __ul, __nitem, MPI_UNSIGNED_LONG, MPI_COMM_WORLD);
|
||||
}
|
||||
|
||||
/* String */
|
||||
void unpack (char * __str) {
|
||||
|
||||
int len;
|
||||
MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & len, 1, MPI_INT, MPI_COMM_WORLD);
|
||||
MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, __str, len, MPI_CHAR, MPI_COMM_WORLD);
|
||||
}
|
||||
|
||||
0
trunk/paradiseo-peo/src/rmc/mpi/mess.cpp:
Normal file
0
trunk/paradiseo-peo/src/rmc/mpi/mess.cpp:
Normal file
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue