Adding beginning stub code for parallel EM

This commit is contained in:
nadeem
2007-07-11 19:28:54 +00:00
parent 79e3ea24f9
commit 9e849f0ba6
11 changed files with 946 additions and 0 deletions
+188
View File
@@ -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/*
+14
View File
@@ -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"]
)
+34
View File
@@ -0,0 +1,34 @@
#include <fastlib/fastlib.h>
#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;
}
@@ -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<rows; i++) {
double* data_vec = mat.GetColumnPtr(i);
fwrite(data_vec, sizeof(double), cols, fp);
}
fclose(fp);
return true;
}
/* This function, unlike the write function takes a file pointer and requires
the number of columns to be passed in since it is assumed that the calling
method would have opened this file to read the dimensions of the data any way
This method reads row by row and saves each row into the column of the matrix
passed in. So the Matrix passed in should of size cols x rows, i.e. transpose
*/
bool
read_subset_bin2matrix(FILE* fp, Matrix &data, int start_row, int num_rows,
int num_cols)
{
fseek(fp,
(2*sizeof(int))+((start_row - 1)*num_cols*sizeof(double)),
SEEK_SET);
for (int i=0; i < num_rows; i++) {
double* data_vec = data.GetColumnPtr(i);
fread(data_vec, sizeof(double), num_cols, fp);
}
fclose(fp);
return true;
}
+12
View File
@@ -0,0 +1,12 @@
#ifndef FL_DATA_IO_H
#define FL_DATA_IO_H
#include "fastlib/fastlib.h"
#include <stdio.h>
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
+375
View File
@@ -0,0 +1,375 @@
#include "fl_kmeans.h"
#include <sys/time.h>
bool gonzalez_cluster(Matrix const &data, int num_clusters, ArrayList<Vector>
*centroids_)
{
// fprintf(stderr, "Doing Gonzalez...");
ArrayList<Vector> &centroids = *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<int> *labels_, ArrayList<Vector> *centroids_,
int max_iter, double error_thresh, bool seed_gonzalez)
{
if (data.n_cols() < num_clusters)
return -1;
ArrayList<int> counts; // number of points in each cluster
ArrayList<Vector> 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<int> &labels = *labels_;
ArrayList<Vector> &centroids = *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<Vector> const &centroids,
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<Vector> const &centroids,
ArrayList<int> const &data_labels,
ArrayList<Matrix> *cov_mats)
{
ArrayList<Matrix> &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<sub_Vec.length(); v++)
#if USE_FULL_COV_MAT
for (int w=0; w<sub_Vec.length(); w++)
temp_cov.set(v, w, sub_Vec[v] * sub_Vec[w]);
#else
temp_cov.set(v, v, math::Sqr(sub_Vec[v]));
#endif
la::AddTo(temp_cov, &(g_sigma[i]));
}
for (int i=0; i < num_clusters; i++) {
if (num_points[i] > 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<Vector> const &centroids ,
ArrayList <double> const &log_cov_dets,
ArrayList <Matrix> 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<int> 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<int> labels;
ArrayList<Vector> 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, &centroids);
else
kmeans(train.matrix(), i, &labels, &centroids, 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 <Matrix> cov_mats, inv_cov_mats;
ArrayList <double> 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<i; a++) {
la::InverseInit(cov_mats[a], &(inv_cov_mats[a]));
log_cov_dets[a] = la::DeterminantLog(cov_mats[a],0);
}
// Now compute the log-likelihood
double log_prob;
double curr_fold_llh = 0;
for (int k=0; k < num_test_points; k++) { //over all the test points
Vector data_k_Vec;
test.matrix().MakeColumnVector(k, &data_k_Vec);
log_prob = compute_log_prob(data_k_Vec, centroids, log_cov_dets,
inv_cov_mats, log_cltr_wt);
curr_fold_llh += log_prob;
} // over all the test points
all_llh.set(i-min_k,r, all_llh.get(i-min_k,r)+curr_fold_llh);
}
fprintf(stderr, "%d clusters: log_llh=%f\n",i, all_llh.get(i-min_k,r));
}
}
best_llh = -DBL_MAX;
for (int a=min_k; a <= max_k; a++)
for (int b=0; b < NUM_KMEANS_REPEATS; b++) {
if (best_llh < all_llh.get(a-min_k, b) && all_llh.get(a-min_k, b) < 0 && all_llh.get(a-min_k, b) == all_llh.get(a-min_k, b)) {
best_llh = all_llh.get(a-min_k, b);
best_k = a;
}
}
// Now compute the optimal
fprintf(stderr, "Optimal number of clusters = %d\n", best_k);
return best_k;
}
+26
View File
@@ -0,0 +1,26 @@
#ifndef FL_KMEANS_H
#define FL_KMEANS_H
#include "fastlib/fastlib.h"
#define USE_FULL_COV_MAT 0
#define COV_MAT_MIN_DIAG 0.001
#define NUM_KMEANS_REPEATS 10
bool gonzalez_cluster(Matrix const &data, int num_clusters, ArrayList<Vector>
*centroids_);
double kmeans(Matrix const &data, int num_clusters,
ArrayList<int>* labels, ArrayList<Vector>* centroids,
int max_iter=500, double error_thresh=1e-04, bool seed_gonzalez=true);
int kmeans_classify(Vector const &data_t, ArrayList<Vector>
const &centroids, 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<Vector> const &centroids,
ArrayList<int> const &data_labels,
ArrayList<Matrix> *cov_mats);
#endif
+175
View File
@@ -0,0 +1,175 @@
//#include "fl_par_em.h"
#include <unistd.h>
#include <stdio.h>
#include "mpi.h"
//#include <fastlib/fastlib.h>
#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<Vector> *centroids_,
ArrayList<Matrix> *cov_mats_,
Vector *log_cltr_wts_,
int my_rank, int com_size, int tag,
int max_iter, double error_thresh)
{
ArrayList<Vector> &centroids = *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<int> labels;
//kmeans_CV(alldata, 1, 3, 3);
kmeans(alldata.matrix(), num_clusters, &labels, &centroids);
}
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("");
*/
+42
View File
@@ -0,0 +1,42 @@
#include <unistd.h>
#include <stdio.h>
#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();
}
+4
View File
@@ -0,0 +1,4 @@
hilbert
kolmogorov
vonneumann
tukey