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>
main(int argc,char ** argv)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