10f7fd0f8Sjeremylt /// @file 20f7fd0f8Sjeremylt /// Test summing of a pair of vectors 30f7fd0f8Sjeremylt /// \test Test summing of a pair of vectors 40f7fd0f8Sjeremylt #include <ceed.h> 50f7fd0f8Sjeremylt #include <math.h> 6*49aac155SJeremy L Thompson #include <stdio.h> 70f7fd0f8Sjeremylt 80f7fd0f8Sjeremylt int main(int argc, char **argv) { 90f7fd0f8Sjeremylt Ceed ceed; 100f7fd0f8Sjeremylt CeedVector x, y; 114fee36f0SJeremy L Thompson CeedInt len = 10; 120f7fd0f8Sjeremylt 130f7fd0f8Sjeremylt CeedInit(argv[1], &ceed); 140f7fd0f8Sjeremylt 154fee36f0SJeremy L Thompson CeedVectorCreate(ceed, len, &x); 164fee36f0SJeremy L Thompson CeedVectorCreate(ceed, len, &y); 174fee36f0SJeremy L Thompson { 184fee36f0SJeremy L Thompson CeedScalar array[len]; 190f7fd0f8Sjeremylt 204fee36f0SJeremy L Thompson for (CeedInt i = 0; i < len; i++) array[i] = 10 + i; 214fee36f0SJeremy L Thompson CeedVectorSetArray(x, CEED_MEM_HOST, CEED_COPY_VALUES, array); 224fee36f0SJeremy L Thompson CeedVectorSetArray(y, CEED_MEM_HOST, CEED_COPY_VALUES, array); 234fee36f0SJeremy L Thompson } 2416e0f512Sjeremylt { 2516e0f512Sjeremylt // Sync memtype to device for GPU backends 2616e0f512Sjeremylt CeedMemType type = CEED_MEM_HOST; 2716e0f512Sjeremylt CeedGetPreferredMemType(ceed, &type); 2816e0f512Sjeremylt CeedVectorSyncArray(y, type); 2916e0f512Sjeremylt } 300f7fd0f8Sjeremylt CeedVectorAXPY(y, -0.5, x); 310f7fd0f8Sjeremylt 324fee36f0SJeremy L Thompson { 334fee36f0SJeremy L Thompson const CeedScalar *read_array; 344fee36f0SJeremy L Thompson 354fee36f0SJeremy L Thompson CeedVectorGetArrayRead(y, CEED_MEM_HOST, &read_array); 364fee36f0SJeremy L Thompson for (CeedInt i = 0; i < len; i++) { 374fee36f0SJeremy L Thompson if (fabs(read_array[i] - (10.0 + i) / 2) > 1e-14) { 380f7fd0f8Sjeremylt // LCOV_EXCL_START 394fee36f0SJeremy L Thompson printf("Error in alpha x + y at index %" CeedInt_FMT ", computed: %f actual: %f\n", i, read_array[i], (10.0 + i) / 2); 400f7fd0f8Sjeremylt // LCOV_EXCL_STOP 412b730f8bSJeremy L Thompson } 422b730f8bSJeremy L Thompson } 434fee36f0SJeremy L Thompson CeedVectorRestoreArrayRead(y, &read_array); 444fee36f0SJeremy L Thompson } 450f7fd0f8Sjeremylt 460f7fd0f8Sjeremylt CeedVectorDestroy(&x); 470f7fd0f8Sjeremylt CeedVectorDestroy(&y); 480f7fd0f8Sjeremylt CeedDestroy(&ceed); 490f7fd0f8Sjeremylt return 0; 500f7fd0f8Sjeremylt } 51