#
# Makefile for dump handling
#
# to be placed in pvm3/examples/cg/local.data

help :
	@echo
	@echo "Trace manipulation utilities"
	@echo "    make vectors:	extract vectors"
	@echo "    make clean:		clear up"
	@echo

vectors: vecs_list hosttrace
	@if [ `grep Format: hosttrace | tail -1 | awk '{print $$3}'` = "g" ] ;\
		then make extract_ort ; \
		else make extract_crs ; \
		fi

vecs_list: hosttrace
	@rm -f $@
	@if [ `grep Format: hosttrace | tail -1 | awk '{print $$3}'` = "g" ] ;\
		then grep "i,j: *[0-9][0-9]* *[0-9][0-9]* " hosttrace | awk '{print $$2}' \
			| sort - -u > $@ ; \
		else grep "var: *[0-9][0-9]* " hosttrace | awk '{print $$2}' \
			| sort - -u > $@ ; cp ../input.data/siz.dat . ; \
		fi

hosttrace: dump0000
	@rm -f $@ ; cat dump* > $@

extract_ort : ../util/asmbl_grid
	@echo ">> Extracting orthogonal vectors .. "
	@for file in `cat vecs_list` ; do \
		rm -f nums_list ; \
		grep " $$file" hosttrace \
			| awk '{print $$3}' | sort -u > nums_list; \
		for i in `cat nums_list`; do \
		if [ `grep " $$file *$$i " hosttrace | wc -l` -gt 0 ] ; \
		then echo "-- "$$file$$i ; \
			grep " $$file *$$i " hosttrace | \
			awk '{print $$6,$$7,$$10}' | ../util/asmbl_grid \
			>$$file$$i ; \
		fi ; \
		done ; \
	done

extract_crs : ../util/asmbl_cprs
	@echo ">> Extracting compressed vectors .. "
	@for file in `cat vecs_list` ; do \
		rm -f nums_list ; \
		grep " $$file" hosttrace \
			| awk '{print $$3}' | sort -u > nums_list; \
		for i in `cat nums_list`; do \
		if [ `grep " $$file *$$i " hosttrace | wc -l` -gt 0 ] ; \
		then echo "-- "$$file$$i ; \
			grep " $$file *$$i " hosttrace | \
			awk '{print $$6,$$9}' | ../util/asmbl_cprs \
			>$$file$$i ; \
		fi ; \
		done ; \
	done

../util/asmbl_grid ../util/asmbl_cprs :
	@cd ../util ; make asmbl_grid asmbl_cprs

clean:
	@echo "-- Cleaning trace dumps ... "
	-@rm -f asmbl_grid asmbl_cprs *.o \
		hosttrace *[0-9] vecs_list nums_list *~ log.dat siz.dat \
		*.xg
compact :
	-@rm -f *.o \
		hosttrace *[0-9] vecs_list nums_list *~ log.dat siz.dat
