81 |
C END_MASTER_SECTION() macros. These are generally implemented by |
C END_MASTER_SECTION() macros. These are generally implemented by |
82 |
C simply choosing a particular thread to be "the master" and have |
C simply choosing a particular thread to be "the master" and have |
83 |
C it alone execute the BEGIN_MASTER..., END_MASTER.. sections. |
C it alone execute the BEGIN_MASTER..., END_MASTER.. sections. |
84 |
#define _BEGIN_MASTER(a) IF ( a .EQ. 1 ) THEN |
|
85 |
#define _END_MASTER(a) ENDIF |
#define _BEGIN_MASTER(a) IF ( a .EQ. 1 ) THEN |
86 |
|
#define _END_MASTER(a) ENDIF |
87 |
|
CcnhDebugStarts |
88 |
|
C Alternate form to the above macros that increments (decrements) a counter each |
89 |
|
C time a MASTER section is entered (exited). This counter can then be checked in barrier |
90 |
|
C to try and detect calls to BARRIER within single threaded sections. |
91 |
|
C Using these macros requires two changes to Makefile - these changes are written |
92 |
|
C below. |
93 |
|
C 1 - add a filter to the CPP command to kill off commented _MASTER lines |
94 |
|
C 2 - add a filter to the CPP output the converts the string N EWLINE to an actual newline. |
95 |
|
C The N EWLINE needs to be changes to have no space when this macro and Makefile changes |
96 |
|
C are used. Its in here with a space to stop it getting parsed by the CPP stage in these |
97 |
|
C comments. |
98 |
|
C #define _BEGIN_MASTER(a) IF ( a .EQ. 1 ) THEN N EWLINE CALL BARRIER_MS(a) |
99 |
|
C #define _END_MASTER(a) CALL BARRIER_MU(a) N EWLINE ENDIF |
100 |
|
C 'CPP = cat $< | $(TOOLSDIR)/set64bitConst.sh | grep -v '^[cC].*_MASTER' | cpp -traditional -P' |
101 |
|
C .F.f: |
102 |
|
C $(CPP) $(DEFINES) $(INCLUDES) | sed 's/N EWLINE/\n/' > $@ |
103 |
|
CcnhDebugEnds |
104 |
|
|
105 |
C-- Control storage of floating point operands |
C-- Control storage of floating point operands |
106 |
C On many systems it improves performance only to use |
C On many systems it improves performance only to use |