CILKPP  = ppcg
LIBARG  = #--tile-size=1
obj = jacobi

jacobi: ${obj}.c
	$(CILKPP) $(LIBARG) $^

cuda: 
	nvcc -O2 -${obj}_host.cu ${obj}_kernel.cu -o ${obj} -DBLOCK_0=128

register:
	nvcc -cubin -Xptxas="-v" ${obj}_host.cu ${obj}_kernel.cu -DBLOCK_0=128

test:
	./${obj}

benchmark:
	nvcc -O2 ${obj}_host.cu ${obj}_kernel.cu -o ${obj} -DBLOCK_0=16
	./${obj} 4 4098 16
	./${obj} 4 8194 16
	./${obj} 4 16386 16
	./${obj} 4 65538 16
	nvcc -O2 ${obj}_host.cu ${obj}_kernel.cu -o ${obj} -DBLOCK_0=32
	./${obj} 4 4098 32
	./${obj} 4 8194 32
	./${obj} 4 16386 32
	./${obj} 4 65538 32
	nvcc -O2 ${obj}_host.cu ${obj}_kernel.cu -o ${obj} -DBLOCK_0=64
	./${obj} 4 4098 64
	./${obj} 4 8194 64
	./${obj} 4 16386 64
	./${obj} 4 65538 64
	nvcc -O2 ${obj}_host.cu ${obj}_kernel.cu -o ${obj} -DBLOCK_0=128
	./${obj} 4 4098 128
	./${obj} 4 8194 128
	./${obj} 4 16386 128
	./${obj} 4 65538 128
	nvcc -O2 ${obj}_host.cu ${obj}_kernel.cu -o ${obj} -DBLOCK_0=256
	./${obj} 4 4098 256
	./${obj} 4 8194 256
	./${obj} 4 16386 256
	./${obj} 4 65538 256
	nvcc -O2 ${obj}_host.cu ${obj}_kernel.cu -o ${obj} -DBLOCK_0=512
	./${obj} 4 4098 512
	./${obj} 4 8194 512
	./${obj} 4 16386 512
	./${obj} 4 65538 512

clean:
	rm -rf *.out* *~ *.log *.o *.dat
	rm -rf *.cu* *.hu
	rm -rf ${obj}
