#This Makefile is not in final form. #In particular, comment out SGI or Solaris below. # number of slaves; "make NS=4" works # but make sure to touch examples/parfactor.c or examples/smpfel.c first. NS = -1 AOUT = ./a.out #CONVEX: # CC = /usr/convex/bin/cc -cxdb -nv -O # AOUT = mpa -sc Batch -v -DATA -core 0 -parallel -over a.out #SGI: # CFLAGS = -woff 1412 -O #For Solaris threads: # EXAMPLE: cc -D_REENTRANT test.c -lthread (-lthread must be last) # CFLAGS = -D_REENTRANT -O # LIBS = -lposix4 -lthread #MPI: # Change include directory for your site. CC = gcc CFLAGS = -I./mpinu/ -O -g LIBMPI = ./mpinu/libmpi.a # Solaris 2.6 claims -lxnet also needed for gethostbyname() ? LIBSOLARIS = -lsocket -lnsl #Add or subtract ${LIBSOLARIS} based on if this is a Solaris machine LIBS = ${LIBMPI} ${LIBSOLARIS} LIBLOADER = ./loader/libloaderctl.a # CFLAGS = -I/local/mpi-new/mpich/include/ -O -g # LIBS = /local/mpi-new/mpich/lib/IRIX64/ch_p4/libmpi.a # LIBS = /proj/gal2/mpich/lib/sun4/ch_p4/libmpi.a # LIBS = /proj/gal2/mpich-alpha/lib/alpha/ch_p4/libmpi.a # CFLAGS = -I/usr/local/packages/mpich/include -O # LIBS = /usr/local/packages/mpich/lib/rs6000/ch_p4/libmpi.a # This is needed on SGI make. They set SHELL to user default. SHELL = /bin/sh parfactor-mpi: parfactor.o mas-slave.o threads-mpi.o @ if [ -r /usr/lib/libnsl.a -a "${LIBSOLARIS}" = "" ] ; \ then echo ""; echo This has libnsl.a. It could be a Solaris machine.; \ echo If so, search for "Solaris" in Makefile and change LIBMPI; \ echo ""; fi; ${CC} ${CFLAGS} parfactor.o mas-slave.o threads-mpi.o ${LIBS} ${AOUT} 52 parfactor-loader: parfactor-loader.o mas-slave.o threads-mpi-loader.o @ if [ -r /usr/lib/libnsl.a -a "${LIBSOLARIS}" = "" ] ; \ then echo ""; echo This has libnsl.a. It could be a Solaris machine.; \ echo If so, search for "Solaris" in Makefile and change LIBMPI; \ echo ""; fi; ${CC} ${CFLAGS} parfactor-loader.o mas-slave.o \ threads-mpi-loader.o ${LIBS} ${LIBLOADER} ${AOUT} 52 parfactor-threads: parfactor.o mas-slave.o threads.o ${CC} ${CFLAGS} parfactor.o mas-slave.o threads.o ${LIBS} ${AOUT} 52 parfactor-seq: parfactor.o mas-slave-seq.o ${CC} ${CFLAGS} parfactor.o mas-slave-seq.o a.out 52 broadcast: examples/broadcast.c mas-slave.o threads-mpi.o ${CC} -c ${CFLAGS} examples/broadcast.c ${LIBS} ${CC} ${CFLAGS} broadcast.o mas-slave.o threads-mpi.o ${LIBS} ${AOUT} parmatprod: examples/parmatprod.c mas-slave.o threads-mpi.o ${CC} -c ${CFLAGS} examples/parmatprod.c ${LIBS} ${CC} ${CFLAGS} parmatprod.o mas-slave.o threads-mpi.o ${LIBS} ${AOUT} gauss-elim: examples/gauss-elim.c mas-slave.o threads-mpi.o ${CC} -c ${CFLAGS} examples/gauss-elim.c ${LIBS} ${CC} ${CFLAGS} gauss-elim.o mas-slave.o threads-mpi.o ${LIBS} ${AOUT} gauss-elim-seq: examples/gauss-elim.c mas-slave-seq.o ${CC} -c ${CFLAGS} examples/gauss-elim.c ${CC} ${CFLAGS} gauss-elim.o mas-slave-seq.o ${AOUT} parfactor-lam: make CC=hcc LIBS="${LIBS} -lmpi" AOUT="mpirun -v -c 2 a.out --" \ parfactor-mpi broadcast-lam: make CC=hcc LIBS="${LIBS} -lmpi" AOUT="mpirun -v -c 2 a.out" broadcast parmatprod-lam: hcc -c -DDEBUG threads-mpi.c -lmpi hcc examples/parmatprod.c mas-slave.c threads-mpi.o -lmpi mpirun -v -c 2 a.out gauss-elim-lam: make CC=hcc LIBS="${LIBS} -lmpi" AOUT="mpirun -v -c 2 a.out" gauss-elim #=================================================================== #THESE NEXT FEW ARE BINARIES THAT REQUIRE LIBRARIES ${LIBMPI}: mpinu/*.c (cd mpinu; make CC=${CC} libmpi.a) ${LIBLOADER}: loader/*.c (cd loader; make CC=${CC} libloaderctl.a loader) threads-mpi.o: ${LIBMPI} ${CC} -c ${CFLAGS} threads-mpi.c threads-mpi-loader.o: ${LIBMPI} ${LIBLOADER} ${CC} -c -o threads-mpi-loader.o ${CFLAGS} -DLOADER threads-mpi.c #=================================================================== #THESE NEXT FEW TELL HOW TO COMPILE THE EXAMPLE FILES parfactor.o: examples/parfactor.c ${CC} -c ${CFLAGS} -DNS=${NS} examples/parfactor.c parfactor-loader.o: examples/parfactor-loader.c ${CC} -c ${CFLAGS} -DNS=${NS} examples/parfactor-loader.c g8723: a.out ${AOUT} -f -d examples/g8723 "aa,a'b" # gdc: my alias for above test2: a.out ${AOUT} -f -d examples/g8723 "aa,a'b" t9: a.out ${AOUT} -f -d examples/t9 "ab,bc" x4r87: a.out ${AOUT} -f -d -m 10000000 examples/x4r87 "a,c,bb" hn: a.out ${AOUT} -f -d -m 12000000 examples/hn "h,b,c,d,e,f,g" lyons: a.out ${AOUT} -f -d -m 15000000 examples/lyons "a,b,c,d,e" # HP Convex debugging technique lyons-dbx: a.out mv a.out lyons-dbx mpa -m -sc Batch -v -DATA -core 0 -parallel -over lyons-dbx mpa -sc Batch -core 0 cxdb -nw -f lyons.dbx > lyons.out 2>&1 & #lyons.dbx: # debug executable lyons-dbx # run -f -d -m 15000000 examples/lyons "a,b,c,d,e" # backtrace # info locals # s524 avail. s3: a.out ${AOUT} -f -d examples/s3 1 # for testing sequential emulation s3-seq: smpfel.o mas-slave-seq.o ${CC} ${CFLAGS} smpfel.o mas-slave-seq.o a.out -f -d examples/s3 1 mem: a.out ${AOUT} -f -d -m 12000000 examples/s3 1 mas-slave.o: mas-slave.c mas-slave.h smpfel.o: examples/smpfel.c ${CC} -c ${CFLAGS} -DNS=${NS} examples/smpfel.c # SunOS: -lthread must appear last, here, but before libc.a threads.o: threads.c ${CC} -c ${CFLAGS} threads.c ${LIBS} a.out: mas-slave.o threads.o smpfel.o ${CC} ${CFLAGS} mas-slave.o threads.o smpfel.o ${LIBS} dist: (cd ..; tar cvf top-c.tar ./top-c/*.c ./top-c/*.h \ ./top-c/README.top-c ./top-c/MANIFEST ./top-c/INTERNALS \ ./top-c/Makefile ./top-c/procgroup \ ./top-c/mpinu ./top-c/loader ./top-c/examples ) mv ../top-c.tar . gzip top-c.tar clean: rm -f *.o examples/*.o a.out checkpoint core (cd mpinu; make clean) (cd loader; make clean)