C $Header: /u/gcmpack/MITgcm/eesupp/inc/MAIN_PDIRECTIVES2.h,v 1.7 2005/11/07 18:16:08 cnh Exp $ C $Name: $ CBOP C !ROUTINE: MAIN_PDIRECTIVES2.h C !INTERFACE: C include "MAIN_PDIRECTIVES2.h" C !DESCRIPTION: C *==========================================================* C | MAIN\_PDIRECTIVES2.h C *==========================================================* C | Parallel directives to generate multithreaded code for C | various different compilers. The master preprocessor C | file CPP\_OPTIONS is used to select which of these C | options is included in the code. C | Note: Only some of the directives require end blocks. C | For directives which do not require end blocks there C | is no entry here. C *==========================================================* CEOP #if defined USE_KAP_THREADING C-- C-- Parallel directives for Kuck and Associates compiler. C-- This is used to generate multi-threaded code on Digital C-- systems. It can also be used under NT. C-- Note: The KAP parallel proceesing tool has several bugs C-- which means that if there are more threads (set via C-- setenv PARALLEL) than iterations in the parallel C-- loop the extra threads start on the section C-- after the loop! C-- To work around this we could place an extra dummy C-- parallel section here. KAP places a barrier at the C-- start of each parallel region which ensures that C-- the extra threads wait (note this wait is in a busy loop). C-- Without this feature the extra thread(s) will run on and may C-- halt the program by calling STOP! Unfortunately that seems C-- to cause a deadlock in a KAP library routine! Instead the C-- current solution is to check for a thread reaching the C-- shutdown part of main.F before other threads have C-- completed computation ( see eedie.F ). C C*KAP* END PARALLEL REGION C C*KAP* PARALLEL REGION C CALL FOOL_THE_COMPILER C C*KAP* END PARALLEL REGION C #endif C #ifdef USE_OMP_THREADING C$OMP END PARALLEL #endif