Esempio n. 1
0
  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");
    }
  }
Esempio n. 2
0
  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");
    }
  }