1a78de62eSJunchao Zhang static char help[] = "Test device/host memory allocation in MatDenseSeqCUDA()\n\n"; 2a78de62eSJunchao Zhang 3a78de62eSJunchao Zhang /* Contributed by: Victor Eijkhout <eijkhout@tacc.utexas.edu> */ 4a78de62eSJunchao Zhang 5a78de62eSJunchao Zhang #include <petscmat.h> 6d71ae5a4SJacob Faibussowitsch int main(int argc, char **argv) 7d71ae5a4SJacob Faibussowitsch { 8a78de62eSJunchao Zhang PetscInt global_size = 100; 9a78de62eSJunchao Zhang Mat cuda_matrix; 10a78de62eSJunchao Zhang Vec input, output; 11a78de62eSJunchao Zhang MPI_Comm comm = PETSC_COMM_SELF; 12a78de62eSJunchao Zhang PetscReal nrm = 1; 13a78de62eSJunchao Zhang 14327415f7SBarry Smith PetscFunctionBeginUser; 159566063dSJacob Faibussowitsch PetscCall(PetscInitialize(&argc, &argv, NULL, help)); 169566063dSJacob Faibussowitsch PetscCall(MatCreateDenseCUDA(comm, global_size, global_size, global_size, global_size, NULL, &cuda_matrix)); 17a78de62eSJunchao Zhang 189566063dSJacob Faibussowitsch PetscCall(VecCreateSeqCUDA(comm, global_size, &input)); 199566063dSJacob Faibussowitsch PetscCall(VecDuplicate(input, &output)); 209566063dSJacob Faibussowitsch PetscCall(VecSet(input, 1.)); 219566063dSJacob Faibussowitsch PetscCall(VecSet(output, 2.)); 229566063dSJacob Faibussowitsch PetscCall(MatMult(cuda_matrix, input, output)); 239566063dSJacob Faibussowitsch PetscCall(VecNorm(output, NORM_2, &nrm)); 2408401ef6SPierre Jolivet PetscCheck(nrm <= PETSC_SMALL, PETSC_COMM_SELF, PETSC_ERR_PLIB, "PETSc generated wrong result. Should be 0, but is %g", (double)nrm); 259566063dSJacob Faibussowitsch PetscCall(VecDestroy(&input)); 269566063dSJacob Faibussowitsch PetscCall(VecDestroy(&output)); 279566063dSJacob Faibussowitsch PetscCall(MatDestroy(&cuda_matrix)); 289566063dSJacob Faibussowitsch PetscCall(PetscFinalize()); 29b122ec5aSJacob Faibussowitsch return 0; 30a78de62eSJunchao Zhang } 31a78de62eSJunchao Zhang 32a78de62eSJunchao Zhang /*TEST 33a78de62eSJunchao Zhang build: 34a78de62eSJunchao Zhang requires: cuda 35a78de62eSJunchao Zhang 36a78de62eSJunchao Zhang test: 37a78de62eSJunchao Zhang nsize: 1 38*3886731fSPierre Jolivet output_file: output/empty.out 39a78de62eSJunchao Zhang 40a78de62eSJunchao Zhang TEST*/ 41