First you should check your GPS settings. Is it on 'true north' or 'magnetic north'? It should be on magnetic north to be the same reading then your compass.There can be a big difference between the two. On some places in the world up to 90°! The true north pole is on a differen location than the magnetic north pole.
See here:
http://yakass.net/articles/90-safety/161-north-magnetic-true-a-gridAnother thing to consider is the angel you are sailing with, what I mean is how much your boat leans to the side (ama). Most compases only work well to a number of degrees tilt, then the reading is incorrect, and finally the 'spinning compass rose or needle' touch the bottom and stop the compass spinning.
Hope that helps