void cudaCloverField::loadCPUField(void *clover, void *norm, const void *h_clover, const QudaPrecision cpu_prec, const CloverFieldOrder cpu_order) { void *h_clover_odd = (char*)h_clover + cpu_prec*real_length/2; if (cpu_order == QUDA_LEX_PACKED_CLOVER_ORDER) { loadFullField(clover, norm, (char*)clover+bytes/2, (char*)norm+norm_bytes/2, h_clover, cpu_prec, cpu_order); } else if (cpu_order == QUDA_PACKED_CLOVER_ORDER || cpu_order == QUDA_BQCD_CLOVER_ORDER) { loadParityField(clover, norm, h_clover, cpu_prec, cpu_order); loadParityField((char*)clover+bytes/2, (char*)norm+norm_bytes/2, h_clover_odd, cpu_prec, cpu_order); } else { errorQuda("Invalid clover_order"); } }
void cudaCloverField::loadCPUField(void *clover, void *norm, const void *h_clover, const QudaPrecision cpu_prec, const CloverFieldOrder cpu_order) { void *h_clover_odd = (char*)h_clover + cpu_prec*real_length/2; if (cpu_order == QUDA_LEX_PACKED_CLOVER_ORDER) { loadFullField(clover, norm, (char*)clover+bytes/2, (char*)norm+norm_bytes/2, h_clover, cpu_prec, cpu_order); } else if (cpu_order == QUDA_PACKED_CLOVER_ORDER || cpu_order == QUDA_BQCD_CLOVER_ORDER) { loadParityField(clover, norm, h_clover, cpu_prec, cpu_order); loadParityField((char*)clover+bytes/2, (char*)norm+norm_bytes/2, h_clover_odd, cpu_prec, cpu_order); } else if(cpu_order == QUDA_INTERNAL_CLOVER_ORDER) { // No reordering necessary, just a plain copy cudaMemcpy(clover, h_clover, total_bytes, cudaMemcpyHostToDevice); }else{ errorQuda("Invalid clover_order"); } }