/[escript]/trunk/escriptcore/src/DataVectorOps.cpp
ViewVC logotype

Diff of /trunk/escriptcore/src/DataVectorOps.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 6167 by caltinay, Wed Apr 6 05:25:13 2016 UTC revision 6168 by jfenwick, Wed Apr 13 03:08:12 2016 UTC
# Line 347  binaryOpVectorTagged(DataTypes::RealVect Line 347  binaryOpVectorTagged(DataTypes::RealVect
347        const bool rightscalar,              const bool rightscalar,      
348        const bool lefttagged,            // true if left object is the tagged one        const bool lefttagged,            // true if left object is the tagged one
349        const DataTagged& tagsource,          // where to get tag offsets from        const DataTagged& tagsource,          // where to get tag offsets from
350        escript::ESFunction operation)        // operation to perform          escript::ES_optype operation)     // operation to perform  
351  {  {
352    typename DataTypes::RealVectorType::size_type lstep=leftscalar?1:DPSize;    typename DataTypes::RealVectorType::size_type lstep=leftscalar?1:DPSize;
353    typename DataTypes::RealVectorType::size_type rstep=rightscalar?1:DPSize;    typename DataTypes::RealVectorType::size_type rstep=rightscalar?1:DPSize;
354    typename DataTypes::RealVectorType::size_type limit=samplesToProcess*DPPSample;    typename DataTypes::RealVectorType::size_type limit=samplesToProcess*DPPSample;
355    switch (operation)    switch (operation)
356    {    {
357      case PLUSF:      case ADD:
358        #pragma omp parallel for        #pragma omp parallel for
359        for (typename DataTypes::RealVectorType::size_type i=0;i<limit;++i)        for (typename DataTypes::RealVectorType::size_type i=0;i<limit;++i)
360        {        {
# Line 369  binaryOpVectorTagged(DataTypes::RealVect Line 369  binaryOpVectorTagged(DataTypes::RealVect
369            
370        }        }
371        break;        break;
372      case POWF:      case POW:
373        #pragma omp parallel for        #pragma omp parallel for
374        for (typename DataTypes::RealVectorType::size_type i=0;i<limit;++i)        for (typename DataTypes::RealVectorType::size_type i=0;i<limit;++i)
375        {        {
# Line 384  binaryOpVectorTagged(DataTypes::RealVect Line 384  binaryOpVectorTagged(DataTypes::RealVect
384            
385        }        }
386        break;              break;      
387      case MINUSF:      case SUB:
388        #pragma omp parallel for        #pragma omp parallel for
389        for (typename DataTypes::RealVectorType::size_type i=0;i<limit;++i)        for (typename DataTypes::RealVectorType::size_type i=0;i<limit;++i)
390        {        {
# Line 399  binaryOpVectorTagged(DataTypes::RealVect Line 399  binaryOpVectorTagged(DataTypes::RealVect
399            
400        }        }
401        break;              break;      
402      case MULTIPLIESF:      case MUL:
403        #pragma omp parallel for        #pragma omp parallel for
404        for (typename DataTypes::RealVectorType::size_type i=0;i<limit;++i)        for (typename DataTypes::RealVectorType::size_type i=0;i<limit;++i)
405        {        {
# Line 414  binaryOpVectorTagged(DataTypes::RealVect Line 414  binaryOpVectorTagged(DataTypes::RealVect
414            
415        }        }
416        break;              break;      
417      case DIVIDESF:      case DIV:
418        #pragma omp parallel for        #pragma omp parallel for
419        for (typename DataTypes::RealVectorType::size_type i=0;i<limit;++i)        for (typename DataTypes::RealVectorType::size_type i=0;i<limit;++i)
420        {        {
# Line 429  binaryOpVectorTagged(DataTypes::RealVect Line 429  binaryOpVectorTagged(DataTypes::RealVect
429            
430        }        }
431        break;              break;      
432      case LESSF:      case LESS:
433        #pragma omp parallel for        #pragma omp parallel for
434        for (typename DataTypes::RealVectorType::size_type i=0;i<limit;++i)        for (typename DataTypes::RealVectorType::size_type i=0;i<limit;++i)
435        {        {
# Line 444  binaryOpVectorTagged(DataTypes::RealVect Line 444  binaryOpVectorTagged(DataTypes::RealVect
444            
445        }        }
446        break;              break;      
447      case GREATERF:      case GREATER:
448        #pragma omp parallel for        #pragma omp parallel for
449        for (typename DataTypes::RealVectorType::size_type i=0;i<limit;++i)        for (typename DataTypes::RealVectorType::size_type i=0;i<limit;++i)
450        {        {
# Line 459  binaryOpVectorTagged(DataTypes::RealVect Line 459  binaryOpVectorTagged(DataTypes::RealVect
459            
460        }        }
461        break;              break;      
462      case GREATER_EQUALF:      case GREATER_EQUAL:
463        #pragma omp parallel for        #pragma omp parallel for
464        for (typename DataTypes::RealVectorType::size_type i=0;i<limit;++i)        for (typename DataTypes::RealVectorType::size_type i=0;i<limit;++i)
465        {        {
# Line 474  binaryOpVectorTagged(DataTypes::RealVect Line 474  binaryOpVectorTagged(DataTypes::RealVect
474            
475        }        }
476        break;              break;      
477      case LESS_EQUALF:      case LESS_EQUAL:
478        #pragma omp parallel for        #pragma omp parallel for
479        for (typename DataTypes::RealVectorType::size_type i=0;i<limit;++i)        for (typename DataTypes::RealVectorType::size_type i=0;i<limit;++i)
480        {        {
# Line 504  binaryOpVectorRightScalar(DataTypes::Rea Line 504  binaryOpVectorRightScalar(DataTypes::Rea
504        typename DataTypes::RealVectorType::size_type leftOffset,     // where to start reading LHS values        typename DataTypes::RealVectorType::size_type leftOffset,     // where to start reading LHS values
505        const DataTypes::real_t* right,           // RHS of the calculation        const DataTypes::real_t* right,           // RHS of the calculation
506        const bool rightreset,            // true if RHS is providing a single sample of 1 value only        const bool rightreset,            // true if RHS is providing a single sample of 1 value only
507        escript::ESFunction operation,        // operation to perform        escript::ES_optype operation,     // operation to perform
508        bool singleleftsample)            // set to false for normal operation        bool singleleftsample)            // set to false for normal operation
509  {  {
510    size_t substep=(rightreset?0:1);      size_t substep=(rightreset?0:1);  
511    switch (operation)    switch (operation)
512    {    {
513      case PLUSF:      case ADD:
514        #pragma omp parallel for        #pragma omp parallel for
515        for (typename DataTypes::RealVectorType::size_type i=0;i<samplesToProcess;++i)        for (typename DataTypes::RealVectorType::size_type i=0;i<samplesToProcess;++i)
516        {        {
# Line 523  binaryOpVectorRightScalar(DataTypes::Rea Line 523  binaryOpVectorRightScalar(DataTypes::Rea
523        }        }
524        }        }
525        break;        break;
526      case POWF:      case POW:
527        #pragma omp parallel for        #pragma omp parallel for
528        for (typename DataTypes::RealVectorType::size_type i=0;i<samplesToProcess;++i)        for (typename DataTypes::RealVectorType::size_type i=0;i<samplesToProcess;++i)
529        {        {
# Line 536  binaryOpVectorRightScalar(DataTypes::Rea Line 536  binaryOpVectorRightScalar(DataTypes::Rea
536        }        }
537        }        }
538        break;              break;      
539      case MINUSF:      case SUB:
540        #pragma omp parallel for        #pragma omp parallel for
541        for (typename DataTypes::RealVectorType::size_type i=0;i<samplesToProcess;++i)        for (typename DataTypes::RealVectorType::size_type i=0;i<samplesToProcess;++i)
542        {        {
# Line 549  binaryOpVectorRightScalar(DataTypes::Rea Line 549  binaryOpVectorRightScalar(DataTypes::Rea
549        }        }
550        }        }
551        break;              break;      
552      case MULTIPLIESF:      case MUL:
553        #pragma omp parallel for        #pragma omp parallel for
554        for (typename DataTypes::RealVectorType::size_type i=0;i<samplesToProcess;++i)        for (typename DataTypes::RealVectorType::size_type i=0;i<samplesToProcess;++i)
555        {        {
# Line 562  binaryOpVectorRightScalar(DataTypes::Rea Line 562  binaryOpVectorRightScalar(DataTypes::Rea
562        }        }
563        }        }
564        break;              break;      
565      case DIVIDESF:      case DIV:
566        #pragma omp parallel for        #pragma omp parallel for
567        for (typename DataTypes::RealVectorType::size_type i=0;i<samplesToProcess;++i)        for (typename DataTypes::RealVectorType::size_type i=0;i<samplesToProcess;++i)
568        {        {
# Line 575  binaryOpVectorRightScalar(DataTypes::Rea Line 575  binaryOpVectorRightScalar(DataTypes::Rea
575        }        }
576        }        }
577        break;              break;      
578      case LESSF:      case LESS:
579        #pragma omp parallel for        #pragma omp parallel for
580        for (typename DataTypes::RealVectorType::size_type i=0;i<samplesToProcess;++i)        for (typename DataTypes::RealVectorType::size_type i=0;i<samplesToProcess;++i)
581        {        {
# Line 588  binaryOpVectorRightScalar(DataTypes::Rea Line 588  binaryOpVectorRightScalar(DataTypes::Rea
588        }        }
589        }        }
590        break;              break;      
591      case GREATERF:      case GREATER:
592        #pragma omp parallel for        #pragma omp parallel for
593        for (typename DataTypes::RealVectorType::size_type i=0;i<samplesToProcess;++i)        for (typename DataTypes::RealVectorType::size_type i=0;i<samplesToProcess;++i)
594        {        {
# Line 601  binaryOpVectorRightScalar(DataTypes::Rea Line 601  binaryOpVectorRightScalar(DataTypes::Rea
601        }        }
602        }        }
603        break;              break;      
604      case GREATER_EQUALF:      case GREATER_EQUAL:
605        #pragma omp parallel for        #pragma omp parallel for
606        for (typename DataTypes::RealVectorType::size_type i=0;i<samplesToProcess;++i)        for (typename DataTypes::RealVectorType::size_type i=0;i<samplesToProcess;++i)
607        {        {
# Line 614  binaryOpVectorRightScalar(DataTypes::Rea Line 614  binaryOpVectorRightScalar(DataTypes::Rea
614        }        }
615        }        }
616        break;              break;      
617      case LESS_EQUALF:      case LESS_EQUAL:
618        #pragma omp parallel for        #pragma omp parallel for
619        for (typename DataTypes::RealVectorType::size_type i=0;i<samplesToProcess;++i)        for (typename DataTypes::RealVectorType::size_type i=0;i<samplesToProcess;++i)
620        {        {
# Line 643  binaryOpVectorLeftScalar(DataTypes::Real Line 643  binaryOpVectorLeftScalar(DataTypes::Real
643            const bool leftreset,             // true if LHS is providing a single sample of 1 value only            const bool leftreset,             // true if LHS is providing a single sample of 1 value only
644        const DataTypes::RealVectorType& right,               // RHS of the calculation        const DataTypes::RealVectorType& right,               // RHS of the calculation
645        typename DataTypes::RealVectorType::size_type rightOffset,        // where to start reading RHS values        typename DataTypes::RealVectorType::size_type rightOffset,        // where to start reading RHS values
646        escript::ESFunction operation,        // operation to perform        escript::ES_optype operation,     // operation to perform
647        bool singlerightsample)           // right consists of a single sample        bool singlerightsample)           // right consists of a single sample
648  {  {
649    size_t substep=(leftreset?0:1);    size_t substep=(leftreset?0:1);
650    switch (operation)    switch (operation)
651    {    {
652      case PLUSF:      case ADD:
653        #pragma omp parallel for        #pragma omp parallel for
654        for (typename DataTypes::RealVectorType::size_type i=0;i<samplesToProcess;++i)        for (typename DataTypes::RealVectorType::size_type i=0;i<samplesToProcess;++i)
655        {        {
# Line 661  binaryOpVectorLeftScalar(DataTypes::Real Line 661  binaryOpVectorLeftScalar(DataTypes::Real
661        }        }
662        }        }
663        break;        break;
664      case POWF:      case POW:
665        #pragma omp parallel for        #pragma omp parallel for
666        for (typename DataTypes::RealVectorType::size_type i=0;i<samplesToProcess;++i)        for (typename DataTypes::RealVectorType::size_type i=0;i<samplesToProcess;++i)
667        {        {
# Line 673  binaryOpVectorLeftScalar(DataTypes::Real Line 673  binaryOpVectorLeftScalar(DataTypes::Real
673        }        }
674        }        }
675        break;              break;      
676      case MINUSF:      case SUB:
677        #pragma omp parallel for        #pragma omp parallel for
678        for (typename DataTypes::RealVectorType::size_type i=0;i<samplesToProcess;++i)        for (typename DataTypes::RealVectorType::size_type i=0;i<samplesToProcess;++i)
679        {        {
# Line 685  binaryOpVectorLeftScalar(DataTypes::Real Line 685  binaryOpVectorLeftScalar(DataTypes::Real
685        }        }
686        }        }
687        break;              break;      
688      case MULTIPLIESF:      case MUL:
689        #pragma omp parallel for        #pragma omp parallel for
690        for (typename DataTypes::RealVectorType::size_type i=0;i<samplesToProcess;++i)        for (typename DataTypes::RealVectorType::size_type i=0;i<samplesToProcess;++i)
691        {        {
# Line 697  binaryOpVectorLeftScalar(DataTypes::Real Line 697  binaryOpVectorLeftScalar(DataTypes::Real
697        }        }
698        }        }
699        break;              break;      
700      case DIVIDESF:      case DIV:
701        #pragma omp parallel for        #pragma omp parallel for
702        for (typename DataTypes::RealVectorType::size_type i=0;i<samplesToProcess;++i)        for (typename DataTypes::RealVectorType::size_type i=0;i<samplesToProcess;++i)
703        {        {
# Line 709  binaryOpVectorLeftScalar(DataTypes::Real Line 709  binaryOpVectorLeftScalar(DataTypes::Real
709        }        }
710        }        }
711        break;              break;      
712      case LESSF:      case LESS:
713        #pragma omp parallel for        #pragma omp parallel for
714        for (typename DataTypes::RealVectorType::size_type i=0;i<samplesToProcess;++i)        for (typename DataTypes::RealVectorType::size_type i=0;i<samplesToProcess;++i)
715        {        {
# Line 721  binaryOpVectorLeftScalar(DataTypes::Real Line 721  binaryOpVectorLeftScalar(DataTypes::Real
721        }        }
722        }        }
723        break;              break;      
724      case GREATERF:      case GREATER:
725        #pragma omp parallel for        #pragma omp parallel for
726        for (typename DataTypes::RealVectorType::size_type i=0;i<samplesToProcess;++i)        for (typename DataTypes::RealVectorType::size_type i=0;i<samplesToProcess;++i)
727        {        {
# Line 733  binaryOpVectorLeftScalar(DataTypes::Real Line 733  binaryOpVectorLeftScalar(DataTypes::Real
733        }        }
734        }        }
735        break;              break;      
736      case GREATER_EQUALF:      case GREATER_EQUAL:
737        #pragma omp parallel for        #pragma omp parallel for
738        for (typename DataTypes::RealVectorType::size_type i=0;i<samplesToProcess;++i)        for (typename DataTypes::RealVectorType::size_type i=0;i<samplesToProcess;++i)
739        {        {
# Line 745  binaryOpVectorLeftScalar(DataTypes::Real Line 745  binaryOpVectorLeftScalar(DataTypes::Real
745        }        }
746        }        }
747        break;              break;      
748      case LESS_EQUALF:      case LESS_EQUAL:
749        #pragma omp parallel for        #pragma omp parallel for
750        for (typename DataTypes::RealVectorType::size_type i=0;i<samplesToProcess;++i)        for (typename DataTypes::RealVectorType::size_type i=0;i<samplesToProcess;++i)
751        {        {
# Line 774  binaryOpVector(DataTypes::RealVectorType Line 774  binaryOpVector(DataTypes::RealVectorType
774        const DataTypes::RealVectorType& right,               // RHS of the calculation        const DataTypes::RealVectorType& right,               // RHS of the calculation
775        typename DataTypes::RealVectorType::size_type rightOffset,        // where to start reading RHS values        typename DataTypes::RealVectorType::size_type rightOffset,        // where to start reading RHS values
776        const bool rightreset,            // Is RHS only supplying a single sample instead of a bunch of them        const bool rightreset,            // Is RHS only supplying a single sample instead of a bunch of them
777        escript::ESFunction operation)        // operation to perform        escript::ES_optype operation)     // operation to perform
778  {  {
779    switch (operation)    switch (operation)
780    {    {
781      case PLUSF:      case ADD:
782        #pragma omp parallel for        #pragma omp parallel for
783        for (typename DataTypes::RealVectorType::size_type i=0;i<samplesToProcess;++i)        for (typename DataTypes::RealVectorType::size_type i=0;i<samplesToProcess;++i)
784        {        {
# Line 791  binaryOpVector(DataTypes::RealVectorType Line 791  binaryOpVector(DataTypes::RealVectorType
791            
792        }        }
793        break;        break;
794      case POWF:      case POW:
795        #pragma omp parallel for        #pragma omp parallel for
796        for (typename DataTypes::RealVectorType::size_type i=0;i<samplesToProcess;++i)        for (typename DataTypes::RealVectorType::size_type i=0;i<samplesToProcess;++i)
797        {        {
# Line 804  binaryOpVector(DataTypes::RealVectorType Line 804  binaryOpVector(DataTypes::RealVectorType
804            
805        }        }
806        break;              break;      
807      case MINUSF:      case SUB:
808        #pragma omp parallel for        #pragma omp parallel for
809        for (typename DataTypes::RealVectorType::size_type i=0;i<samplesToProcess;++i)        for (typename DataTypes::RealVectorType::size_type i=0;i<samplesToProcess;++i)
810        {        {
# Line 817  binaryOpVector(DataTypes::RealVectorType Line 817  binaryOpVector(DataTypes::RealVectorType
817            
818        }        }
819        break;              break;      
820      case MULTIPLIESF:      case MUL:
821        #pragma omp parallel for        #pragma omp parallel for
822        for (typename DataTypes::RealVectorType::size_type i=0;i<samplesToProcess;++i)        for (typename DataTypes::RealVectorType::size_type i=0;i<samplesToProcess;++i)
823        {        {
# Line 830  binaryOpVector(DataTypes::RealVectorType Line 830  binaryOpVector(DataTypes::RealVectorType
830            
831        }        }
832        break;              break;      
833      case DIVIDESF:      case DIV:
834        #pragma omp parallel for        #pragma omp parallel for
835        for (typename DataTypes::RealVectorType::size_type i=0;i<samplesToProcess;++i)        for (typename DataTypes::RealVectorType::size_type i=0;i<samplesToProcess;++i)
836        {        {
# Line 843  binaryOpVector(DataTypes::RealVectorType Line 843  binaryOpVector(DataTypes::RealVectorType
843            
844        }        }
845        break;              break;      
846      case LESSF:      case LESS:
847        #pragma omp parallel for        #pragma omp parallel for
848        for (typename DataTypes::RealVectorType::size_type i=0;i<samplesToProcess;++i)        for (typename DataTypes::RealVectorType::size_type i=0;i<samplesToProcess;++i)
849        {        {
# Line 856  binaryOpVector(DataTypes::RealVectorType Line 856  binaryOpVector(DataTypes::RealVectorType
856            
857        }        }
858        break;              break;      
859      case GREATERF:      case GREATER:
860        #pragma omp parallel for        #pragma omp parallel for
861        for (typename DataTypes::RealVectorType::size_type i=0;i<samplesToProcess;++i)        for (typename DataTypes::RealVectorType::size_type i=0;i<samplesToProcess;++i)
862        {        {
# Line 869  binaryOpVector(DataTypes::RealVectorType Line 869  binaryOpVector(DataTypes::RealVectorType
869            
870        }        }
871        break;              break;      
872      case GREATER_EQUALF:      case GREATER_EQUAL:
873        #pragma omp parallel for        #pragma omp parallel for
874        for (typename DataTypes::RealVectorType::size_type i=0;i<samplesToProcess;++i)        for (typename DataTypes::RealVectorType::size_type i=0;i<samplesToProcess;++i)
875        {        {
# Line 882  binaryOpVector(DataTypes::RealVectorType Line 882  binaryOpVector(DataTypes::RealVectorType
882            
883        }        }
884        break;              break;      
885      case LESS_EQUALF:      case LESS_EQUAL:
886        #pragma omp parallel for        #pragma omp parallel for
887        for (typename DataTypes::RealVectorType::size_type i=0;i<samplesToProcess;++i)        for (typename DataTypes::RealVectorType::size_type i=0;i<samplesToProcess;++i)
888        {        {

Legend:
Removed from v.6167  
changed lines
  Added in v.6168

  ViewVC Help
Powered by ViewVC 1.1.26