Actual source code: vecpthreadimpl.h
petsc-3.3-p5 2012-12-01
2: #ifndef __VECPTHREADIMPL
5: #include <petscsys.h>
6: #include <petsc-private/vecimpl.h>
8: /* Common data for all kernels */
9: typedef struct {
10: Vec X;
11: PetscInt thread_id;
12: PetscScalar *x,*y,*w;
13: PetscScalar *y0,*y1,*y2,*y3;
14: PetscScalar result,result0,result1,result2,result3;
15: PetscScalar alpha;
16: PetscScalar beta;
17: NormType typeUse;
18: Vec* yvec;
19: PetscInt nvec;
20: PetscScalar* results;
21: PetscInt localind;
22: PetscReal localmax;
23: PetscReal localmin;
24: PetscRandom rand;
25: const PetscScalar* amult; /* multipliers */
26: } Vec_KernelData;
28: extern Vec_KernelData *vec_kerneldatap;
29: extern Vec_KernelData **vec_pdata;
31: extern PetscErrorCode VecNorm_SeqPThread(Vec,NormType,PetscReal*);
32: extern PetscErrorCode VecDot_SeqPThread(Vec,Vec,PetscScalar*);
33: extern PetscErrorCode VecScale_SeqPThread(Vec,PetscScalar);
34: extern PetscErrorCode VecMDot_SeqPThread(Vec,PetscInt,const Vec[],PetscScalar*);
35: extern PetscErrorCode VecMax_SeqPThread(Vec,PetscInt*,PetscReal*);
36: extern PetscErrorCode VecMin_SeqPThread(Vec,PetscInt*,PetscReal*);
37: extern PetscErrorCode VecPointwiseMult_SeqPThread(Vec,Vec,Vec);
38: extern PetscErrorCode VecPointwiseDivide_SeqPThread(Vec,Vec,Vec);
39: extern PetscErrorCode VecSwap_SeqPThread(Vec,Vec);
40: extern PetscErrorCode VecSetRandom_SeqPThread(Vec,PetscRandom);
41: extern PetscErrorCode VecCopy_SeqPThread(Vec,Vec);
42: extern PetscErrorCode VecAXPY_SeqPThread(Vec,PetscScalar,Vec);
43: extern PetscErrorCode VecAYPX_SeqPThread(Vec,PetscScalar,Vec);
44: extern PetscErrorCode VecWAXPY_SeqPThread(Vec,PetscScalar,Vec,Vec);
45: extern PetscErrorCode VecMAXPY_SeqPThread(Vec,PetscInt,const PetscScalar[],Vec*);
46: extern PetscErrorCode VecSet_SeqPThread(Vec,PetscScalar);
48: EXTERN_C_BEGIN
49: extern PetscErrorCode VecCreate_SeqPThread(Vec);
50: EXTERN_C_END
52: #endif