C code:
long ki,k,e,d=1024;
int dig,tD=0,c,Co=0,j,js[4] ={1,4,5,6};
double res=0.0,tres=0.0,gT,ans[4] ={0.0};
char Hd[16] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
while(tD < 1024)
{while(Co<4){ j= js[Co],gT=0.0,ki= 0;
for(; ki < d+1;ki++){ k = 8*ki+j,e= d-ki,c=1; while(e--) c = 16*c % k; gT+=((double)(c)/(double)k);}
ans[Co] = (gT - (int)gT),++Co;}
double gA = 4*ans[0]-2*ans[1]-ans[2]-ans[3];
gA = (gA<0) ? gA + -1*(int)gA +1 : gA -(int)gA;
dig=0;while(dig++ < 6 && tD++ < 1024) gA *=16, printf("%c""%X",Hd[(int)gA]gA),gA -= (int)gA;
d+=6,Co = 0;}
runtime = 8.06 seconds on a intel Quad core