示例#1
0
op_sparsity
op_decl_sparsity ( op_map rowmap, op_map colmap, char const * name )
{
  op_sparsity sparsity = op_decl_sparsity_core ( rowmap, colmap, name );

  op_mvHostToDevice ( (void **)&(sparsity->rowptr),
                      sizeof(int) * (sparsity->nrows + 1) );

  op_mvHostToDevice ( (void **)&(sparsity->colidx),
                      sizeof(int) * (sparsity->total_nz));

  return sparsity;
}
示例#2
0
op_plan *
op_plan_get ( char const * name, op_set set, int part_size,
              int nargs, op_arg * args, int ninds, int *inds )
{
  op_plan *plan = op_plan_core ( name, set, part_size,
                                 nargs, args, ninds, inds );

  if ( plan->count == 1 )
  {
    for ( int m = 0; m < ninds; m++ )
      op_mvHostToDevice ( ( void ** ) &( plan->ind_maps[m] ),
                          sizeof ( int ) * plan->nindirect[m] );

    for ( int m = 0; m < nargs; m++ )
      if ( plan->loc_maps[m] != NULL )
        op_mvHostToDevice ( ( void ** ) &( plan->loc_maps[m] ),
                            sizeof ( short ) * plan->set->size );

    op_mvHostToDevice ( ( void ** ) &( plan->ind_sizes ),
                          sizeof ( int ) * plan->nblocks * plan->ninds );
    op_mvHostToDevice ( ( void ** ) &( plan->ind_offs ),
                          sizeof ( int ) * plan->nblocks * plan->ninds );
    op_mvHostToDevice ( ( void ** ) &( plan->nthrcol ),
                          sizeof ( int ) * plan->nblocks );
    op_mvHostToDevice ( ( void ** ) &( plan->thrcol ),
                          sizeof ( int ) * plan->set->size );
    op_mvHostToDevice ( ( void ** ) &( plan->offset ),
                          sizeof ( int ) * plan->nblocks );
    op_mvHostToDevice ( ( void ** ) &( plan->nelems ),
                          sizeof ( int ) * plan->nblocks );
    op_mvHostToDevice ( ( void ** ) &( plan->blkmap ),
                          sizeof ( int ) * plan->nblocks );
  }

  return plan;
}