From 9e849f0ba6380744aff1ebdaeee23cb1789fdd2e Mon Sep 17 00:00:00 2001 From: nadeem Date: Wed, 11 Jul 2007 19:28:54 +0000 Subject: [PATCH] Adding beginning stub code for parallel EM --- fastlib/u/nadeem/parallel-em/Makefile | 188 +++++++++++ fastlib/u/nadeem/parallel-em/build.py | 14 + fastlib/u/nadeem/parallel-em/csv2bin.cc | 34 ++ fastlib/u/nadeem/parallel-em/fl_data_io.cc | 76 +++++ fastlib/u/nadeem/parallel-em/fl_data_io.h | 12 + fastlib/u/nadeem/parallel-em/fl_kmeans.cc | 375 +++++++++++++++++++++ fastlib/u/nadeem/parallel-em/fl_kmeans.h | 26 ++ fastlib/u/nadeem/parallel-em/fl_par_em.cc | 175 ++++++++++ fastlib/u/nadeem/parallel-em/fl_par_em.h | 0 fastlib/u/nadeem/parallel-em/hello.c | 42 +++ fastlib/u/nadeem/parallel-em/machinefile | 4 + 11 files changed, 946 insertions(+) create mode 100644 fastlib/u/nadeem/parallel-em/Makefile create mode 100644 fastlib/u/nadeem/parallel-em/build.py create mode 100644 fastlib/u/nadeem/parallel-em/csv2bin.cc create mode 100644 fastlib/u/nadeem/parallel-em/fl_data_io.cc create mode 100644 fastlib/u/nadeem/parallel-em/fl_data_io.h create mode 100644 fastlib/u/nadeem/parallel-em/fl_kmeans.cc create mode 100644 fastlib/u/nadeem/parallel-em/fl_kmeans.h create mode 100644 fastlib/u/nadeem/parallel-em/fl_par_em.cc create mode 100644 fastlib/u/nadeem/parallel-em/fl_par_em.h create mode 100644 fastlib/u/nadeem/parallel-em/hello.c create mode 100644 fastlib/u/nadeem/parallel-em/machinefile diff --git a/fastlib/u/nadeem/parallel-em/Makefile b/fastlib/u/nadeem/parallel-em/Makefile new file mode 100644 index 0000000000..63d5256d2f --- /dev/null +++ b/fastlib/u/nadeem/parallel-em/Makefile @@ -0,0 +1,188 @@ +/net/hc292/nadeem/fastlib/u/nadeem/parallel-em/parallel_em: /net/hc292/nadeem/fastlib/u/nadeem/parallel-em/Makefile /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/u/nadeem/parallel-em/parallel_em + @echo '... Making /net/hc292/nadeem/fastlib/u/nadeem/parallel-em/parallel_em' + @rm -f /net/hc292/nadeem/fastlib/u/nadeem/parallel-em/parallel_em + @ln -s -f /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/u/nadeem/parallel-em/parallel_em /net/hc292/nadeem/fastlib/u/nadeem/parallel-em/parallel_em + @echo '*** Created 1 symlinks in /net/hc292/nadeem/fastlib/u/nadeem/parallel-em/.' +/net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/u/nadeem/parallel-em/parallel_em: /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libmath_math.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libbase_base.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libfile_file.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libcol_col.a /net/hc292/nadeem/fastlib/bin_keep/x86_64_Linux_COMMON_mpi_COMMON/libblaspack.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libfx_fx.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libu_nadeem_parallel-em_parallel_em__auto.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libdata_data.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libla_la.a + @echo '... Making bin/x86_64_Linux_check_mpi_/u/nadeem/parallel-em/parallel_em' + @mkdir -p /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/u/nadeem/parallel-em + @mpiCC -o /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/u/nadeem/parallel-em/parallel_em -O2 -g -DDEBUG /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libu_nadeem_parallel-em_parallel_em__auto.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libmath_math.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libdata_data.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libfile_file.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libfx_fx.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libla_la.a /net/hc292/nadeem/fastlib/bin_keep/x86_64_Linux_COMMON_mpi_COMMON/libblaspack.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libcol_col.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libbase_base.a -lm -lpthread -lg2c +pseudo_4: /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libmath_math.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libbase_base.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libfile_file.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libcol_col.a /net/hc292/nadeem/fastlib/bin_keep/x86_64_Linux_COMMON_mpi_COMMON/libblaspack.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libfx_fx.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libu_nadeem_parallel-em_parallel_em__auto.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libdata_data.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libla_la.a + @echo '*** Done with /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libmath_math.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libbase_base.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libfile_file.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libcol_col.a /net/hc292/nadeem/fastlib/bin_keep/x86_64_Linux_COMMON_mpi_COMMON/libblaspack.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libfx_fx.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libu_nadeem_parallel-em_parallel_em__auto.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libdata_data.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libla_la.a' +/net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libu_nadeem_parallel-em_parallel_em__auto.a: /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/u_nadeem_parallel-em_fl_kmeans.o /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/u_nadeem_parallel-em_fl_par_em.o /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/u_nadeem_parallel-em_fl_data_io.o + @echo '... Making bin/x86_64_Linux_check_mpi_/libu_nadeem_parallel-em_parallel_em__auto.a' + @mkdir -p /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_ + @ar r /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libu_nadeem_parallel-em_parallel_em__auto.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/u_nadeem_parallel-em_fl_par_em.o /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/u_nadeem_parallel-em_fl_data_io.o /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/u_nadeem_parallel-em_fl_kmeans.o +/net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/u_nadeem_parallel-em_fl_kmeans.o: /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/libfastlib_fastlib.h /net/hc292/nadeem/fastlib/u/nadeem/parallel-em/fl_par_em.h /net/hc292/nadeem/fastlib/u/nadeem/parallel-em/fl_data_io.h /net/hc292/nadeem/fastlib/u/nadeem/parallel-em/fl_kmeans.h /net/hc292/nadeem/fastlib/u/nadeem/parallel-em/fl_kmeans.cc + @echo '... Making bin/x86_64_Linux_check_mpi_/obj/u_nadeem_parallel-em_fl_kmeans.o' + @mkdir -p /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj + @cd /net/hc292/nadeem/fastlib/u/nadeem/parallel-em && mpiCC -fno-exceptions -I/net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON -I/net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_ -I/net/hc292/nadeem/fastlib -O2 -g -DDEBUG -c fl_kmeans.cc -o /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/u_nadeem_parallel-em_fl_kmeans.o +/net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/u_nadeem_parallel-em_fl_data_io.o: /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/libfastlib_fastlib.h /net/hc292/nadeem/fastlib/u/nadeem/parallel-em/fl_par_em.h /net/hc292/nadeem/fastlib/u/nadeem/parallel-em/fl_data_io.cc /net/hc292/nadeem/fastlib/u/nadeem/parallel-em/fl_data_io.h /net/hc292/nadeem/fastlib/u/nadeem/parallel-em/fl_kmeans.h + @echo '... Making bin/x86_64_Linux_check_mpi_/obj/u_nadeem_parallel-em_fl_data_io.o' + @mkdir -p /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj + @cd /net/hc292/nadeem/fastlib/u/nadeem/parallel-em && mpiCC -fno-exceptions -I/net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON -I/net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_ -I/net/hc292/nadeem/fastlib -O2 -g -DDEBUG -c fl_data_io.cc -o /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/u_nadeem_parallel-em_fl_data_io.o +/net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/u_nadeem_parallel-em_fl_par_em.o: /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/libfastlib_fastlib.h /net/hc292/nadeem/fastlib/u/nadeem/parallel-em/fl_par_em.h /net/hc292/nadeem/fastlib/u/nadeem/parallel-em/fl_par_em.cc /net/hc292/nadeem/fastlib/u/nadeem/parallel-em/fl_data_io.h /net/hc292/nadeem/fastlib/u/nadeem/parallel-em/fl_kmeans.h + @echo '... Making bin/x86_64_Linux_check_mpi_/obj/u_nadeem_parallel-em_fl_par_em.o' + @mkdir -p /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj + @cd /net/hc292/nadeem/fastlib/u/nadeem/parallel-em && mpiCC -fno-exceptions -I/net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON -I/net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_ -I/net/hc292/nadeem/fastlib -O2 -g -DDEBUG -c fl_par_em.cc -o /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/u_nadeem_parallel-em_fl_par_em.o +/net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/libfastlib_fastlib.h: /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/libmath_math.h /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/libla_la.h /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/libfx_fx.h /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/libdata_data.h /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/libbase_base.h /net/hc292/nadeem/fastlib/fastlib/fastlib.h /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/libfile_file.h /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/libcol_col.h + @echo '... Making bin/x86_64_Linux_COMMON_mpi_COMMON/libfastlib_fastlib.h' + @mkdir -p /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON + @touch /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/libfastlib_fastlib.h +/net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/libmath_math.h: /net/hc292/nadeem/fastlib/math/kernel.h /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/libbase_base.h /net/hc292/nadeem/fastlib/math/geometry.h /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/libcol_col.h /net/hc292/nadeem/fastlib/math/math.h /net/hc292/nadeem/fastlib/math/discrete.h + @echo '... Making bin/x86_64_Linux_COMMON_mpi_COMMON/libmath_math.h' + @mkdir -p /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON + @touch /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/libmath_math.h +/net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/libdata_data.h: /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/libfile_file.h /net/hc292/nadeem/fastlib/data/dataset.h /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/libbase_base.h /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/libla_la.h /net/hc292/nadeem/fastlib/data/crossvalidation.h + @echo '... Making bin/x86_64_Linux_COMMON_mpi_COMMON/libdata_data.h' + @mkdir -p /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON + @touch /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/libdata_data.h +/net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/libfx_fx.h: /net/hc292/nadeem/fastlib/fx/datastore.h /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/libbase_base.h /net/hc292/nadeem/fastlib/fx/timer.h /net/hc292/nadeem/fastlib/fx/fx.h + @echo '... Making bin/x86_64_Linux_COMMON_mpi_COMMON/libfx_fx.h' + @mkdir -p /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON + @touch /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/libfx_fx.h +pseudo_20: /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libmath_math.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libbase_base.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libfile_file.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libcol_col.a /net/hc292/nadeem/fastlib/bin_keep/x86_64_Linux_COMMON_mpi_COMMON/libblaspack.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libfx_fx.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libdata_data.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libla_la.a + @echo '*** Done with /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libmath_math.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libbase_base.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libfile_file.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libcol_col.a /net/hc292/nadeem/fastlib/bin_keep/x86_64_Linux_COMMON_mpi_COMMON/libblaspack.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libfx_fx.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libdata_data.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libla_la.a' +pseudo_22: /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libcol_col.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libbase_base.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libmath_math.a + @echo '*** Done with /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libcol_col.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libbase_base.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libmath_math.a' +/net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libmath_math.a: /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/math_geometry.o /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/math_discrete.o + @echo '... Making bin/x86_64_Linux_check_mpi_/libmath_math.a' + @mkdir -p /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_ + @ar r /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libmath_math.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/math_discrete.o /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/math_geometry.o +/net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/math_geometry.o: /net/hc292/nadeem/fastlib/math/geometry.cc /net/hc292/nadeem/fastlib/math/kernel.h /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/libbase_base.h /net/hc292/nadeem/fastlib/math/geometry.h /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/libcol_col.h /net/hc292/nadeem/fastlib/math/math.h /net/hc292/nadeem/fastlib/math/discrete.h + @echo '... Making bin/x86_64_Linux_check_mpi_/obj/math_geometry.o' + @mkdir -p /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj + @cd /net/hc292/nadeem/fastlib/math && mpiCC -fno-exceptions -I/net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON -I/net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_ -I/net/hc292/nadeem/fastlib -O2 -g -DDEBUG -c geometry.cc -o /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/math_geometry.o +/net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/math_discrete.o: /net/hc292/nadeem/fastlib/math/kernel.h /net/hc292/nadeem/fastlib/math/discrete.cc /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/libbase_base.h /net/hc292/nadeem/fastlib/math/geometry.h /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/libcol_col.h /net/hc292/nadeem/fastlib/math/math.h /net/hc292/nadeem/fastlib/math/discrete.h + @echo '... Making bin/x86_64_Linux_check_mpi_/obj/math_discrete.o' + @mkdir -p /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj + @cd /net/hc292/nadeem/fastlib/math && mpiCC -fno-exceptions -I/net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON -I/net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_ -I/net/hc292/nadeem/fastlib -O2 -g -DDEBUG -c discrete.cc -o /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/math_discrete.o +pseudo_32: /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libbase_base.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libfile_file.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libcol_col.a /net/hc292/nadeem/fastlib/bin_keep/x86_64_Linux_COMMON_mpi_COMMON/libblaspack.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libdata_data.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libla_la.a + @echo '*** Done with /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libbase_base.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libfile_file.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libcol_col.a /net/hc292/nadeem/fastlib/bin_keep/x86_64_Linux_COMMON_mpi_COMMON/libblaspack.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libdata_data.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libla_la.a' +/net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libdata_data.a: /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/data_dataset.o + @echo '... Making bin/x86_64_Linux_check_mpi_/libdata_data.a' + @mkdir -p /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_ + @ar r /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libdata_data.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/data_dataset.o +/net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/data_dataset.o: /net/hc292/nadeem/fastlib/data/crossvalidation.h /net/hc292/nadeem/fastlib/data/dataset.h /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/libla_la.h /net/hc292/nadeem/fastlib/data/dataset.cc /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/libbase_base.h /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/libfile_file.h + @echo '... Making bin/x86_64_Linux_check_mpi_/obj/data_dataset.o' + @mkdir -p /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj + @cd /net/hc292/nadeem/fastlib/data && mpiCC -fno-exceptions -I/net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON -I/net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_ -I/net/hc292/nadeem/fastlib -O2 -g -DDEBUG -c dataset.cc -o /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/data_dataset.o +/net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/libla_la.h: /net/hc292/nadeem/fastlib/la/clapack.h /net/hc292/nadeem/fastlib/la/matrix.h /net/hc292/nadeem/fastlib/la/blas.h /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/libbase_base.h /net/hc292/nadeem/fastlib/la/uselapack.h /net/hc292/nadeem/fastlib/la/la.h /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/libcol_col.h + @echo '... Making bin/x86_64_Linux_COMMON_mpi_COMMON/libla_la.h' + @mkdir -p /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON + @touch /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/libla_la.h +/net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/libfile_file.h: /net/hc292/nadeem/fastlib/file/textfile.h /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/libbase_base.h /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/libcol_col.h /net/hc292/nadeem/fastlib/file/serialize.h + @echo '... Making bin/x86_64_Linux_COMMON_mpi_COMMON/libfile_file.h' + @mkdir -p /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON + @touch /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/libfile_file.h +pseudo_40: /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libcol_col.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libbase_base.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libfile_file.a + @echo '*** Done with /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libcol_col.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libbase_base.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libfile_file.a' +/net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libfile_file.a: /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/file_textfile.o /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/file_serialize.o + @echo '... Making bin/x86_64_Linux_check_mpi_/libfile_file.a' + @mkdir -p /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_ + @ar r /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libfile_file.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/file_textfile.o /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/file_serialize.o +/net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/file_serialize.o: /net/hc292/nadeem/fastlib/file/textfile.h /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/libbase_base.h /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/libcol_col.h /net/hc292/nadeem/fastlib/file/serialize.cc /net/hc292/nadeem/fastlib/file/serialize.h + @echo '... Making bin/x86_64_Linux_check_mpi_/obj/file_serialize.o' + @mkdir -p /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj + @cd /net/hc292/nadeem/fastlib/file && mpiCC -fno-exceptions -I/net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON -I/net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_ -I/net/hc292/nadeem/fastlib -O2 -g -DDEBUG -c serialize.cc -o /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/file_serialize.o +/net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/file_textfile.o: /net/hc292/nadeem/fastlib/file/textfile.h /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/libbase_base.h /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/libcol_col.h /net/hc292/nadeem/fastlib/file/serialize.h /net/hc292/nadeem/fastlib/file/textfile.cc + @echo '... Making bin/x86_64_Linux_check_mpi_/obj/file_textfile.o' + @mkdir -p /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj + @cd /net/hc292/nadeem/fastlib/file && mpiCC -fno-exceptions -I/net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON -I/net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_ -I/net/hc292/nadeem/fastlib -O2 -g -DDEBUG -c textfile.cc -o /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/file_textfile.o +pseudo_48: /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libfx_fx.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libbase_base.a + @echo '*** Done with /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libfx_fx.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libbase_base.a' +/net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libfx_fx.a: /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/fx_timer.o /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/fx_fx.o /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/fx_datastore.o + @echo '... Making bin/x86_64_Linux_check_mpi_/libfx_fx.a' + @mkdir -p /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_ + @ar r /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libfx_fx.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/fx_datastore.o /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/fx_timer.o /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/fx_fx.o +/net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/fx_fx.o: /net/hc292/nadeem/fastlib/fx/datastore.h /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/libbase_base.h /net/hc292/nadeem/fastlib/fx/timer.h /net/hc292/nadeem/fastlib/fx/fx.c /net/hc292/nadeem/fastlib/fx/fx.h + @echo '... Making bin/x86_64_Linux_check_mpi_/obj/fx_fx.o' + @mkdir -p /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj + @cd /net/hc292/nadeem/fastlib/fx && mpicc -I/net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON -I/net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_ -I/net/hc292/nadeem/fastlib -O2 -g -DDEBUG -c fx.c -o /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/fx_fx.o +/net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/fx_timer.o: /net/hc292/nadeem/fastlib/fx/datastore.h /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/libbase_base.h /net/hc292/nadeem/fastlib/fx/timer.h /net/hc292/nadeem/fastlib/fx/timer.c /net/hc292/nadeem/fastlib/fx/fx.h + @echo '... Making bin/x86_64_Linux_check_mpi_/obj/fx_timer.o' + @mkdir -p /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj + @cd /net/hc292/nadeem/fastlib/fx && mpicc -I/net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON -I/net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_ -I/net/hc292/nadeem/fastlib -O2 -g -DDEBUG -c timer.c -o /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/fx_timer.o +/net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/fx_datastore.o: /net/hc292/nadeem/fastlib/fx/datastore.h /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/libbase_base.h /net/hc292/nadeem/fastlib/fx/timer.h /net/hc292/nadeem/fastlib/fx/datastore.c /net/hc292/nadeem/fastlib/fx/fx.h + @echo '... Making bin/x86_64_Linux_check_mpi_/obj/fx_datastore.o' + @mkdir -p /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj + @cd /net/hc292/nadeem/fastlib/fx && mpicc -I/net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON -I/net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_ -I/net/hc292/nadeem/fastlib -O2 -g -DDEBUG -c datastore.c -o /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/fx_datastore.o +pseudo_59: /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libcol_col.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libbase_base.a /net/hc292/nadeem/fastlib/bin_keep/x86_64_Linux_COMMON_mpi_COMMON/libblaspack.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libla_la.a + @echo '*** Done with /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libcol_col.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libbase_base.a /net/hc292/nadeem/fastlib/bin_keep/x86_64_Linux_COMMON_mpi_COMMON/libblaspack.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libla_la.a' +/net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libla_la.a: /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/la_uselapack.o + @echo '... Making bin/x86_64_Linux_check_mpi_/libla_la.a' + @mkdir -p /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_ + @ar r /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libla_la.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/la_uselapack.o +/net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/la_uselapack.o: /net/hc292/nadeem/fastlib/la/clapack.h /net/hc292/nadeem/fastlib/la/matrix.h /net/hc292/nadeem/fastlib/la/blas.h /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/libbase_base.h /net/hc292/nadeem/fastlib/la/uselapack.cc /net/hc292/nadeem/fastlib/la/uselapack.h /net/hc292/nadeem/fastlib/la/la.h /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/libcol_col.h + @echo '... Making bin/x86_64_Linux_check_mpi_/obj/la_uselapack.o' + @mkdir -p /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj + @cd /net/hc292/nadeem/fastlib/la && mpiCC -fno-exceptions -I/net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON -I/net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_ -I/net/hc292/nadeem/fastlib -O2 -g -DDEBUG -c uselapack.cc -o /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/la_uselapack.o +/net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/libcol_col.h: /net/hc292/nadeem/fastlib/col/fastalloc.h /net/hc292/nadeem/fastlib/col/string.h /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/libbase_base.h /net/hc292/nadeem/fastlib/col/heap.h /net/hc292/nadeem/fastlib/col/arraylist.h + @echo '... Making bin/x86_64_Linux_COMMON_mpi_COMMON/libcol_col.h' + @mkdir -p /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON + @touch /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/libcol_col.h +/net/hc292/nadeem/fastlib/bin_keep/x86_64_Linux_COMMON_mpi_COMMON/libblaspack.a: /net/hc292/nadeem/fastlib/la/blaspack.tgz + @echo '... Making /net/hc292/nadeem/fastlib/bin_keep/x86_64_Linux_COMMON_mpi_COMMON/libblaspack.a' + @mkdir -p /net/hc292/nadeem/fastlib/bin_keep/x86_64_Linux_COMMON_mpi_COMMON + @echo '... Extracting FORTRAN files...' + @mkdir -p /net/hc292/nadeem/fastlib/bin_keep/x86_64_Linux_COMMON_mpi_COMMON/libblaspack_workspace + @cd /net/hc292/nadeem/fastlib/bin_keep/x86_64_Linux_COMMON_mpi_COMMON/libblaspack_workspace && tar -xzf /net/hc292/nadeem/fastlib/la/blaspack.tgz + @echo '*** Compiling LAPACK with BLAS reference implementation.' + @echo '... Our compilation differs slightly from regular LAPACK/BLAS:' + @echo '... NOTE 1: We omit complex-number routines (halves compile time).' + @echo '... NOTE 2: We require case sensitivity for LAPACK/BLAS string parameters.' + @echo '... This may take several minutes (about 800 FORTRAN files).' + @cd /net/hc292/nadeem/fastlib/bin_keep/x86_64_Linux_COMMON_mpi_COMMON/libblaspack_workspace && mpif77 -O2 -c src/*.f + @echo '... Almost done with LAPACK/BLAS...' + @cd /net/hc292/nadeem/fastlib/bin_keep/x86_64_Linux_COMMON_mpi_COMMON/libblaspack_workspace && mpif77 -O0 -c src/dlamch.f src/slamch.f + @cd /net/hc292/nadeem/fastlib/bin_keep/x86_64_Linux_COMMON_mpi_COMMON/libblaspack_workspace && ar r /net/hc292/nadeem/fastlib/bin_keep/x86_64_Linux_COMMON_mpi_COMMON/libblaspack.a *.o + @echo '... Created archive, cleaning up.' + @rm -rf /net/hc292/nadeem/fastlib/bin_keep/x86_64_Linux_COMMON_mpi_COMMON/libblaspack_workspace + @echo '*** Done with LAPACK and BLAS!' +/net/hc292/nadeem/fastlib/la/blaspack.tgz: + @echo '... Making /net/hc292/nadeem/fastlib/la/blaspack.tgz' + @echo 'Downloading the file using curl...' + @cd /net/hc292/nadeem/fastlib/la && curl -L -o blaspack.tgz "http://www.cc.gatech.edu/~garryb/fastlib/blaspack.tgz" +pseudo_71: /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libcol_col.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libbase_base.a + @echo '*** Done with /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libcol_col.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libbase_base.a' +/net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libcol_col.a: /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/col_col.o + @echo '... Making bin/x86_64_Linux_check_mpi_/libcol_col.a' + @mkdir -p /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_ + @ar r /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libcol_col.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/col_col.o +/net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/col_col.o: /net/hc292/nadeem/fastlib/col/fastalloc.h /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/libbase_base.h /net/hc292/nadeem/fastlib/col/arraylist.h /net/hc292/nadeem/fastlib/col/string.h /net/hc292/nadeem/fastlib/col/col.cc /net/hc292/nadeem/fastlib/col/heap.h + @echo '... Making bin/x86_64_Linux_check_mpi_/obj/col_col.o' + @mkdir -p /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj + @cd /net/hc292/nadeem/fastlib/col && mpiCC -fno-exceptions -I/net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON -I/net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_ -I/net/hc292/nadeem/fastlib -O2 -g -DDEBUG -c col.cc -o /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/col_col.o +/net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/libbase_base.h: /net/hc292/nadeem/fastlib/base/compiler_impl.h /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/base/basic_types.h /net/hc292/nadeem/fastlib/base/common.h /net/hc292/nadeem/fastlib/base/cc.h /net/hc292/nadeem/fastlib/base/debug.h /net/hc292/nadeem/fastlib/base/compiler.h /net/hc292/nadeem/fastlib/base/scale.h /net/hc292/nadeem/fastlib/base/ccmem.h /net/hc292/nadeem/fastlib/base/fortran.h /net/hc292/nadeem/fastlib/base/otrav.h /net/hc292/nadeem/fastlib/base/test.h + @echo '... Making bin/x86_64_Linux_COMMON_mpi_COMMON/libbase_base.h' + @mkdir -p /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON + @touch /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/libbase_base.h +pseudo_80: /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libbase_base.a + @echo '*** Done with /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libbase_base.a' +/net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libbase_base.a: /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/base_cc.o /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/base_otrav.o /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/base_common.o /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/base_ccmem.o + @echo '... Making bin/x86_64_Linux_check_mpi_/libbase_base.a' + @mkdir -p /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_ + @ar r /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/libbase_base.a /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/base_common.o /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/base_cc.o /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/base_ccmem.o /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/base_otrav.o +/net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/base_otrav.o: /net/hc292/nadeem/fastlib/base/otrav.cc /net/hc292/nadeem/fastlib/base/compiler_impl.h /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/base/basic_types.h /net/hc292/nadeem/fastlib/base/common.h /net/hc292/nadeem/fastlib/base/cc.h /net/hc292/nadeem/fastlib/base/debug.h /net/hc292/nadeem/fastlib/base/compiler.h /net/hc292/nadeem/fastlib/base/scale.h /net/hc292/nadeem/fastlib/base/ccmem.h /net/hc292/nadeem/fastlib/base/fortran.h /net/hc292/nadeem/fastlib/base/otrav.h /net/hc292/nadeem/fastlib/base/test.h + @echo '... Making bin/x86_64_Linux_check_mpi_/obj/base_otrav.o' + @mkdir -p /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj + @cd /net/hc292/nadeem/fastlib/base && mpiCC -fno-exceptions -I/net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON -I/net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_ -I/net/hc292/nadeem/fastlib -O2 -g -DDEBUG -c otrav.cc -o /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/base_otrav.o +/net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/base_ccmem.o: /net/hc292/nadeem/fastlib/base/compiler_impl.h /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/base/basic_types.h /net/hc292/nadeem/fastlib/base/common.h /net/hc292/nadeem/fastlib/base/cc.h /net/hc292/nadeem/fastlib/base/debug.h /net/hc292/nadeem/fastlib/base/compiler.h /net/hc292/nadeem/fastlib/base/scale.h /net/hc292/nadeem/fastlib/base/ccmem.h /net/hc292/nadeem/fastlib/base/ccmem.cc /net/hc292/nadeem/fastlib/base/fortran.h /net/hc292/nadeem/fastlib/base/otrav.h /net/hc292/nadeem/fastlib/base/test.h + @echo '... Making bin/x86_64_Linux_check_mpi_/obj/base_ccmem.o' + @mkdir -p /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj + @cd /net/hc292/nadeem/fastlib/base && mpiCC -fno-exceptions -I/net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON -I/net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_ -I/net/hc292/nadeem/fastlib -O2 -g -DDEBUG -c ccmem.cc -o /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/base_ccmem.o +/net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/base_cc.o: /net/hc292/nadeem/fastlib/base/compiler_impl.h /net/hc292/nadeem/fastlib/base/cc.cc /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/base/basic_types.h /net/hc292/nadeem/fastlib/base/common.h /net/hc292/nadeem/fastlib/base/cc.h /net/hc292/nadeem/fastlib/base/debug.h /net/hc292/nadeem/fastlib/base/compiler.h /net/hc292/nadeem/fastlib/base/scale.h /net/hc292/nadeem/fastlib/base/ccmem.h /net/hc292/nadeem/fastlib/base/fortran.h /net/hc292/nadeem/fastlib/base/otrav.h /net/hc292/nadeem/fastlib/base/test.h + @echo '... Making bin/x86_64_Linux_check_mpi_/obj/base_cc.o' + @mkdir -p /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj + @cd /net/hc292/nadeem/fastlib/base && mpiCC -fno-exceptions -I/net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON -I/net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_ -I/net/hc292/nadeem/fastlib -O2 -g -DDEBUG -c cc.cc -o /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/base_cc.o +/net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/base_common.o: /net/hc292/nadeem/fastlib/base/compiler_impl.h /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/base/basic_types.h /net/hc292/nadeem/fastlib/base/common.h /net/hc292/nadeem/fastlib/base/cc.h /net/hc292/nadeem/fastlib/base/common.c /net/hc292/nadeem/fastlib/base/debug.h /net/hc292/nadeem/fastlib/base/compiler.h /net/hc292/nadeem/fastlib/base/scale.h /net/hc292/nadeem/fastlib/base/ccmem.h /net/hc292/nadeem/fastlib/base/fortran.h /net/hc292/nadeem/fastlib/base/otrav.h /net/hc292/nadeem/fastlib/base/test.h + @echo '... Making bin/x86_64_Linux_check_mpi_/obj/base_common.o' + @mkdir -p /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj + @cd /net/hc292/nadeem/fastlib/base && mpicc -I/net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON -I/net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_ -I/net/hc292/nadeem/fastlib -O2 -g -DDEBUG -c common.c -o /net/hc292/nadeem/fastlib/bin/x86_64_Linux_check_mpi_/obj/base_common.o +/net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/base/basic_types.h: /net/hc292/nadeem/fastlib/script/config.py /net/hc292/nadeem/fastlib/base/config/template_types.c + @echo '... Making bin/x86_64_Linux_COMMON_mpi_COMMON/base/basic_types.h' + @/net/hc292/nadeem/fastlib/script/config.py --genfiles_dir=/net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON --source_dir=/net/hc292/nadeem/fastlib + @mkdir -p /net/hc292/nadeem/fastlib/bin/x86_64_Linux_COMMON_mpi_COMMON/base +clean: + @echo 'Removing the bin/ directory.' + rm -rf /net/hc292/nadeem/fastlib/bin/* diff --git a/fastlib/u/nadeem/parallel-em/build.py b/fastlib/u/nadeem/parallel-em/build.py new file mode 100644 index 0000000000..c8327113b5 --- /dev/null +++ b/fastlib/u/nadeem/parallel-em/build.py @@ -0,0 +1,14 @@ +binrule( + name = "parallel_em", # the executable name + sources = ["fl_par_em.cc", "fl_data_io.cc", "fl_kmeans.cc"], + headers = ["fl_par_em.h", "fl_data_io.h", "fl_kmeans.h"], + linkables = ["fastlib:fastlib"] + ) + + +binrule( + name = "csv2bin", # the executable name + sources = ["csv2bin.cc", "fl_data_io.cc"], + headers = ["fl_data_io.h"], + linkables = ["fastlib:fastlib"] + ) diff --git a/fastlib/u/nadeem/parallel-em/csv2bin.cc b/fastlib/u/nadeem/parallel-em/csv2bin.cc new file mode 100644 index 0000000000..319cc3a263 --- /dev/null +++ b/fastlib/u/nadeem/parallel-em/csv2bin.cc @@ -0,0 +1,34 @@ +#include +#include "fl_data_io.h" + +int +main(int argc, char* argv[]) +{ + Dataset data; + const char* srcname; + const char* dstname; + + fx_init(argc, argv); + + // Get the source file name + if (!(srcname = fx_param_str_req(NULL, "src"))) { + fprintf(stderr, "Error in reading Source File\n"); + exit(1); + } + + // Get the target file name + if (!(dstname = fx_param_str_req(NULL, "dest"))) { + fprintf(stderr, "Error in reading Destination File\n"); + exit(1); + } + + // Get the config file name + if (!PASSED(data.InitFromFile(srcname))) { + fprintf(stderr, "Couldn't open file '%s'.\n", srcname); + exit(1); + } + + write_matrix2bin(dstname, data.matrix()); + + return 0; +} diff --git a/fastlib/u/nadeem/parallel-em/fl_data_io.cc b/fastlib/u/nadeem/parallel-em/fl_data_io.cc new file mode 100644 index 0000000000..8de613fa33 --- /dev/null +++ b/fastlib/u/nadeem/parallel-em/fl_data_io.cc @@ -0,0 +1,76 @@ +#include "fl_data_io.h" + +/* Compute the set of data rows that belong to this processor*/ +bool +par_split_data(int *startrow, int *my_numrows, int total_numrows, int pe, + int numPE) +{ + int extrarows = total_numrows%numPE; + + if (extrarows > pe) + { + *my_numrows = (int)(total_numrows/numPE)+1; + *startrow = pe*(*my_numrows) + 1; + } + else + { + *my_numrows = (int)(total_numrows/numPE); + *startrow = pe*(*my_numrows) + extrarows + 1; + } + + return true; +} + +/* Write the Matrix into a binary file. Matrix is saved row major*/ +bool +write_matrix2bin(const char* fname, Matrix &mat) +{ + FILE *fp; + int rows, cols; + + if (!(fp = fopen(fname, "w"))) + return false; + + // We are flipping the definition of rows and columns here to store the + // data matrix row major + rows = mat.n_cols(); + cols = mat.n_rows(); + fwrite(&rows, sizeof(int), 1, fp); + fwrite(&cols, sizeof(int), 1, fp); + + for (int i=0; i + +bool par_split_data(int *startrow, int *my_numrows, int total_numrows, int pe, + int numPE); +bool write_matrix2bin(const char* fname, Matrix &mat); +bool read_subset_bin2matrix(FILE* fp, Matrix &data, int start_row, + int num_rows, int num_cols); +#endif diff --git a/fastlib/u/nadeem/parallel-em/fl_kmeans.cc b/fastlib/u/nadeem/parallel-em/fl_kmeans.cc new file mode 100644 index 0000000000..5ea7b6dda4 --- /dev/null +++ b/fastlib/u/nadeem/parallel-em/fl_kmeans.cc @@ -0,0 +1,375 @@ +#include "fl_kmeans.h" +#include + +bool gonzalez_cluster(Matrix const &data, int num_clusters, ArrayList + *centroids_) +{ + // fprintf(stderr, "Doing Gonzalez..."); + ArrayList ¢roids = *centroids_; + int num_points = data.n_cols(); + double min_dist = DBL_MAX; + double max_dist = -DBL_MAX; + int index; + Vector temp_vec; + + centroids.Init(num_clusters); + + index = rand() % num_points; + // fprintf(stderr, "Gonzalez Index=%d\n",index); + + data.MakeColumnVector(index, &(temp_vec)); + centroids[0].Copy(temp_vec); + + for (int i=1; i < num_clusters; i++) { + + max_dist = 0; + for (int j=0; j < num_points; j++) { + + Vector data_v; + data.MakeColumnVector(j, &data_v); + min_dist = DBL_MAX; + + for (int k=0; k < i; k++) { + double dist = la::DistanceSqEuclidean(data_v, centroids[k]); + if (dist < min_dist) + min_dist = dist; + } + + if (min_dist > max_dist) { + max_dist = min_dist; + index = j; + } + } + + Vector v; + data.MakeColumnVector(index, &v); + centroids[i].Copy(v); + } + + // fprintf(stderr, "done\n"); + + return true; +} + +/*---------------------------------------------------------------------------- +INPUT : data, num_clusters, max_iter, error_thresh +RETURN: centroids_ - centroid of each the cluster, + labels_ - label of each data point, i.e. the cluster it belongs to +This method assumes that the individual elements in the ArrayList for labels +and centroids are not initialized. It will allocate fresh memory for those. +The "labels *" and "centroids *" should point to valid objects. +-----------------------------------------------------------------------------*/ +double kmeans(Matrix const &data, int num_clusters, + ArrayList *labels_, ArrayList *centroids_, + int max_iter, double error_thresh, bool seed_gonzalez) +{ + if (data.n_cols() < num_clusters) + return -1; + + ArrayList counts; // number of points in each cluster + ArrayList tmp_centroids; // intermediate centroids + int num_points, num_dims; + int i, j, num_iter=0; + double error, old_error; + + //Assign pointers to references to avoid repeated dereferencing. + ArrayList &labels = *labels_; + ArrayList ¢roids = *centroids_; + + num_points = data.n_cols(); + num_dims = data.n_rows(); + + + if (seed_gonzalez) + gonzalez_cluster(data, num_clusters, centroids_); + + else { + //Instead of calling Gonzalez, let's try to do random seeding + // and see what happens + centroids.Init(num_clusters); + for (int i=0; i < num_clusters; i++) { + int index = rand() % num_points; + Vector temp_vec; + data.MakeColumnVector(index, &(temp_vec)); + centroids[i].Copy(temp_vec); + } + // End of random seeding code + } + + // fprintf(stderr,"Running K-Means..."); + + + // centroids.Init(num_clusters); + tmp_centroids.Init(num_clusters); + + counts.Init(num_clusters); + labels.Init(num_points); + + // srand ( time(NULL) ); + + //Initialize the clusters to k points from the dataset + for (j=0; j < num_clusters; j++) + tmp_centroids[j].Init(num_dims); + + error = DBL_MAX; + + do { + + old_error = error; error = 0; + + for (i=0; i < num_clusters; i++) { + tmp_centroids[i].SetZero(); + counts[i] = 0; + } + + for (i=0; i < num_points; i++) { + + // Find the cluster closest to this point and update its label + double min_distance = DBL_MAX; + Vector data_i_Vec; + data.MakeColumnVector(i, &data_i_Vec); + + for (j=0; j < num_clusters; j++ ) { + double distance = la::DistanceSqEuclidean(data_i_Vec, centroids[j]); + if (distance < min_distance) { + labels[i] = j; + min_distance = distance; + } + } + + // Accumulate the stats for the new centroid of the target cluster + la::AddTo(data_i_Vec, &(tmp_centroids[labels[i]])); + counts[labels[i]]++; + error += min_distance; + } + + // Now recompute all the centroids + for (int j=0; j < num_clusters; j++) { + if (counts[j] > 0) + la::ScaleOverwrite((1/(double)counts[j]), + tmp_centroids[j], &(centroids[j])); + } + + num_iter++; + + //Keep repeating until we converge or run out of steam + } while ((fabs(error - old_error) > error_thresh) + && (num_iter < max_iter)); + + // fprintf(stderr, "Done\n"); + + return error; +} + +int kmeans_classify(Vector const &data_Vec, ArrayList const ¢roids, + double* error) +{ + int label=0; + double min_distance = DBL_MAX; + + // Find the cluster closest to this point and update its label + for (int j=0; j < centroids.size(); j++ ) { + double distance = la::DistanceSqEuclidean(data_Vec, centroids[j]); + if (distance < min_distance) { + label = j; + min_distance = distance; + } + } + + *error = min_distance; + return label; +} + +void compute_kmeans_cov_mat(Matrix const &data, + ArrayList const ¢roids, + ArrayList const &data_labels, + ArrayList *cov_mats) +{ + ArrayList &g_sigma = *cov_mats; + int num_clusters = centroids.size(); + int num_dim = data.n_rows(); + int num_data = data.n_cols(); + Vector num_points; + + g_sigma.Init(num_clusters); + num_points.Init(num_clusters); + num_points.SetZero(); + + for (int i=0; i < num_clusters; i++) { + g_sigma[i].Init(num_dim, num_dim); + g_sigma[i].SetZero(); + } + + for (int j=0; j < num_data; j++) { + + int i= data_labels[j]; + num_points[i]++; + + Matrix temp_cov; + Vector data_j_Vec, sub_Vec; + data.MakeColumnVector(j, &data_j_Vec); + + la::SubInit(centroids[i], data_j_Vec, &sub_Vec); + + // Now create a diagonal covariance matrix + temp_cov.Init(sub_Vec.length(), sub_Vec.length()); + temp_cov.SetZero(); + for (int v=0; v 0) + la::Scale(1.0/(double)num_points[i], &(g_sigma[i])); + + // Now add a small "regularisation" value to the diagonal elements + for (int d=0; d < num_dim; d++) + if (g_sigma[i].get(d, d) < COV_MAT_MIN_DIAG) + g_sigma[i].set(d, d, COV_MAT_MIN_DIAG); + } +} + +double compute_log_prob(Vector const &data_k_Vec, + ArrayList const ¢roids , + ArrayList const &log_cov_dets, + ArrayList const &inv_cov_mats, + Vector const &log_cltr_wt) +{ + double log_gauss_const = (data_k_Vec.length()) * log(2 * math::PI); + Vector log_probs; + double prob; + int num_clusters = centroids.size(); + double max_val=-DBL_MAX; + + log_probs.Init(num_clusters); + + for (int p=0; p < num_clusters; p++) { + // Subtract the mean vector from the current data vector + Vector diffVector; + la::SubInit(centroids[p], data_k_Vec, &diffVector); + // Multiply the adjusted vector with the inverse of covariance matrix + Vector resultVec; + la::MulInit(diffVector, inv_cov_mats[p], &resultVec); + // Now compute the probability from multivariate Gaussian + log_probs[p] = log_cltr_wt[p] + + (-0.5 * ((log_gauss_const + log_cov_dets[p]) + + la::Dot(resultVec, diffVector))); + + if (max_val < log_probs[p]) + max_val = log_probs[p]; + } + + prob = 0; + for (int p=0; p < num_clusters; p++) + prob += exp(log_probs[p] - max_val); + + return log(prob) + max_val; + +} + +int kmeans_CV(Dataset const &data, int folds, int min_k, int max_k) +{ + int best_k = min_k; + double best_llh = -DBL_MAX; + // double new_llh = 0; + double num_test_points; + Matrix all_llh; + + //Seed the random number generator + timeval t1; + gettimeofday(&t1,NULL); + srand(t1.tv_usec); + + all_llh.Init(max_k-min_k+1, NUM_KMEANS_REPEATS); + all_llh.SetZero(); + + for (int r=0; r < NUM_KMEANS_REPEATS; r++) { + + fprintf(stderr, "REPEAT %d:\n",r); + + //Make a new permutation for each repeat + ArrayList permutation; + math::MakeRandomPermutation(data.n_points(), &permutation); + + for (int i=min_k; i<=max_k; i++) { // For each no. of clusters + for (int j=0; j < folds; j++) { // k-fold + + Dataset train, test; + ArrayList labels; + ArrayList centroids; + + // Split the dataset and run kmeans on the training subset + data.SplitTrainTest(folds, j, permutation, &train, &test); + num_test_points = test.n_points(); + + if (r < NUM_KMEANS_REPEATS/2) + kmeans(train.matrix(), i, &labels, ¢roids); + else + kmeans(train.matrix(), i, &labels, ¢roids, false); + + // We will use "pseudo log-likelihood" to do cross-validation + // Compute Cluster Weights + Vector log_cltr_wt; + log_cltr_wt.Init(i); + log_cltr_wt.SetZero(); + + for (int w=0; w < labels.size(); w++) + log_cltr_wt[labels[w]]++; + + for (int w=0; w < i; w++) + log_cltr_wt[w] = log(log_cltr_wt[w]) - log(labels.size()); + + // Compute the covariance matrix + ArrayList cov_mats, inv_cov_mats; + ArrayList log_cov_dets; + inv_cov_mats.Init(i); + log_cov_dets.Init(i); + + compute_kmeans_cov_mat(train.matrix(), centroids,labels, &cov_mats); + + for (int a=0; a + *centroids_); + +double kmeans(Matrix const &data, int num_clusters, + ArrayList* labels, ArrayList* centroids, + int max_iter=500, double error_thresh=1e-04, bool seed_gonzalez=true); + +int kmeans_classify(Vector const &data_t, ArrayList + const ¢roids, double* error); + +int kmeans_CV(Dataset const &data, int folds, int min_k, int max_k); + +void compute_kmeans_cov_mat(Matrix const &data, + ArrayList const ¢roids, + ArrayList const &data_labels, + ArrayList *cov_mats); +#endif diff --git a/fastlib/u/nadeem/parallel-em/fl_par_em.cc b/fastlib/u/nadeem/parallel-em/fl_par_em.cc new file mode 100644 index 0000000000..e9eb320d94 --- /dev/null +++ b/fastlib/u/nadeem/parallel-em/fl_par_em.cc @@ -0,0 +1,175 @@ +//#include "fl_par_em.h" +#include +#include +#include "mpi.h" +//#include +#include "fl_data_io.h" +#include "fl_kmeans.h" + +Dataset alldata; + +int +main(int argc, char* argv[]) +{ + int my_rank, com_size, source, dest; + int silen = 128; + char hname[128]; + MPI_Status status; + int tag = 50; + int gherr; + const char *datafile; + FILE *fp; + int total_rows, cols, my_startrow, my_numrows; + Matrix data; + + char message[800]; + + fx_init(argc, argv); + MPI_Init(&argc, &argv); + + MPI_Comm_rank(MPI_COMM_WORLD, &my_rank); + MPI_Comm_size(MPI_COMM_WORLD, &com_size); + + gherr = gethostname( hname, silen); + + // Get the config file name + if (!(datafile = fx_param_str_req(NULL, "data"))) { + fprintf(stderr, "Error in reading Data File\n"); + exit(1); + } + + if (fp= fopen(datafile, "r")) { + fread(&total_rows, sizeof(int), 1, fp); + fread(&cols, sizeof(int), 1, fp); + } + + par_split_data(&my_startrow, &my_numrows, total_rows, my_rank, com_size); + data.Init(cols, my_numrows); // Loading column major data + + if (fp) + read_subset_bin2matrix(fp, data, my_startrow, my_numrows, cols); + + MPI_Barrier(MPI_COMM_WORLD); + + fprintf(stderr, "\nProcessor %d\n", my_rank); + data.PrintDebug("Data Subset"); + + if (!PASSED(alldata.InitFromFile(datafile))) { + fprintf(stderr, "Couldn't open file '%s'.\n", datafile); + exit(1); + } + + MPI_Finalize(); +} + + +double +parallel_em(Matrix const &data, int num_clusters, + ArrayList *centroids_, + ArrayList *cov_mats_, + Vector *log_cltr_wts_, + int my_rank, int com_size, int tag, + int max_iter, double error_thresh) +{ + + ArrayList ¢roids = *centroids_; + + // Seed the model + + if (my_rank == 0) { + // FOR NOW: Let the process 0 load all data, run k-means ONCE, and + // distribute means, weights and cov_mats to all other processes as seeds + + ArrayList labels; + //kmeans_CV(alldata, 1, 3, 3); + kmeans(alldata.matrix(), num_clusters, &labels, ¢roids); + } + else { + // The other processes block on receiving the seed from process 0 + //Once the seed is received, compute the gaussian densities and + // posterior probabilities and use it to compute the log likelihood + + } + + // Compute parallel log-likelihood + + { + // Re-estimate distributed params + + // Recompute the new log-likelihood and compare + } + + return 0; +} + + + + + /* + if (my_rank != 0) { + sprintf(message, "Greetings from process %d on %s!", my_rank, hname); + dest = 0; + MPI_Send(message, strlen (message)+1, MPI_CHAR, dest, + tag, MPI_COMM_WORLD); + } + else{ + printf ("Messages received by process %d on %s.\n\n", my_rank, hname); + for (source = 1; source < com_size; source++) { + MPI_Recv(message, 800, MPI_CHAR, source, tag, + MPI_COMM_WORLD, &status); + printf("%s\n", message); + } + } + */ + + + + + + + + + + + + + + + + + + + + + + + + + + + + /* + Dataset data; + + + if (!PASSED(data.InitFromFile(srcname))) { + fprintf(stderr, "Couldn't open file '%s'.\n", srcname); + exit(1); + } + + write_matrix2bin(dstname, data.matrix()); + + mat.Init(data.n_features(), data.n_points()); + + int start_row, num_rows; + + + FILE *fp; + if (fp= fopen(dstname, "r")) + read_subset_bin2matrix(fp, mat, 50, 101, data.n_features()); + + Matrix m; + la::TransposeInit(mat, &m); + + m.PrintDebug(""); + */ diff --git a/fastlib/u/nadeem/parallel-em/fl_par_em.h b/fastlib/u/nadeem/parallel-em/fl_par_em.h new file mode 100644 index 0000000000..e69de29bb2 diff --git a/fastlib/u/nadeem/parallel-em/hello.c b/fastlib/u/nadeem/parallel-em/hello.c new file mode 100644 index 0000000000..6d911a37f4 --- /dev/null +++ b/fastlib/u/nadeem/parallel-em/hello.c @@ -0,0 +1,42 @@ +#include +#include +#include "mpi.h" + +main(argc, argv) +int argc; +char** argv; + +{ + int my_rank; + int p; + int source; + int dest; + int silen = 128; + int gherr; + char hname[128]; + char message[800]; + MPI_Status status; + int tag = 50; + + MPI_Init(&argc, &argv); + MPI_Comm_rank(MPI_COMM_WORLD, &my_rank); + MPI_Comm_size(MPI_COMM_WORLD, &p); + + gherr = gethostname( hname, silen); + + if (my_rank != 0) { + sprintf(message, "Greetings from process %d on %s!", my_rank, hname); + dest = 0; + MPI_Send(message, strlen (message)+1, MPI_CHAR, dest, + tag, MPI_COMM_WORLD); + } else { + + printf ("Messages received by process %d on %s.\n\n", my_rank, hname); + for (source = 1; source < p; source++) { + MPI_Recv(message, 800, MPI_CHAR, source, tag, + MPI_COMM_WORLD, &status); + printf("%s\n", message); + } + } + MPI_Finalize(); +} diff --git a/fastlib/u/nadeem/parallel-em/machinefile b/fastlib/u/nadeem/parallel-em/machinefile new file mode 100644 index 0000000000..6407d75419 --- /dev/null +++ b/fastlib/u/nadeem/parallel-em/machinefile @@ -0,0 +1,4 @@ +hilbert +kolmogorov +vonneumann +tukey