/usr/lib/petscdir/3.1/include/private/petscaxpy.h is in libpetsc3.1-dev 3.1.dfsg-11ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 | /*
PetscAXPY - X = X + alpha * Y
Input Parameters:
+ X, Y - arrays
. alpha - scalar
- n - length of arrays
Also PetscAXPY2(), PetscAXPY3(), PetscAXPY4()
*/
#ifndef PetscAXPY
#include "../src/vec/vec/impls/seq/ftn-kernels/fmaxpy.h"
#include "petscblaslapack.h"
#if defined(PETSC_USE_FORTRAN_KERNEL_MAXPY)
#define PetscAXPY(U,a1,p1,n) {PetscBLASInt one=1; PetscBLASInt nn = (PetscBLASInt) n; \
BLASaxpy_(&nn,&a1,p1,&one,U,&one);}
#define PetscAXPY2(U,a1,a2,p1,p2,n) { \
fortranmaxpy2_(U,&a1,&a2,p1,p2,&n);}
#define PetscAXPY3(U,a1,a2,a3,p1,p2,p3,n) { \
fortranmaxpy3_(U,&a1,&a2,&a3,p1,p2,p3,&n);}
#define PetscAXPY4(U,a1,a2,a3,a4,p1,p2,p3,p4,n){ \
fortranmaxpy4_(U,&a1,&a2,&a3,&a4,p1,p2,p3,p4,&n);}
#elif defined(PETSC_USE_UNROLL_KERNELS)
#define PetscAXPY(U,Alpha,P,n) {\
switch (n & 0x3) {\
case 3: *U++ += Alpha * *P++;\
case 2: *U++ += Alpha * *P++;\
case 1: *U++ += Alpha * *P++;\
n -= 4;case 0: break;}while (n>0) {U[0] += Alpha * P[0];U[1] += Alpha * P[1];\
U[2] += Alpha * P[2]; U[3] += Alpha * P[3]; \
U += 4; P += 4; n -= 4;}}
#define PetscAXPY2(U,a1,a2,p1,p2,n) {\
switch (n & 0x3) {\
case 3: *U++ += a1 * *p1++ + a2 * *p2++;\
case 2: *U++ += a1 * *p1++ + a2 * *p2++;\
case 1: *U++ += a1 * *p1++ + a2 * *p2++;\
n -= 4;case 0: break;}\
while (n>0) {U[0]+=a1*p1[0]+a2*p2[0];U[1]+=a1*p1[1]+a2*p2[1];\
U[2]+=a1*p1[2]+a2*p2[2];U[3]+=a1*p1[3]+a2*p2[3];U+=4;p1+=4;p2+=4;n -= 4;}}
#define PetscAXPY3(U,a1,a2,a3,p1,p2,p3,n) {\
switch (n & 0x3) {\
case 3: *U++ += a1 * *p1++ + a2 * *p2++ + a3 * *p3++;\
case 2: *U++ += a1 * *p1++ + a2 * *p2++ + a3 * *p3++;\
case 1: *U++ += a1 * *p1++ + a2 * *p2++ + a3 * *p3++;\
n -= 4;case 0:break;}while (n>0) {U[0]+=a1*p1[0]+a2*p2[0]+a3*p3[0];\
U[1]+=a1*p1[1]+a2*p2[1]+a3*p3[1];\
U[2]+=a1*p1[2]+a2*p2[2]+a3*p3[2];\
U[3]+=a1*p1[3]+a2*p2[3]+a3*p3[3];U+=4;p1+=4;p2+=4;p3+=4;n-=4;}}
#define PetscAXPY4(U,a1,a2,a3,a4,p1,p2,p3,p4,n) {\
switch (n & 0x3) {\
case 3: *U++ += a1 * *p1++ + a2 * *p2++ + a3 * *p3++ + a4 * *p4++;\
case 2: *U++ += a1 * *p1++ + a2 * *p2++ + a3 * *p3++ + a4 * *p4++;\
case 1: *U++ += a1 * *p1++ + a2 * *p2++ + a3 * *p3++ + a4 * *p4++;\
n -= 4;case 0:break;}while (n>0) {U[0]+=a1*p1[0]+a2*p2[0]+a3*p3[0]+a4*p4[0];\
U[1]+=a1*p1[1]+a2*p2[1]+a3*p3[1]+a4*p4[1];\
U[2]+=a1*p1[2]+a2*p2[2]+a3*p3[2]+a4*p4[2];\
U[3]+=a1*p1[3]+a2*p2[3]+a3*p3[3]+a4*p4[3];U+=4;p1+=4;p2+=4;p3+=4;p4+=4;n-=4;}}
#elif defined(PETSC_USE_WHILE_KERNELS)
#define PetscAXPY(U,a1,p1,n) {\
while (n--) *U++ += a1 * *p1++;}
#define PetscAXPY2(U,a1,a2,p1,p2,n) {\
while (n--) *U++ += a1 * *p1++ + a2 * *p2++;}
#define PetscAXPY3(U,a1,a2,a3,p1,p2,p3,n) {\
while (n--) *U++ += a1 * *p1++ + a2 * *p2++ + a3 * *p3++;}
#define PetscAXPY4(U,a1,a2,a3,a4,p1,p2,p3,p4,n) {\
while (n--) *U++ += a1 * *p1++ + a2 * *p2++ + a3 * *p3++ + a4 * *p4++;}
#elif defined(PETSC_USE_BLAS_KERNELS)
#define PetscAXPY(U,a1,p1,n) {PetscBLASInt one=1; PetscBLASInt nn = (PetscBLASInt) n;\
BLASaxpy_(&nn,&a1,p1,&one,U,&one);}
#define PetscAXPY2(U,a1,a2,p1,p2,n){PetscAXPY(U,a1,p1,n);\
PetscAXPY(U,a2,p2,n);}
#define PetscAXPY3(U,a1,a2,a3,p1,p2,p3,n){PetscAXPY2(U,a1,a2,p1,p2,n);\
PetscAXPY(U,a3,p3,n);}
#define PetscAXPY4(U,a1,a2,a3,a4,p1,p2,p3,p4,n){PetscAXPY2(U,a1,a2,p1,p2,n);\
PetscAXPY2(U,a3,a4,p3,p4,n);}
#elif defined(PETSC_USE_FOR_KERNELS)
#define PetscAXPY(U,a1,p1,n) {PetscInt __i;PetscScalar __s1,__s2; \
for(__i=0;__i<n-1;__i+=2){__s1=a1*p1[__i];__s2=a1*p1[__i+1];\
__s1+=U[__i];__s2+=U[__i+1];U[__i]=__s1;U[__i+1]=__s2;}\
if (n & 0x1) U[__i] += a1 * p1[__i];}
#define PetscAXPY2(U,a1,a2,p1,p2,n) {PetscInt __i;\
for(__i=0;__i<n;__i++)U[__i] += a1 * p1[__i] + a2 * p2[__i];}
#define PetscAXPY3(U,a1,a2,a3,p1,p2,p3,n){PetscInt __i;\
for(__i=0;__i<n;__i++)U[__i]+=a1*p1[__i]+a2*p2[__i]+a3*p3[__i];}
#define PetscAXPY4(U,a1,a2,a3,a4,p1,p2,p3,p4,n){PetscInt __i;\
for(__i=0;__i<n;__i++)U[__i]+=a1*p1[__i]+a2*p2[__i]+a3*p3[__i]+a4*p4[__i];}
#else
#define PetscAXPY(U,a1,p1,n) {PetscInt __i;PetscScalar _a1=a1;\
for(__i=0;__i<n;__i++)U[__i]+=_a1 * p1[__i];}
#define PetscAXPY2(U,a1,a2,p1,p2,n) {PetscInt __i;\
for(__i=0;__i<n;__i++)U[__i] += a1 * p1[__i] + a2 * p2[__i];}
#define PetscAXPY3(U,a1,a2,a3,p1,p2,p3,n){PetscInt __i;\
for(__i=0;__i<n;__i++)U[__i]+=a1*p1[__i]+a2*p2[__i]+a3*p3[__i];}
#define PetscAXPY4(U,a1,a2,a3,a4,p1,p2,p3,p4,n){PetscInt __i;\
for(__i=0;__i<n;__i++)U[__i]+=a1*p1[__i]+a2*p2[__i]+a3*p3[__i]+a4*p4[__i];}
#endif
#endif
|