Skip to content

Commit 2048685

Browse files
committed
Support additional sync region and worksharing types.
Tests treat non-empty stderr output as error (can be disabled). Merge branch 'feature/syncRegionAndWorksharingTypes' into develop
2 parents 57639ff + 9b88e08 commit 2048685

5 files changed

Lines changed: 50 additions & 15 deletions

File tree

.gitlab-ci.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,4 +50,5 @@ test-output:
5050
- cd tests
5151
- export CXX=g++
5252
- export OUTPUT_INSTRUMENT=yes
53+
- export STDERR_OUTPUT_IS_ERROR=no
5354
- make all

include/opdi/backend/ompt/syncRegionCallbacks.hpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,13 @@ namespace opdi {
6666
logic->onSyncRegion(LogicInterface::SyncRegionKind::Barrier, endpoint);
6767
break;
6868
case ompt_sync_region_barrier_implicit:
69+
#if _OPENMP >= 202011
70+
case ompt_sync_region_barrier_implicit_workshare:
71+
case ompt_sync_region_barrier_implicit_parallel:
72+
#else // fallback for compilers with _OPENMP < 202011 that already support fine-grained sync region types
73+
case 8: // ompt_sync_region_barrier_implicit_workshare
74+
case 9: // ompt_sync_region_barrier_implicit_parallel
75+
#endif
6976
logic->onSyncRegion(LogicInterface::SyncRegionKind::BarrierImplicit, endpoint);
7077
break;
7178
case ompt_sync_region_barrier_explicit:

include/opdi/backend/ompt/workCallbacks.hpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,17 @@ namespace opdi {
6565

6666
switch (wstype) {
6767
case ompt_work_loop:
68+
#if _OPENMP >= 202111
69+
case ompt_work_loop_static:
70+
case ompt_work_loop_dynamic:
71+
case ompt_work_loop_guided:
72+
case ompt_work_loop_other:
73+
#else // fallback for compilers with _OPENMP < 202111 that already support fine-grained worksharing types
74+
case 10: // ompt_work_loop_static
75+
case 11: // ompt_work_loop_dynamic
76+
case 12: // ompt_work_loop_guided
77+
case 13: // ompt_work_loop_other
78+
#endif
6879
logic->onWork(LogicInterface::WorksharingKind::Loop, endpoint);
6980
break;
7081
case ompt_work_sections:

tests/Makefile

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,9 @@ OUTPUT_INSTRUMENT ?= no
4242
# possibly set in the environment, enables build from source after preprocessing
4343
EXPLICIT_PREPROCESSOR ?= no
4444

45+
# possibly set in the environment, toggle whether nonempty output on stderr is treated as an error
46+
STDERR_OUTPUT_IS_ERROR ?= yes
47+
4548
CXX ?= clang++
4649

4750
FLAGS = $(CXXFLAGS) -std=c++11
@@ -151,7 +154,7 @@ $(patsubst %,run%,$(DRIVERS)):
151154
@rm -f testresults; \
152155
for test in ${DRIVER_TESTS}; \
153156
do \
154-
bash run.sh ${DRIVER} $$test $(MODE) $(EXPLICIT_PREPROCESSOR); \
157+
bash run.sh ${DRIVER} $$test $(MODE) $(EXPLICIT_PREPROCESSOR) $(STDERR_OUTPUT_IS_ERROR); \
155158
done; \
156159
if grep -q 1 testresults; then \
157160
exit 1; \

tests/run.sh

Lines changed: 27 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -28,33 +28,46 @@ TEST=$2
2828
GENFILE=$BUILD_DIR"/"$DRIVER$TEST".cpp"
2929
MODE=$3
3030
EXPLICIT_PREPROCESSOR=$4
31+
STDERR_OUTPUT_IS_ERROR=$5
3132

3233
LAUNCH_NAME=$DRIVER$TEST
3334
if [[ "$EXPLICIT_PREPROCESSOR" == "yes" ]];
3435
then
3536
LAUNCH_NAME+="Pre";
36-
fi
37+
fi
38+
39+
if [[ "$STDERR_OUTPUT_IS_ERROR" == "yes" ]];
40+
then
41+
ERROR_FILE=$RESULT_DIR/$DRIVER$TEST.err;
42+
else
43+
ERROR_FILE=/dev/null;
44+
fi
3745

3846
case "$MODE" in
3947
"RUN")
40-
timeout 5m ./$BUILD_DIR/$LAUNCH_NAME 1> $RESULT_DIR/$DRIVER$TEST.out 2> $RESULT_DIR/$DRIVER$TEST.err;
48+
timeout 5m ./$BUILD_DIR/$LAUNCH_NAME 1> $RESULT_DIR/$DRIVER$TEST.out 2> $ERROR_FILE;
4149
ret=$?
4250
if [[ $ret -ne 0 ]];
4351
then
44-
echo -e $DRIVER$TEST "\e[0;31mTIMEOUT or ERROR\e[0m";
45-
cat $RESULT_DIR/$DRIVER$TEST.err;
52+
echo -e $DRIVER$TEST "\e[0;31mTIMEOUT or ERROR\e[0m";
53+
cat $RESULT_DIR/$DRIVER$TEST.err;
4654
echo "1" >> testresults;
4755
else
48-
if cmp -s $RESULT_DIR/$DRIVER$TEST.ref $RESULT_DIR/$DRIVER$TEST.out;
49-
then
50-
echo -e $DRIVER$TEST "\e[0;32mOK\e[0m";
51-
echo "0" >> testresults;
52-
else
53-
echo -e $DRIVER$TEST "\e[0;31mFAILED\e[0m";
54-
diff $RESULT_DIR/$DRIVER$TEST.ref $RESULT_DIR/$DRIVER$TEST.out;
55-
echo "1" >> testresults;
56-
fi;
57-
fi;
56+
if [[ -s $RESULT_DIR/$DRIVER$TEST.err ]]
57+
then
58+
echo -e $DRIVER$TEST "\e[0;31mERROR\e[0m";
59+
cat $RESULT_DIR/$DRIVER$TEST.err;
60+
echo "1" >> testresults;
61+
elif cmp -s $RESULT_DIR/$DRIVER$TEST.ref $RESULT_DIR/$DRIVER$TEST.out;
62+
then
63+
echo -e $DRIVER$TEST "\e[0;32mOK\e[0m";
64+
echo "0" >> testresults;
65+
else
66+
echo -e $DRIVER$TEST "\e[0;31mFAILED\e[0m";
67+
diff $RESULT_DIR/$DRIVER$TEST.ref $RESULT_DIR/$DRIVER$TEST.out;
68+
echo "1" >> testresults;
69+
fi;
70+
fi;
5871
;;
5972
"REF")
6073
./$BUILD_DIR/$LAUNCH_NAME > $RESULT_DIR/$DRIVER$TEST.ref

0 commit comments

Comments
 (0)